centos7上consul的安装
一 下载
下载文件 wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
unzip consul_0.6.4_linux_amd64.zip
拷贝到适当的位置
查看 consul -v
如果显示出版本表示没有问题。如果报错请重新下载,或者查看环境变量是否设置正确
二打开端口
有8300 8500 8301 如果使用webui 请到官网 下载文件
三 配置集群 (如果是单机测试 用consul agent -dev就行了配置一台机器就可以了)
官网上是建议server3个或以上 client不限数量
此处 server用2个
服务两台 : s1 192.168.1.81 s2 192.168.1.82
s1 执行以下命令
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n1 -bind=192.168.1.81 -dc=dc1
s2命令
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=192.168.1.82 -ui-dir ./dist -dc=dc1
-server 表示是server模式
-bootstrap-expect 2 表示是集群中有2台服务器 bootstrap该模式node可以指定自己作为leader ,如果是非leader可不加该参数
-data-dir /tmp/consul 目录
-node=n2 该服务器节点名
-bind=192.168.1.82 节点绑定的ip
-ui-dir ./dist 非必须 webui的路径 用web来管理consul
-dc=dc1 集群的名称
执行 consul members
发现集群里并没有其他的服务器
把服务器加入集群
s1 上执行
consul join 192.168.1.82
如果失败 ,请看是否打开了8301端口
成功后 再次执行 consul members
会显示有2个服务器节点
Node Address Status Type Build Protocol DC
n1 192.168.1.81:8301 alive server 0.6.4 2 dc1
n1 192.168.1.82:8301 alive server 0.6.4 2 dc1
如果你已经熟悉了,可以是用json格式的配置文件来设置
consul leave 宣布离开集群
当2个server的时候,退出一个,会没有leader
当3个以上server的时候 退出一个,会在剩下的server中选出新的leader
s1 退出后重新加入 执行一下命令
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=192.168.1.81 -ui-dir ./dist -dc=dc1
consul join 192.168.1.82
关于重启后 ,配置丢失的问题
我们打开n1和n2的/tmp/consul/raft/peers.json,将其内容统一修改为:
["192.168.1.81:8300","192.168.1.82:8300"]
然后重启n2,但加上-rejoin命令:
$ consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=192.168.1.82 -ui-dir ./dist -dc=dc1 -rejoin
参考文章 http://tonybai.com/2015/07/06/implement-distributed-services-registery-and-discovery-by-consul/
//查看版本
consul -v