Linux下Consul集群配置实践

1、Consul官网

地址:https://www.consul.iohtml

说明:https://www.consul.io/intro/node

文档:https://www.consul.io/docs/commands/linux

2、Consul功能

Service Discovery 服务发现web

Failure Detection 故障探测json

Multi Datacenter 多数据中心bootstrap

Key/Value Storage  KV存储curl

3、配置环境

操做系统:CentOS 7.0tcp

软件版本:consul-0.7.5测试

采用3节点consul serverui

192.168.1.101  

192.168.1.102

192.168.1.103

192.168.1.104

101,102,103作server,104作client

(一).Server端

https://www.consul.io/intro/getting-started/agent.html

1.安装(全部节点)

wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip

wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_web_ui.zip

mkdir /home/maxbill/consul/admin/

mkdir /home/maxbill/consul/webui/

unzip consul_0.7.5_linux_amd64.zip -d /home/maxbill/consul/admin/

unzip consul_0.7.5_web_ui.zip -d /home/maxbill/consul/webui/

注:/home/maxbill/consul/admin/和/home/maxbill/consul/webui/是我自定义的目录

2.配置server cluster

101节点

consul agent -server -bootstrap -ui-dir=../webui/ -data-dir=data -client=0.0.0.0 -node=101

提示:-bootstrap通常只在集群初始化时使用一次

单节点测试,还能够-bootstrap-expect=1来自我选举为leader

102节点

consul agent -server -ui-dir=../webui/ -data-dir=data -client=0.0.0.0 

-join=192.168.192.101 -node=102

103节点

consul agent -server -ui-dir=../webui/ -data-dir=data -client=0.0.0.0 

-join=192.168.192.101 -node=103

若是没有正常选出leader,能够手动触发bootstrap    consul join 192.168.192.101

参数说明:https://www.consul.io/docs/agent/options.html

-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

端口说明:

dns - The DNS server, -1 to disable. Default 8600.

http - The HTTP API, -1 to disable. Default 8500.

https - The HTTPS API, -1 to disable. Default -1 (disabled).

rpc - The CLI RPC endpoint. Default 8400.

serf_lan - The Serf LAN port. Default 8301.

serf_wan - The Serf WAN port. Default 8302.

server - Server RPC address. Default 8300.

[root@admin]# consul version

Consul v0.7.5

Consul Protocol: 3 (Understands back to: 1)

[root@admin]# netstat -tunlp|grep consul

tcp6       0      0 :::8300                 :::*                    LISTEN      2581/consul         

tcp6       0      0 :::8301                 :::*                    LISTEN      2581/consul         

tcp6       0      0 :::8302                 :::*                    LISTEN      2581/consul         

tcp6       0      0 :::8400                 :::*                    LISTEN      2581/consul         

tcp6       0      0 :::8500                 :::*                    LISTEN      2581/consul         

tcp6       0      0 :::8600                 :::*                    LISTEN      2581/consul         

udp6       0      0 :::8600                 :::*                                2581/consul         

udp6       0      0 :::8301                 :::*                                2581/consul         

udp6       0      0 :::8302                 :::*                                2581/consul 

https://www.consul.io/docs/agent/http/status.html

[root@admin]# curl localhost:8500/v1/status/leader

"192.168.192.101:8300"

[root@admin]# curl localhost:8500/v1/status/peers

["192.168.192.101:8300","192.168.192.102:8300","192.168.192.103:8300"]

3.web ui

http://192.168.192.101:8500/

http://192.168.192.102:8500/

http://192.168.192.103:8500/

由于全部consul server都安装有web ui,所以,任意一台consul server节点均可以查看

二.Client端

1.安装

和server一致

2.配置consul agent

104节点

consul agent -data-dir=data -client=0.0.0.0 -join=192.168.192.101 -node=104

说明:客户端没有-server参数,web ui也可省略

[root@admin]# consul members

Node       Address                     Status   Type      Build     Protocol    DC

101         192.168.192.101:8301  alive      server    0.7.5     2               dc1

102         192.168.192.102:8301  alive      server    0.7.5     2               dc1

103         192.168.192.103:8301  alive      server    0.7.5     2               dc1

104         192.168.192.104:8301  alive      client      0.7.5    2               dc1