基本概念
(1) 每个节点运行的consul进程,都是一个consul agent , 节点包括server和client节点.
(2) Consul agent 分server 和 client 两种角色.
(3) 每个集群或数据中心需要3-5个server节点, 其它需要注册与发现服务的节点就是client节点,也就是你的应用所在节点是client节点.
(4) server节点用来保存数据,处理请求. client节点不保存数据, 转发请求到server节点.
Consul常用端口
类型 | 端口 | 说明 |
---|---|---|
dns | 8600 | The DNS Server |
http | 8500 | The HTTP API |
https | The HTTPS API | |
rpc | 8400 | The CLI RPC endpoint |
serf_lan | 8301 | The Serf LAN port |
serf_wan | 8302 | the Serf WAN port |
server | 8300 | Server RPC address |
集群环境
主机名 | consul集群中node名 | IP地址 | Consul角色 |
---|---|---|---|
node4 | consul-server01 | 192.168.1.4 | server |
node5 | consul-server02 | 192.168.1.5 | server |
node6 | consul-server03 | 192.168.1.6 | server |
node101 | consul-client01 | 192.168.1.101 | client |
==server节点==
(1) 建立相应的数据和配置目录
1 | $ mkdir -p /opt/consul/data |
(2) 安装consul
1 | # 其它版本: https://www.consul.io/downloads.html |
(3) 创建运行consul专有用户
1 | $ useradd -M -s /sbin/nologin consul |
(4) 创建配置文件
consul-server01
1 | $ vim /etc/default/consul |
consul-server02
1 | $ vim /etc/default/consul |
consul-server03
1 | $ vim /etc/default/consul |
注意:
(1) consul-server02 和 consul-server03 不需配置选项“-bootstrap”
(5) 创建Systemd配置文件
1 | $ vim /etc/systemd/system/consul.service |
(6) 分别启动consul
1 | systemctl start consul.service |
==到此我们已经启动了三个Consul Server,这三个Consul Server现在还对彼此没有任何感知。它们都为单节点的集群,每个集群都仅包含一个成员。
可在各个节点运行如下命令查看.(以consul-server01为例)==
1 | $ consul members --http-addr 192.168.1.4:8500 |
(7) 为了让三个Server间能互相感知,这里就要让其它二个Server加入另一个Server的集群中。
1 | consul-server02加入consul-server01,在consul-server02上操作: |
1 | consul-server03加入consul-server01,在consul-server03上操作: |
1 | 再次运行命令查看,就发现有三个成员了. |
==client节点==
配置过程大部分同server节点相同,不同处如下列出.
TIPS:对于consul client,用容器运行也可以的,具体见,https://hub.docker.com/_/consul/ 。
(4) 创建配置文件
consul-client01
1 | $ vim /etc/default/consul |
==该节点是Client角色,所以我们不指定它启动为服务器模式,这里启动的时候就会自动加入一个已有集群,因为启动时加入了-join参数,该参数可以自动加入一个已知Consul集群。==
1 | 此时查询集群成员 |
参考
(1)https://www.hi-linux.com/posts/28048.html
(2)https://www.hi-linux.com/posts/6132.html