Consul集群部署指南


高可用性单集群架构
在这里插入图片描述
所有的 Consul 主机上都要完成以下步骤。

  • 下载 Consul
  • 安装 Consul
  • 配置 systemd
  • 配置 Consul (server) 或 (client)
  • 启动 Consul

本手册适用于运行着 systemd 和服务管理器的类 Linux 主机。

下载 Consul

可以从 https://releases.hashicorp.com/consul/ 下载预编译好的二进制文件。企业版请从指定地址下载。

下载完成后校验一下压缩包完整性。官方提供了校验方案。

CONSUL_VERSION="1.8.0"
curl --silent --remote-name https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip
curl --silent --remote-name https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_SHA256SUMS
curl --silent --remote-name https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_SHA256SUMS.sig

安装 Consul

解压已下载的包,移动 consul 到 /usr/local/bin,检查是否在系统路径可用。

unzip consul_${CONSUL_VERSION}_linux_amd64.zip
sudo chown root:root consul
sudo mv consul /usr/local/bin/
consul --version

consul 命令支持参数、标识和子命令的自动补全,建议启用:

consul -autocomplete-install

创建一个没有权限的系统用户来运行 Consul,并分配一个数据目录:

sudo useradd --system --home /etc/consul.d --shell /bin/false consul
sudo mkdir --parents /opt/consul
sudo chown --recursive consul:consul /opt/consul

配置 systemd

Systemd 使用文档中的默认设置,所以需要写配置文件来定义非默认服务。
创建一个配置文件:

sudo touch /etc/systemd/system/consul.service

配置 Consul 服务:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl

[Service]
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

下面是 [Unit] 节的参数说明:

  • Description - 服务描述
  • Documentation - 文档地址
  • Requires - 指定网络依赖
  • After - 指定网络服务必须在该服务之前启动
  • ConditionFileNotEmpty - 检查配置文件是否为空

下面是 [Service] 节的参数说明:

  • User, Group - 以 consul 用户和组来运行 Consul
  • ExecStart - 用 agent 命令启动并制定配置文件目录
  • ExecReload - 服务重新加载的执行指令
  • KillMode - 把 Consul 当成单个进程
  • Restart - 如果异常退出就重新启动进行
  • LimitNOFILE - 限制文件描述符数量

下面是 [Install] 节的参数说明:

  • WantedBy - 为多用户运行级别创建弱依赖

配置 Consul (server)

Consul 使用该文档的默认配置,自定义的配置可以从多个文件中读取,参见文档了解配置是如何加载和覆盖默认值的。

Consul server agent 需要的配置是 client agent 的超集。我们用 consul.hcl 表示普通 Consul 配置文件,用 server.hcl 表示 server agent 的配置。

通常配置

创建一个配置文件 /etc/consul.d/consul.hcl:

sudo mkdir --parents /etc/consul.d
sudo touch /etc/consul.d/consul.hcl
sudo chown --recursive consul:consul /etc/consul.d
sudo chmod 640 /etc/consul.d/consul.hcl

向 consul.hcl 加入如下配置:

提示 datacenter 参数标识该集群所在的数据中心。encrypt 参数用 consul keygen 的输出来替换,而且每台机器配置都要保持一致。

datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "Luj2FZWwlt8475wD1WtwUQ=="
  • datacenter - agent 所在的数据中心。
  • data_dir - agent 存储状态的目录。
  • encrypt - Consul 网络通信的加密密钥。

自动加入集群

retry_join 参数可以通过 DNS 地址、IP 地址或云机制,通过一个 Consul server配置集群里所有 Consul agent,而不需要手动加入这些节点了。

该参数可以写到 consul.hcl 配置里:

提示 可以用 DNS 地址、IP 地址或者云服务自动加入标识来配置 retry_join 参数。

retry_join = ["172.16.0.11"]
  • retry_join - 要加入的集群某个 agent 的地址。

Server 配置

创建配置文件 /etc/consul.d/server.hcl

sudo mkdir --parents /etc/consul.d
sudo touch /etc/consul.d/server.hcl
sudo chown --recursive consul:consul /etc/consul.d
sudo chmod 640 /etc/consul.d/server.hcl

按如下修改 server.hcl:
提示 bootstrap_expect 是你要用的 server 数,推荐 3 或 5。

server = true
bootstrap_expect = 2
  • server - 表示该 agent 运行在 server 模式还是 client 模式。
  • bootstrap-expect - 表示该数据中心有多少 server 节点。集群中的所有 server 节点的该字段都应一致。

Consul UI

Consul 提供了基于 Web 的用户界面,可以在上面查看所有服务、节点和 Intention,比使用 CLI 或者 API 方便得多。

提示 你应该选择一台服务器来提供 Consul UI 服务。

将 UI 选项加入 server.hcl 即可启用 Consul UI:

ui = true

配置 Consul (client)

Consul client agent 的配置其实是 server 的一个子集,参见前面配置一下 consul.hcl 就可以了。其他特殊配置,也只需要逐一写配置文件即可。

启动 Consul

使用 systemctl 来添加和启用 Consul 服务。也可以用 systemctl 查看 Consul 服务状态:

sudo systemctl enable consul
sudo systemctl start consul
sudo systemctl status consul

或者s

consul agent -server -bind=0.0.0.0 -client=0.0.0.0  -config-dir=/etc/consul.d/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值