CentOS6.8安装Consul记录
官方文档
https://learn.hashicorp.com/consul/
https://learn.hashicorp.com/consul/getting-started/install
https://www.springcloud.cc/spring-cloud-consul.html
下载consul
https://releases.hashicorp.com/consul/1.5.1/consul_1.5.1_linux_amd64.zip
1. 解压即安装
[root@localhost ~]# unzip -o consul_1.5.1_linux_amd64.zip -d /usr/local/consul/
2. 配置环境变量
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/consul/' >> /etc/profile
[root@localhost ~]# source /etc/profile
3. Consul集群
3.1 将consul部署到3台服务器,其中两台服务端(一台leader,一台备份server),一台为转发消息的客户端。
3.2 通过命令启动三台consul后,将其他两台consul服务加入集群中。
一般服务端3台-5台就可以了,客户端可以部署很多台。
server1
nohup consul agent -server \
-bootstrap-expect=1 \
-data-dir=/tmp/consul/data/ \
-node=server1 \
-bind=192.168.168.168 \
-ui \
-client=0.0.0.0 \
> /tmp/consul/log/consul.log 2>&1 &
-advertise-wan=123.57.215.66
-advertise=123.57.215.66
-server 表示以服务端身份启动
-bind 表示绑定ip(服务器有多块网卡,可通过bind参数强制绑定指定ip)
-client 限定客户端访问的ip(consul有丰富的api接口,这里的客户端指浏览器或调用方),0.0.0.0表示不限客户端ip
-bootstrap-expect=3 表示server集群最低节点数为3,低于这个值将工作不正常(注:类似zookeeper一样,通常集群数为奇数,方便选举,consul采用的是raft算法)
-data-dir 表示指定数据的存放目录(该目录必须存在)
-node 表示节点在web ui中显示的名称
-advertise-wan 使用也可以
-advertise 配置外网通知地址
启动成功后,终端窗口不要关闭,可以在浏览器里,访问下,类似 http://192.168.1.101:8500/,正常的话,应该会看到一行文字:Consul Agent。
server2
nohup consul agent -server \
-data-dir=/tmp/consul/data/ \
-node=server2 \
-bind=192.168.168.169 \
-ui \
-client=0.0.0.0\
> /tmp/consul/log/consul.log 2>&1 &
-advertise=118.57.108.56 \
client1
nohup consul agent \
-data-dir=/tmp/consul/data/ \
-node=client1 \
-bind=192.168.168.170 \
-ui \
-client=0.0.0.0 \
> /tmp/consul/log/consul.log 2>&1 &
-advertise=118.57.108.56 \
分别执行如下命令,将server2和client1加入到server1集群
[root@localhost ~]# consul join 192.168.168.168
Successfully joined cluster by contacting 1 nodes.
命令查看集群成员
[root@localhost ~]# consul members
Node Address Status Type Build Protocol DC Segment
server1 192.168.168.168:8301 alive server 1.5.1 2 dc1 <all>
server2 192.168.168.169:8301 alive server 1.5.1 2 dc1 <all>
client1 192.168.168.170:8301 alive client 1.5.1 2 dc1 <default>
使用WEB UI界面查看集群信息
port | desc 端口说明: |
---|---|
TCP/8300 | 用于服务器节点,客户端通过该端口RPC协议调用服务端节点,服务器节点之间相互调用 |
TCP/8301 | 用于单个数据中心所有节点之间的相互通信,即对LAN池信息的同步。它使得整个数据中心能够自动发现服务器地址,分布式检测节点故障,事件广播(如领导选举事件) |
TCP/8302 | 用于单个或多个数据中心之间的服务器节点的信息同步,即对WAN池信息的同步。它针对互联网的高延迟进行了优化,能够实现跨数据中心请求。 |
8400 | |
8500 | 基于http协议,用于API接口或WEB UI访问 |
8600 | 作为DNS服务器,使得我们可以通过节点名查询节点信息 |
4. Consul服务注册:
某个服务在注册中心注册自己的位置。通常注册自己的主机和端口,有时还有身份验证信息,协议,版本号,以及运行环境的详细资料。服务注册简单的方式就是通过http请求添加一个服务,携带json数据请求即可。
http://192.168.168.169:8500/v1/agent/service/register put
{
"ID": "testID", //指定服务的名称,此名称必须是唯一的名称。
"Name": "testIDService", //指定服务的逻辑名称,允许名称重复。
"Tags": [ "primary" ], //指定要分配给服务的标签列表,这些标签可用于以后的过滤,并通过API公开。
"Address": "127.0.0.1", //指定服务地址。
"Port": 80, //指定服务的端口号。
"Check": { //指定健康检查服务状态相关参数
"HTTP": "http://127.0.0.1/health", //http形式的请求
"Interval": "5s" //检查时间
}
}
通过API选择一个健康服务来调用
http://192.168.168.169:8500/v1/health/service/testIDService get
取消注册的服务
http://192.168.168.169:8500/v1/agent/service/deregister/testIDService
查看所有不健康的服务
http://192.168.168.169:8500/v1/health/state/critical
5. 开发单机模式
consul agent -dev -advertise 192.168.168.102 -client 0.0.0.0 -ui