Skip to content

集群部署

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 服务

  1. 下载文件

访问 Consul 官网 下载适用于 Linux 的二进制文件。

选择版本

选择适用于 Linux 的版本(通常是 64.zip 文件,如:consul_1.20.5_linux_amd64.zip 软件包)。

  1. 上传服务器

使用 XShell 客户端工具远程登录服务器,并上传软件包 consul_1.20.5_linux_amd64.zip 至目录 /usr/local/src

上传成功后查看软件包信息:

js
[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

  1. 解压压缩包
js
[root@localhost src]# unzip consul_1.20.5_linux_amd64.zip
Archive:  consul_1.20.5_linux_amd64.zip
  inflating: LICENSE.txt             
  inflating: consul
  1. Consul 移动到 /usr/local/bin
js
mv consul /usr/local/bin/
  1. 验证安装

执行命令 consul --version 查看版本信息:

js
[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 配置文件。

  1. 创建配置目录:
js
mkdir /etc/consul.d
  1. 创建配置文件 /etc/consul.d/consul.hcl 并输入以下内容:
  • 服务器S206(192.168.10.206):
js
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):
js
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):
js
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地址,用于自动加入集群。

在每台服务器上执行以下命令创建数据目录:

js
mkdir -p /opt/consul
chown -R consul:consul /opt/consul
chown -R consul:consul /etc/consul.d

设置 Consul 为系统服务

在每台服务器上创建 Systemd 服务文件 /etc/systemd/system/consul.service

js
[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在意外退出时自动重启。
  1. 创建 Consul 专用用户和组
  • 创建用户和组:
js
groupadd --system consul
useradd --system --home /etc/consul.d --shell /bin/false -g consul consul
  • 设置目录权限:
js
chown -R consul:consul /etc/consul.d
chown -R consul:consul /opt/consul
  1. 重新加载配置

重新加载 Systemd 配置以应用新服务文件:

js
systemctl daemon-reload
  1. 启用并启动服务
js
# 启动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 集群状态

在任意一台服务器上检查集群成员:

js
consul members

输出应显示三台服务器的信息,状态为 alive

访问 Consul 控制台

  1. 打开浏览器,访问 http://<任意服务器IP>:8500,确保UI中显示三台服务器。

  1. 如果看到 ConsulWeb 界面,用于查看节点、服务和配置,说明安装成功。

  1. 防火墙配置

在每台服务器上开放 Consul 所需的端口:

  1. 确保防火墙允许 8500 端口:
js
firewall-cmd --permanent --add-port={8300,8301,8302,8500}/tcp
firewall-cmd --reload

总结

通过以上步骤,您已在三台 CentOS Stream 服务器上成功部署了 Consul 集群服务。集群会自动选举 Leader,并通过 Gossip 协议保持通信。您可以通过 Consul Web UI 或命令行工具管理集群。

小蚂蚁云团队 · 提供技术支持

小蚂蚁云 新品首发
新品首发,限时特惠,抢购从速! 全场95折
赋能开发者,助理企业发展,提供全方位数据中台解决方案。
获取官方授权