Consul 集群安装(Linux)

Consul 集群的搭建是确保服务发现和服务配置在分布式系统中可靠运行的关键。一个 Consul 集群由一个或多个 Consul 服务器组成,它们之间通过相互通信来维护集群的状态。以下是搭建 Consul 集群的详细步骤。

1、规划集群拓扑

在搭建集群之前,需要规划集群的拓扑结构。Consul 集群通常包括以下几种类型的节点:

  • Server 节点:负责维护集群的状态,包括服务注册信息、键值对存储和集群配置。Server 节点之间通过 Raft 协议进行通信来保证数据的一致性。
  • Client 节点:不参与 Raft 协议的共识过程,但可以向 Server 节点注册服务和查询服务信息。

通常,一个 Consul 集群至少需要 3 个 Server 节点来保证高可用性。

2、配置 Server 节点

在每个 Server 节点上,需要配置 Consul 以 server 模式运行。这可以通过编辑 Consul 的配置文件或使用命令行参数来完成。

  • 修改配置文件,bootstrap_expect 参数设置节点数量,当前有三台机器改为 3
  • retry_join 加入另外两台需要加入的IP
retry_join = [
"<当前服务器IP>:8301", # 服务器 2 的 IP 地址
"<当前服务器IP>:8301" # 服务器 3 的 IP 地址
]

以下是一个配置 Server 节点的示例:

# 节点名称
node_name = "my-consul-sever2"

# 启用当前节点作为 Consul 服务器
server = true

# 设置预期的服务器节点数量,当达到这个数量时,集群将自动启动
bootstrap_expect = 3

# 指定 Consul 数据的存储目录
data_dir = "/var/lib/consul"

# 设置当前节点的绑定地址(用于集群内的通信)
bind_addr = "<当前服务器IP>"

# 设置允许的客户端连接地址
client_addr = "0.0.0.0"

# 启用 Consul Web UI
ui_config {
  enabled = true
}

# 配置端口
ports {
  serf_lan = 8301   # 默认 Serf LAN 端口
  serf_wan = 8302   # 默认 Serf WAN 端口
  server = 8300     # Consul 服务器端口
  http = 8500       # HTTP API 端口(UI 端口)
  dns = 8606        # DNS 端口
}

# 设置日志级别(可选,默认为 "INFO")
log_level = "INFO"

# 配置服务器节点的互联
retry_join = [
  "<当前服务器IP>:8301",  # 服务器 2 的 IP 地址
  "<当前服务器IP>:8301"   # 服务器 3 的 IP 地址
]

在这个配置中,server = true 表示该节点是一个 Server 节点,bootstrap_expect = 3 告诉 Consul 我们期望有 3 个 Server 节点加入集群,这是为了确保集群的稳定性。

3、配置 Consul Client

Client 节点的配置相对简单,只需要指定它们连接到 Server 节点的地址。以下是一个配置 Client 节点的示例:

# 节点名称
node_name = "my-consul-client"

# 数据目录
data_dir = "Data"

# 绑定地址
bind_addr = "当前机器IP"

# 客户端监听地址
client_addr = "0.0.0.0"

# 指定需要加入的 Consul server 的 IP 地址
retry_join = ["<server1_ip>:8301", "<server2_ip>:8301", "<server3_ip>:8301"]

# 启用 UI
ui_config {
  enabled = false
}

# 端口配置
ports {
  serf_lan = 8301
  serf_wan = 8302
  http = 8500  # HTTP API 端口(可以与服务器的端口不同,因为客户端通常不暴露 HTTP API)
  dns = 8600
}

# 设置日志级别(可选,默认为 "INFO")
log_level = "INFO"

在这个配置中,"client=true" 表示该节点是一个 Client 节点,"retry_join" 是一个包含 Server 节点地址的列表,Client 节点将尝试连接到这些地址以加入集群。

4、启动 Consul 节点

在所有节点上配置好 Consul 后,可以启动 Consul 服务。对于 Server 节点,可以使用以下命令:

consul agent -server -bootstrap-expect 3 -config-dir /etc/consul.d

对于 Client 节点,可以使用以下命令:

consul agent -client -retry-join <server1_ip>:8300 -retry-join <server2_ip>:8300 -retry-join <server3_ip>:8300 -config-dir /etc/consul.d

确保替换 <server1_ip>, <server2_ip>, <server3_ip> 为实际的 Server 节点 IP 地址。

5、验证集群状态

在所有节点启动后,可以通过 Consul 的 HTTP API 或 CLI 命令来验证集群的状态。以下是一些可以使用的命令:

consul members
consul info

consul members 命令将列出集群中所有节点的信息,而 consul info 命令将提供关于集群的详细信息,包括集群的 Server 节点数量和 Client 节点数量。

通过以上步骤,你将能够成功搭建一个 Consul 集群,并且可以在此基础上进行服务的注册、发现和配置管理。

6、访问 Consul

浏览器访问 http://192.168.1.170:8500/ ,如下图所示

四、基本命令

1、查询集群节点

[root@localhost ~]# consul members
Node                           Address                     Status Type    Build  Protocol   DC   Partition Segment
localhost.localdomain 192.168.11.197:8301 alive    server 1.15.2 2 consul-cluster default <all>

2)重新加载配置文件

[root@localhost ~]# consul reload

3)优雅关闭节点

[root@localhost ~]# consul leave

注意:优雅的关闭当前机器上的节点,如果你有多个节点,需要每个节点都要执行关闭命令,否则只是关闭机器中的一个节点。

4)查询所有注册的服务

[root@localhost ~]# consul catalog services

5)加入集群

[root@localhost ~]# consul join 192.168.11.197

参考资料

作者:Jeebiz  创建时间:2025-04-13 14:23
最后编辑:Jeebiz  更新时间:2025-04-13 16:32