集群部署
在 CentOS Stream
上部署 Consul
集群服务,需要准备三台服务器,分别安装并配置为集群模式。通过配置 server
模式和 bootstrap_expect
参数,确保三台服务器能够互相通信并形成集群。
服务器准备
1. 服务器数量:3台,IP地址分别如下:
S206服务器:192.168.10.206
S207服务器:192.168.10.207
S208服务器:192.168.10.208
2. 操作系统:CentOS Stream 8 或者 Rocky Linux (官方推荐)。
3. 网络要求:确保三台服务器之间网络互通,开放以下端口:
8300(RPC通信)
8301(LAN Gossip通信)
8302(WAN Gossip通信)
8500(HTTP API/UI)
4. 配置要求:每台服务器至少2核CPU、4 GB内存、20 GB存储。
安装 Consul 服务
- 下载文件
访问 Consul 官网 下载适用于 Linux
的二进制文件。
选择版本
选择适用于 Linux
的版本(通常是 64
位 .zip
文件,如:consul_1.20.5_linux_amd64.zip
软件包)。
- 上传服务器
使用 XShell
客户端工具远程登录服务器,并上传软件包 consul_1.20.5_linux_amd64.zip
至目录 /usr/local/src
。
上传成功后查看软件包信息:
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# ll
总用量 393720
-rw-r--r--. 1 root root 66534209 3月 20 02:16 consul_1.20.5_linux_amd64.zip
[root@localhost src]# du -sh *
64M consul_1.20.5_linux_amd64.zip
温馨提示
客户端工具除了 XShell
也可以使用其他工具,安装包存放目录可自定义,如 /usr/local/src
。
- 解压压缩包
[root@localhost src]# unzip consul_1.20.5_linux_amd64.zip
Archive: consul_1.20.5_linux_amd64.zip
inflating: LICENSE.txt
inflating: consul
- 将
Consul
移动到/usr/local/bin
:
mv consul /usr/local/bin/
- 验证安装
执行命令 consul --version
查看版本信息:
[root@localhost src]# consul --version
Consul v1.20.5
Revision 74efe419
Build Date 2025-03-11T10:16:18Z
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
特别说明
需要在 3 台服务器S206、S207、S208 服务器上分别安装 Consul
服务。
配置 Consul 集群
在每台服务器上创建 Consul
配置文件。
- 创建配置目录:
mkdir /etc/consul.d
- 创建配置文件
/etc/consul.d/consul.hcl
并输入以下内容:
- 服务器S206(192.168.10.206):
datacenter = "dc1"
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
bind_addr = "192.168.10.206"
server = true
bootstrap_expect = 3
ui = true
retry_join = ["192.168.10.207", "192.168.10.208"]
- 服务器S207(192.168.10.207):
datacenter = "dc1"
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
bind_addr = "192.168.10.207"
server = true
bootstrap_expect = 3
ui = true
retry_join = ["192.168.10.206", "192.168.10.208"]
- 服务器S208(192.168.10.208):
datacenter = "dc1"
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
bind_addr = "192.168.10.208"
server = true
bootstrap_expect = 3
ui = true
retry_join = ["192.168.10.206", "192.168.10.207"]
配置说明:
- datacenter:数据中心名称,集群内必须一致。
- bind_addr:绑定当前服务器的IP地址。
- server = true:启用服务器模式。
- bootstrap_expect = 3:集群中预期的服务器数量。
- retry_join:指定其他服务器的IP地址,用于自动加入集群。
在每台服务器上执行以下命令创建数据目录:
mkdir -p /opt/consul
chown -R consul:consul /opt/consul
chown -R consul:consul /etc/consul.d
设置 Consul 为系统服务
在每台服务器上创建 Systemd
服务文件 /etc/systemd/system/consul.service
:
[Unit]
Description=Consul Service
Documentation=https://www.consul.io/
After=network.target
[Service]
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT
Restart=on-failure
User=consul
Group=consul
[Install]
WantedBy=multi-user.target
参数说明:
- ExecStart:指定Consul启动命令。
- User 和 Group:建议创建一个专用的用户和组来运行Consul(见下一步)。
- Restart=on-failure:确保Consul在意外退出时自动重启。
- 创建
Consul
专用用户和组
- 创建用户和组:
groupadd --system consul
useradd --system --home /etc/consul.d --shell /bin/false -g consul consul
- 设置目录权限:
chown -R consul:consul /etc/consul.d
chown -R consul:consul /opt/consul
- 重新加载配置
重新加载 Systemd
配置以应用新服务文件:
systemctl daemon-reload
- 启用并启动服务
# 启动Consul服务
systemctl enable consul
# 设置Consul开机自启动
systemctl start consul
通过以上步骤,Consul
已成功配置为 Systemd
服务,并可以通过以下命令管理:
1. 启动服务:systemctl start consul
2. 停止服务:systemctl stop consul
3. 重启服务:systemctl restart consul
4. 查看状态:systemctl status consul
5. 查看日志:journalctl -u consul
验证 Consul 集群状态
在任意一台服务器上检查集群成员:
consul members
输出应显示三台服务器的信息,状态为 alive
。
访问 Consul 控制台
- 打开浏览器,访问
http://<任意服务器IP>:8500
,确保UI中显示三台服务器。
- 如果看到
Consul
的Web
界面,用于查看节点、服务和配置,说明安装成功。
- 防火墙配置
在每台服务器上开放 Consul
所需的端口:
- 确保防火墙允许
8500
端口:
firewall-cmd --permanent --add-port={8300,8301,8302,8500}/tcp
firewall-cmd --reload
总结
通过以上步骤,您已在三台 CentOS Stream
服务器上成功部署了 Consul
集群服务。集群会自动选举 Leader
,并通过 Gossip
协议保持通信。您可以通过 Consul Web UI
或命令行工具管理集群。