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关闭


pacemaker postgress 集群管理 consul集群_consul


1.宿主机1-server-leader

1.获取宿主机IP

ifconfig

pacemaker postgress 集群管理 consul集群_数据目录_02

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

pacemaker postgress 集群管理 consul集群_bootstrap_03


没有启动其他宿主机上的consul之前,一直是没有leader的。

pacemaker postgress 集群管理 consul集群_bootstrap_04


在宿主机2上运行起来后,n2加入到了n1,宿主机1上的节点n1变成了leader。

pacemaker postgress 集群管理 consul集群_IP_05

5.访问web页面

在宿主机2上运行起来后,n2加入到了n1,宿主机1上的节点n1变成了leader。
浏览器访问:

http://192.168.56.11:8500

会自动跳转到services的页面

http://192.168.56.11:8500/ui/dc1/services

pacemaker postgress 集群管理 consul集群_bootstrap_06

2.宿主机2-server

1.获取宿主机IP

ifconfig

pacemaker postgress 集群管理 consul集群_bootstrap_07

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

pacemaker postgress 集群管理 consul集群_IP_08

5.访问web页面

在宿主机2上运行起来后,n2加入到了n1,宿主机1上的节点n1变成了leader。
浏览器访问

http://192.168.56.12:8500

会自动跳转到services的页面

http://192.168.56.12:8500/ui/dc1/services

pacemaker postgress 集群管理 consul集群_bootstrap_09

3.宿主机3-client

1.获取宿主机IP

ifconfig

pacemaker postgress 集群管理 consul集群_数据目录_10

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

pacemaker postgress 集群管理 consul集群_bootstrap_11

5.访问web页面

因为在n3节点并没有设置ui,且没有对外服务的配置,所以,直接访问n1或者n2查看nodes即可确认n3是否加入成功!因为n3是client,不是server,所以不能在service中找到n3,只能在nodes中找到

http://192.168.56.11:8500/ui/dc1/nodes

pacemaker postgress 集群管理 consul集群_consul_12


或者

http://192.168.56.12:8500/ui/dc1/nodes

pacemaker postgress 集群管理 consul集群_consul_13

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>

pacemaker postgress 集群管理 consul集群_IP_14

标题

说明

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