背景环境
consul3台主机集群配置
192.168.0.101
192.168.0.102
192.168.0.103
consul集群最少需要3台,
集群配置
1.下载consul包,进入consul目录下
创建cs-data数据目录
2.配置启动文件run.sh
内容可参考
1节点配置文件:
chmod 777 /home/soft/consul/consul
nohup /home/soft/consul/consul agent -server -ui -bootstrap-expect=2 -data-dir=/home/soft/consul/cs-data -node=consul1 -client=0.0.0.0 -bind=192.168.0.101 > /home/soft/consul/consul.log 2>&1 &
ps -ef |grep consul
2节点配置文件:
chmod 777 /home/soft/consul/consul
nohup /home/soft/consul/consul agent -server -ui -bootstrap-expect=2 -data-dir=/home/soft/consul/cs-data -node=consul2 -client=0.0.0.0 -bind=192.168.0.102 > /home/soft/consul/consul.log 2>&1 &
ps -ef |grep consul
3节点配置文件:
chmod 777 /home/soft/consul/consul
nohup /home/soft/consul/consul agent -server -ui -bootstrap-expect=2 -data-dir=/home/soft/consul/cs-data -node=consul3 -client=0.0.0.0 -bind=192.168.0.103 > /home/soft/consul/consul.log 2>&1 &
ps -ef |grep consul
几个地方注意下:
-bootstrap-expect=2 这个2是最小启动数,小于2就集群失效
-node=consul1 这个为节点名,2,3节点作出相应修改
3.启动
consul目录下文件赋权启动,consul和run.sh赋权即可,此处全部做了赋权
chmod -R 777 ./*
启动
./run.sh
[yyq@soft consul]$ ./run.sh
yyq 24591 24589 0 14:42 pts/1 00:00:00 /home/soft/consul/consul agent -server -ui -bootstrap-expect=2 -data-dir=/home/soft/consul/cs-data -node=consul1 -client=0.0.0.0 -bind=192.168.0.101
yyq 24593 24589 0 14:42 pts/1 00:00:00 grep consul
[yyq@soft consul]$
4.配置集群
开放节点1,2,3的8300、8301、8302端口
/sbin/iptables -I INPUT -p tcp --dport 8300 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8301 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8302 -j ACCEPT
2,3节点分别执行以下命令加入到集群
./consul join 192.168.0.101
此处如果不开放端口会报以下两个错误
1.Failed to join 192.168.0.101
[yyq@soft consul]$ ./consul join 192.168.0.101
Error joining address '192.168.0.101': Unexpected response code: 500 (1 error(s) occurred:
* Failed to join 192.168.0.101: dial tcp 192.168.0.101:8301: i/o timeout)
Failed to join any nodes.
这个其实是1节点的8301端口没有开放导致,用root用户开放下端口即可
2. agent: Coordinate update error: rpc error getting client: failed to get conn: dial tcp
这个错误是没有开放8300端口
2020/11/06 01:09:50 [ERR] agent: Coordinate update error: rpc error getting client: failed to get conn: dial tcp 192.168.0.102:0->192.168.0.101:8300: connect: no route to host
3.Push/Pull with consul1.dc1 failed: dial tcp
2020/11/06 01:16:10 [ERR] memberlist: Push/Pull with consul1.dc1 failed: dial tcp 192.168.0.101:8302: connect: no route to host
5.测试
以下命令测试启动情况
./consul members
[yyq@soft consul]$ ./consul members
Node Address Status Type Build Protocol DC Segment
consul1 192.168.0.101:8301 alive server 1.4.2 2 dc1 <all>
consul2 192.168.0.102:8301 alive server 1.4.2 2 dc1 <all>
consul3 192.168.0.103:8301 alive server 1.4.2 2 dc1 <all>
[yyq@soft consul]$
查杀1节点后,情况如下
[yyq@soft consul]$ ./consul members
Node Address Status Type Build Protocol DC Segment
consul1 192.168.0.101:8301 left server 1.4.2 2 dc1 <all>
consul2 192.168.0.102:8301 alive server 1.4.2 2 dc1 <all>
consul3 192.168.0.103:8301 alive server 1.4.2 2 dc1 <all>
5.输入地址访问:
http://192.168.0.101:8500
访问 即可看到consul已经有三个端口了
常见问题
参考:
搭建consul 集群