Consul-集群搭建
- 1.宿主机1-server-leader
- 1.获取宿主机IP
- 2.创建数据目录
- 3.创建配置目录
- 4.运行代理
- 5.访问web页面
- 2.宿主机2-server
- 1.获取宿主机IP
- 2.创建数据目录
- 3.创建配置目录
- 4.运行代理
- 5.访问web页面
- 3.宿主机3-client
- 1.获取宿主机IP
- 2.创建数据目录
- 3.创建配置目录
- 4.运行代理
- 5.访问web页面
- 4.consul集群成员查看
- 5.Agent关闭
1.宿主机1-server-leader
1.获取宿主机IP
ifconfig
2.创建数据目录
sudo mkdir -p /tmp/consul
3.创建配置目录
sudo mkdir -p /etc/consul.d/
4.运行代理
#node1:
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n1 -bind=192.168.56.11 -ui -config-dir /etc/consul.d -rejoin -join 192.168.56.11 -client 0.0.0.0
参数 | 说明 | 备注 |
agent | 运行代理 | 非开发模式,开发模式:需要后面跟 -dev【consul agent -dev】 |
-server | 定义代理运行在服务器模式 | |
-bootstrap-expect | 在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群 | 该标记不能和bootstrap共用. |
-data-dir | 提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在 | |
-node | 节点在集群中的名称,在一个集群中必须是唯一的 | 默认是该节点的主机名 |
-bind | 该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的 | 默认是0.0.0.0 |
-ui | 启动web界面 | |
-config-dir | 配置文件目录,里面所有以.json结尾的文件都会被加载 | |
-rejoin | 使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。 | |
-client | consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务 | 对外提供服务改成0.0.0.0 |
没有启动其他宿主机上的consul之前,一直是没有leader的。
在宿主机2上运行起来后,n2加入到了n1,宿主机1上的节点n1变成了leader。
5.访问web页面
在宿主机2上运行起来后,n2加入到了n1,宿主机1上的节点n1变成了leader。
浏览器访问:
http://192.168.56.11:8500
会自动跳转到services的页面
http://192.168.56.11:8500/ui/dc1/services
2.宿主机2-server
1.获取宿主机IP
ifconfig
2.创建数据目录
sudo mkdir -p /tmp/consul
3.创建配置目录
sudo mkdir -p /etc/consul.d/
4.运行代理
#node2:
consul agent -server -bootstrap-expect 2 -data-dir /tmp/consul -node=n2 -bind=192.168.56.12 -ui -config-dir /etc/consul.d -rejoin -join 192.168.56.11 -client 0.0.0.0
参数 | 说明 | 备注 |
agent | 运行代理 | 非开发模式,开发模式:需要后面跟 -dev【consul agent -dev】 |
-server | 定义代理运行在服务器模式 | |
-bootstrap-expect | 在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群 | 该标记不能和bootstrap共用. |
-data-dir | 提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在 | |
-node | 节点在集群中的名称,在一个集群中必须是唯一的 | 默认是该节点的主机名 |
-bind | 该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的 | 默认是0.0.0.0 |
-ui | 启动web界面 | |
-config-dir | 配置文件目录,里面所有以.json结尾的文件都会被加载 | |
-rejoin | 使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。 | |
-client | consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务 | 对外提供服务改成0.0.0.0 |
5.访问web页面
在宿主机2上运行起来后,n2加入到了n1,宿主机1上的节点n1变成了leader。
浏览器访问
http://192.168.56.12:8500
会自动跳转到services的页面
http://192.168.56.12:8500/ui/dc1/services
3.宿主机3-client
1.获取宿主机IP
ifconfig
2.创建数据目录
sudo mkdir -p /tmp/consul
3.创建配置目录
sudo mkdir -p /etc/consul.d/
4.运行代理
#node3
consul agent -data-dir /tmp/consul -node=n3 -bind=192.168.56.13 -config-dir /etc/consul.d -rejoin -join 192.168.56.11
参数 | 说明 | 备注 |
agent | 运行代理 | 非开发模式,开发模式:需要后面跟 -dev【consul agent -dev】 |
-server | 定义代理运行在服务器模式 | |
-bootstrap-expect | 在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群 | 该标记不能和bootstrap共用. |
-data-dir | 提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在 | |
-node | 节点在集群中的名称,在一个集群中必须是唯一的 | 默认是该节点的主机名 |
-bind | 该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的 | 默认是0.0.0.0 |
-ui | 启动web界面 | |
-config-dir | 配置文件目录,里面所有以.json结尾的文件都会被加载 | |
-rejoin | 使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。 | |
-client | consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务 | 对外提供服务改成0.0.0.0 |
5.访问web页面
因为在n3节点并没有设置ui,且没有对外服务的配置,所以,直接访问n1或者n2查看nodes即可确认n3是否加入成功!因为n3是client,不是server,所以不能在service中找到n3,只能在nodes中找到
http://192.168.56.11:8500/ui/dc1/nodes
或者
http://192.168.56.12:8500/ui/dc1/nodes
4.consul集群成员查看
在宿主机1或者宿主机2或者宿主机3中,新开一个终端
consul members
Node Address Status Type Build Protocol DC Segment
n1 192.168.56.11:8301 alive server 1.7.2 2 dc1 <all>
n2 192.168.56.12:8301 alive server 1.7.2 2 dc1 <all>
n3 192.168.56.13:8301 alive client 1.7.2 2 dc1 <default>
标题 | 说明 |
Node | 节点 |
Address | 网络地址 |
Status | 状态 |
Type | 类型 |
Build | 版本 |
Protocol | 协议 |
DC | 数据中心 |
Segment | 分管部分 |
5.Agent关闭
agent退出中,Consul提醒其他集群成员,这个节点离开了.如果强行杀掉进程.集群的其他成员应该能检测到这个节点失效了.当一个成员离开,他的服务和检测也会从目录中移除.当一个成员失效了,他的健康状况被简单的标记为危险,但是不会从目录中移除.Consul会自动尝试对失效的节点进行重连.允许他从某些网络条件下恢复过来.离开的节点则不会再继续联系.
此外,如果一个agent作为一个服务器,一个优雅的离开是很重要的,可以避免引起潜在的可用性故障影响达成一致性协议.
方式1.在运行的consul agent页面直接使用Ctrl + c
Ctrl + c
方式2.在对应consul agent运行的宿主机上新开终端,执行
consul leave
方式3.强行kill【非优雅的关闭Agent】不建议使用
kill -9 pid