安装consul二进制

参考

准备三个机器

下载 consul

运行consul

node1:
nohup consul agent -server -bootstrap-expect 2 -data-dir=/data1/consul/data -node=node1 -bind=10.3.1.8 -client=0.0.0.0  > /data1/consul/logs/consul.log &
node2:
nohup consul agent -server -bootstrap-expect 2 -data-dir=/data1/consul/data -node=node2 -bind=10.3.1.11 -client=0.0.0.0  > /data1/consul/logs/consul.log &
node3:
nohup consul agent -server -bootstrap-expect 2 -data-dir=/data1/consul/data -node=node3 -bind=10.3.1.5 -client=0.0.0.0  > /data1/consul/logs/consul.log &

加入集群

node2 node3上执行
consul join 10.3.1.8

查看node

consul members

网页查看node

启动时添加参数 -ui 如:

nohup consul agent -server -bootstrap-expect 2 -data-dir=/data1/consul/data -node=node3 -bind=10.3.1.5 -client=0.0.0.0 -ui > /data1/consul/logs/consul.log &

通过docker安装consul

在三个机器上分别运行docker

  • 启动consul
docker run --net=host -i -d --name=consul -v /data1/consul/data:/consul/data -v /data1/consul/config:/consul/config consul:1.3.1 agent -server -bind=192.168.177.224 -client 0.0.0.0 -ui -bootstrap-expect=2 -node=node1 

  • 加入到上面的节点
docker run --net=host consul agent -server -client 0.0.0.0 -ui -bind=10.254.0.119 -join 10.254.0.118 -node=node

docker 单节点

docker run -d  -v /data1/consul/data:/consul/data -v /data1/consul/config:/consul/config -p 8300:8300 -p 8301:8301 -p 8301:8301/udp  -p 8302:8302/udp -p 8302:8302 -p 8400:8400 -p 8500:8500 -p 8600:8600 --name=consul consul:1.3.1 agent -server   -client 0.0.0.0 -ui -bootstrap-expect=1 -advertise=10.3.1.15

-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址
-bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。
-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
-client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1
-config-file:明确的指定要加载哪个配置文件
-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
-data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在
-dc:该标记控制agent允许的datacenter的名称,默认是dc1
-encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key
-join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。
-retry-join:和join类似,但是允许你在第一次失败后进行尝试。
-retry-interval:两次join之间的时间间隔,默认是30s
-retry-max:尝试重复join的次数,默认是0,也就是无限次尝试
-log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
-protocol:consul使用的协议版本
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个
-syslog:开启系统日志功能,只在linux/osx上生效
-ui-dir:提供存放web ui资源的路径,该目录必须是可读的
-pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent