linux 安装 yum etcd,Linux上安装运行ETCD

安装运行ETCD本来应该是一件挺简单的事情,但是由于我对Linux系统的不熟悉,所以总是遇到各种各样问题,搞了2天(2天啊!!!是有多笨),好歹可以在一台Linux上启动一部etcd,并能在其它主机上访问这个etcd。

以下是我在一台啥都没有的 Linux环境上用业余的手法搭建 etcd 的过程,步骤和方法过两天还需要继续优化并看看能不能像辉哥他们那样搞一个.sh文件来完成这一切。

以下分为三步:

1 配置go语言开发环境

2 安装etcd

3 修改etcd配置

* 1 配置go语言开发环境*

我的安装步骤:

wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz// 这个版本的不需要编译

(不要下载低于1.5的版本,无法编译etcd,也不要下载后面不是纯数字的,例如go1.7rc5.linux-amd64.tar.gz,编译无法通过 )

解压文件

tar -zxvf go1.6.linux-amd64.tar.gz

修改文件来配置环境变量(永久更改)

sudo vi /etc/profile

在profile文件末尾加入以下内容

export GOROOT=/usr/local/go

export GOPATH=/home/kduser/go

export GOBIN=/usr/local/go

export PATH=$PATH:$GOROOT/bin

文件修改过后重启终端(配置信息生效,或者直接在终端通过export先设置临时配置来使用)

移动go包到GOROOT路径下

sudo mv go $GOROOT

② 安装git

安装git便于以后利用 git clone等命令将github上的项目拷下来

使用 sudo yum install git

(原谅我没有su权限)

(参考https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)

PS: 一些编译的问题

a 在./build的时候,我的总是无法build成功,显示找不到各个包。

1a8526ab1fbf77a6b153225cfd2c4696.png

原因是GOPATH里面的文件夹都没有被授权创建文件夹删除文件夹之类的,在go自动编译源码的过程中,它需要创建或者删除文件夹,因为没有权限,所以这些都无法执行成功,显示出来的错误就是找不到这些包。

于是我用了sudo chmod 777 /home/kduser/* (无奈了,不喜欢权限管那么紧的)。

stackoverflow最高票回答有2句万能修改权限(http://stackoverflow.com/questions/3740152/how-to-set-chmod-for-a-folder-and-all-of-its-subfolders-and-files-in-linux-ubunt)

find /opt/lampp/htdocs -type d -exec chmod 755 {} ;

find /opt/lampp/htdocs -type f -exec chmod 644 {} ;

b 另外,如果在编译过程中,遇到显示 build文件里 第13,33,34行错误

65d4106f330c14e37a296e66762d361c.png

这一般都是因为go环境没有配好,或者安装Go环境时的环境变量没有配置好(因为go build没有用)。可以用echo $GOPATH 等命令查看下这些环境变量配了没

c 编译过程中,可能会提示 build 文件第25行有问题

32df64ea3f3565c79ec2436d0063e880.png

25行说的是 判断go version是否大于4(go1.4),好像只有1.4版以后的才能用build文件编译成功,可以用go version查看一下版本。如果是版本问题,就要升级版本了(我们部门确实是1.4,出现了这个问题)。

② 运行etcd

在编译成功之后,bin目录里就会生成一个etcd文件,运行这个etcd文件就可以启动etcd服务了

cd bin

./etcd

PS: etcd启动后,当关闭终端(我这里是SecureCRT)后,etcd服务也随之关闭了,下次重启时,仍然要重新运行很是麻烦。可以利用nohup命令,让程序在后台运行,即使退出终端,程序也仍然运行着。

nohup ./etcd &

用以上命令代替 ./etcd命令。

(参考http://www.cnblogs.com/allenblogs/archive/2011/05/19/2051136.html)

3. 修改etcd 配置,远程访问etcd

完成以上步骤之后,就已经能在本机上玩起 etcd了。

可是,如果我想在其它主机访问这台主机上的etcd怎么办呢?

例如,我的部署了etcd的主机是 xx.xx.176.36 我在此主机上可以用 curl http://localhost:2379/v2/keys 命令访问etcd

我还有一台机器 xx.xx.176.37 ,curl http://xx.xx.176.36:2379/v2/keys 就会显示couldn't connect to host。而curl http://xx.xx.176.36:80 就能成功,所以是和端口相关的。

用netstat -an命令查看

可以看到 127.0.0.1:2379 127.0.0.1:2380

而80端口是 0.0.0.0:80

(参考http://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1)

而etcd官方issues里也有这个问题(https://github.com/coreos/etcd/issues/4377)

解决方法:设置环境变量

vi /etc/profile

export ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379

export ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379

然后reboot终端之后,重新编译执行etcd。

这下,我在37这台机器上也可以访问36的etcd了。

4. 总结

多看官方文档!多看官方文档!多看官方文档!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值