一、Consul下载
下载地址:Install | Consul | HashiCorp Developer
本次使用Windows版本
下载解压后,可看到consul.exe文件
二、Consul Server配置
为了方便使用增加server-config.hcl和server-start.bat文件
(一) server-config.hcl配置文件
# 节点名称
node_name = "my-consul-sever"# 启用当前节点作为 Consul 服务器
server = true# 设置预期的服务器节点数量,当达到这个数量时,集群将自动启动
bootstrap_expect = 1# 指定 Consul 数据的存储目录
data_dir = "Data"# 设置当前节点的绑定地址(用于集群内的通信)
bind_addr = "127.0.0.1"# 设置允许的客户端连接地址
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 = 8600 # DNS 端口
}# 设置日志级别(可选,默认为 "INFO")
log_level = "INFO"
(二) 启动consul
consul agent -config-file=server-config.hcl
访问Consul UI页面
http://127.0.0.1:8500/ui/
(三) 使用bat启动脚本
@echo off
echo Starting Consul agent...REM 设置 Consul 的路径和配置文件路径
SET CONSUL_PATH=consul.exe
SET CONFIG_FILE_PATH=server-config.hclREM 创建 logs 目录(如果不存在)
if not exist logs (mkdir logs
)REM 启动 Consul agent,将标准输出和错误输出重定向到 logs 目录中的 consul.log
REM 仅将 Consul 启动成功与否的状态输出到控制台
%CONSUL_PATH% agent -config-file=%CONFIG_FILE_PATH% > logs\consul.log 2>&1
SET ERRORLEVEL=%ERRORLEVEL%REM 检查是否启动成功
IF %ERRORLEVEL% NEQ 0 (echo Consul failed to start. Check logs\consul.log for details.exit /b %ERRORLEVEL%
)echo Consul started successfully. Logs are being written to logs\consul.log
pause
三、Consul Server集群
修改配置文件,bootstrap_expect参数设置节点数量,当前有三台机器改为3
retry_join 加入另外两台需要加入的IP
retry_join = [
"<当前服务器IP>:8301", # 服务器 2 的 IP 地址
"<当前服务器IP>:8301" # 服务器 3 的 IP 地址
]
# 节点名称
node_name = "my-consul-sever2"# 启用当前节点作为 Consul 服务器
server = true# 设置预期的服务器节点数量,当达到这个数量时,集群将自动启动
bootstrap_expect = 3# 指定 Consul 数据的存储目录
data_dir = "Data"# 设置当前节点的绑定地址(用于集群内的通信)
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 地址
]
当Leader 不可用时将会触发选举,选出新的leader
四、Consul Client配置
(一) client-config.hcl
# 节点名称
node_name = "my-consul-client"# 数据目录
data_dir = "Data"# 绑定地址
bind_addr = "当前机器IP"# 客户端监听地址
client_addr = "0.0.0.0"# 指定需要加入的 Consul server 的 IP 地址
retry_join = ["当前机器IP:8301"]# 启用 UI
ui_config {enabled = false
}# 端口配置
ports {serf_lan = 8301serf_wan = 8302http = 8500 # HTTP API 端口(可以与服务器的端口不同,因为客户端通常不暴露 HTTP API)dns = 8600
}# 设置日志级别(可选,默认为 "INFO")
log_level = "INFO"
(二) client-start.bat
@echo off
echo Starting Consul agent...REM 设置 Consul 的路径和配置文件路径
SET CONSUL_PATH=consul.exe
SET CONFIG_FILE_PATH=client-config.hclREM 创建 logs 目录(如果不存在)
if not exist logs (mkdir logs
)REM 启动 Consul agent,将标准输出和错误输出重定向到 logs 目录中的 consul.log
REM 仅将 Consul 启动成功与否的状态输出到控制台
%CONSUL_PATH% agent -config-file=%CONFIG_FILE_PATH% > logs\consul.log 2>&1
SET ERRORLEVEL=%ERRORLEVEL%REM 检查是否启动成功
IF %ERRORLEVEL% NEQ 0 (echo Consul failed to start. Check logs\consul.log for details.exit /b %ERRORLEVEL%
)echo Consul started successfully. Logs are being written to logs\consul.log
pause