Consul 安装说明(Windows)

https://jeebiz.oss-cn-hangzhou.aliyuncs.com/consul_1.20.5_windows_amd64.zip

一、环境准备

在开始部署 Consul 服务之前,需要确保 Windows 环境满足以下基本要求:

1、系统要求

Consul 支持大多数 Linux 发行版,以下是一些常见的系统要求:

  • 操作系统:64 位操作系统
  • CPU 架构:x86_64 或 ARM。
  • 内存:至少 512MB RAM,推荐 1GB 或更多,具体取决于预期的工作负载。
  • 硬盘空间:至少 200MB 的可用硬盘空间。

2、网络配置

确保 Linux 服务器的网络配置正确,以下是一些网络要求:

  • 防火墙:确保 Consul 使用的端口(默认为 8300、8301、8302、8500 等)在防火墙上开放。
  • DNS:确保服务器可以解析 Consul 集群中的节点名称或 IP 地址。
  • 时间同步:建议配置 NTP 服务以确保集群中的所有节点时间同步。

二、Consul 下载

Windows 环境下 Consul 的安装可以通过直接下载预编译的二进制文件。下面介绍使用直接下载二进制文件的方法。

下载地址:Install | Consul | HashiCorp Developer

下载解压后,可看到 consul.exe 文件,我这里将文件解压到了 D:\Java\consul_1.20.5_windows_amd64 目录

三、Consul 配置

1、配置文件结构

Consul 的配置文件通常是一个名为 consul.json 的 JSON 文件,也可以是 HCL(HashiCorp Configuration Language)格式的.hcl 文件。配置文件可以包含以下部分:

  • agent:配置 Consul agent 的行为。
  • server:配置 Consul server 节点的特定设置。
  • client:配置 Consul client 节点的特定设置。
  • cluster:配置集群层面的设置,如数据中心的名称。
  • acl:访问控制列表的配置,用于权限管理。
  • encrypt:配置集群加密。

2、Consul Server 配置

创建一个配置文件 server-config.hcl,设置节点名称、服务器模式、数据存储目录、绑定地址、客户端连接地址等参数。例如:

# 节点名称
node_name = "my-consul-sever"
# 启用当前节点作为 Consul 服务器
server = true
# 设置预期的服务器节点数量,当达到这个数量时,集群将自动启动
bootstrap_expect = 1
# 指定 Consul 数据的存储目录
data_dir = "D:/Java/consul_1.20.5_windows_amd64/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 的安装和配置之后,接下来需要启动 Consul 服务。Consul 可以通过命令行直接启动,也可以通过 bat脚本来启动。以下是启动 Consul 服务的两种方法。

4.1 命令行启动

使用 CMD 进入脚本所在目录,执行下面命令:

consul agent -config-file=server-config.hcl

或者,使用 PowerShell 进入脚本所在目录,执行下面命令:

.\consul agent --config-file=server-config.hcl

访问Consul UI页面, http://127.0.0.1:8500/ui/ 检查是否访问正常。

  • 8301 默认 Serf LAN 端口
  • 8302 默认 Serf WAN 端口
  • 8300 Consul 服务器端口
  • 8500 HTTP API 端口(UI 端口)
  • 8600 DNS 端口

4.2、使用 Bat 启动脚本

然后,创建一个批处理文件 server-start.bat 来启动 Consul:

@echo off
echo Starting Consul agent...

REM 设置 Consul 的路径和配置文件路径
SET CONSUL_PATH=consul.exe
SET CONFIG_FILE_PATH=server-config.hcl

REM 创建 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

https://jeebiz.oss-cn-hangzhou.aliyuncs.com/consul_1.20.5_windows_amd64.zip

三、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 配置

1、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 = 8301
  serf_wan = 8302
  http = 8500  # HTTP API 端口(可以与服务器的端口不同,因为客户端通常不暴露 HTTP API)
  dns = 8600
}

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

2、client-start.bat

@echo off
echo Starting Consul agent...

REM 设置 Consul 的路径和配置文件路径
SET CONSUL_PATH=consul.exe
SET CONFIG_FILE_PATH=client-config.hcl

REM 创建 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

天行健,君子以自强不息; 地势坤,君子以厚德载物;

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