Consul 集群搭建

本文详细介绍了如何在Linux环境下搭建Consul集群,包括从下载、配置环境变量到启动多个Server和Client Agent,以及检查集群是否启动成功。文章还提到了配置文件的结构和启动参数的解释,帮助读者理解Consul集群的部署过程。

一、安装 Consul

1、官网下载

Consul的官网下载地址:Install | Consul | HashiCorp Developer ,下载后解压就是一个可执行的二进制文件consul。建议使用我们自己制作好的 Consul 的压缩包,解压后包含了所有的文件,可直接使用。

2、配置环境变量;

3、检查 Consul 是否可用:

[root@localhost ~]# consul
Usage: consul [--version] [--help]  []

Available commands are:
agent          Runs a Consul agent
catalog        Interact with the catalog
event          Fire a new event
exec           Executes a command on Consul nodes
force-leave    Forces a member of the cluster to enter the "left" state
info           Provides debugging information for operators.
join           Tell Consul agent to join cluster
keygen         Generates a new encryption key
keyring        Manages gossip layer encryption keys
kv             Interact with the key-value store
leave          Gracefully leaves the Consul cluster and shuts down
lock           Execute a command holding a lock
maint          Controls node or service maintenance mode
members        Lists the members of a Consul cluster
monitor        Stream logs from a Consul agent
operator       Provides cluster-level tools for Consul operators
reload         Triggers the agent to reload configuration files
rtt            Estimates network round trip time between nodes
snapshot       Saves, restores and inspects snapshots of Consul server state
validate       Validate config files/directories
version        Prints the Consul version
watch          Watch for changes in Consul

[root@localhost ~]#

如果出现上面这样代表consul是没问题的。

二、启动 Consul 第一个Server Agent

1、启动脚本

consul agent -server -ui -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &

2、配置文件 consul.d/agent-config.json 内容如下:

{
        "ports": {
                "dns": 8600,
                "http": 8500,
                "serf_lan": 8301,
                "serf_wan": 8302,
                "server": 8303
        },
        "bootstrap_expect": 3,
        "bind_addr": "192.168.10.218",
        "client_addr": "192.168.10.218",
        "data_dir": "/app/newgetui/consul/consul_1.0.1_linux_amd64/data",
        "datacenter": "dc1",
        "node_name": "consul-agent-1",
        "enable_script_checks": true
}

三、启动 Consul 第二个Server Agent

1、启动脚本

consul agent -server -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &

2、配置文件 consul.d/agent-config.json 内容如下:

{
        "ports": {
                "dns": 8600,
                "http": 8500,
                "serf_lan": 8301,
                "serf_wan": 8302,
                "server": 8303
        },
        "bootstrap_expect": 3,
        "bind_addr": "192.168.10.221",
        "client_addr": "192.168.10.221",
        "retry_join": [
                "192.168.10.218"
        ],
        "data_dir": "/app/newgetui/consul/consul_1.0.1_linux_amd64/data",
        "datacenter": "dc1",
        "node_name": "consul-agent-2",
        "enable_script_checks": true
}

四、启动 Consul 第三个Server Agent

1、启动脚本

consul agent -server -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &

2、配置文件 consul.d/agent-config.json 内容如下:

{
        "ports": {
                "dns": 8600,
                "http": 8500,
                "serf_lan": 8301,
                "serf_wan": 8302,
                "server": 8303
        },
        "bootstrap_expect": 3,
        "bind_addr": "192.168.10.222",
        "client_addr": "192.168.10.222",
        "retry_join": [
                "192.168.10.218"
        ],
        "data_dir": "/app/newgetui/consul/consul_1.0.1_linux_amd64/data",
        "datacenter": "dc1",
        "node_name": "consul-agent-3",
        "enable_script_checks": true
}

五、检查Consul Server集群是否启动成功

[root@DevGETUI-1 log]#  consul members -http-addr=192.168.10.218:8500
Node     Address              Status  Type    Build  Protocol  DC   Segment
agent-1  192.168.10.142:8301  alive   server  1.0.1  2         dc1  
agent-2  192.168.10.221:8301  alive   server  1.0.1  2         dc1  
agent-3  192.168.10.218:8301  alive   server  1.0.1  2         dc1  
[root@DevGETUI-1 log]#

如果出现类似上面的信息说明 Consul 集群启动成功。

浏览器访问http://192.168.10.218:8500/可以看到页面。

六、启动Consul client Agent

1、Consul client Agent 的部署规则是使用到 Consul 的模块就要在该机器上部署一个 client Agent。

2、启动脚本:

consul agent -config-dir=/app/newgetui/consul/consul_1.0.1_linux_amd64/consul.d > /app/newgetui/consul/consul_1.0.1_linux_amd64/log/consul.log 2>&1 &

3、配置文件 consul.d/agent-config.json 内容如下:

{
        "ports": {
                "dns": 8600,
                "http": 8500,
                "serf_lan": 8301,
                "serf_wan": 8302,
                "server": 8303
        },
        "bind_addr": "192.168.10.142",
        "client_addr": "192.168.10.142",
        "retry_join": [
                "192.168.10.218"
        ],
        "data_dir": "/app/newgetui/consul/consul_1.0.1_linux_amd64/data",
        "datacenter": "dc1",
        "node_name": "consul-agent-client-1",
        "enable_script_checks": true
}

六、启动参数说明

-server:此选项用于控制agent是否处于服务器或客户端模式。提供时,agent将充当Consul服务器。 每个Consul集群必须至少有一个服务器,理想的情况是每个数据中心不超过5个。服务器充当其他数据中心的网关,并根据需要转发流量。

-ui:启用内置的Web UI服务器和所需的HTTP路由。

-bootstrap-expect:数据中心预期的服务器数量,配置此值时,Consul 会等待指定数量的服务器可用,然后引导集群、leader 自动选举。需要与-server 模式一起。

-bind:内部集群通信应该绑定的地址。 这是集群中所有其他节点都应该可以访问的IP地址。 默认情况下,这是“0.0.0.0”,这意味着Consul将绑定到本地计算机上的所有地址,并将第一个可用的私有IPv4地址通告给集群的其余部分。 如果有多个私有IPv4地址可用,Consul将在启动时退出并出现错误。 如果指定“[::]”,则Consul将公布第一个可用的公共IPv6地址。 如果有多个公共IPv6地址可用,则Consul将在启动时退出并出现错误。 Consul同时使用TCP和UDP,并使用相同的端口。 如果你有任何防火墙,一定要允许这两个协议。

-config-dir:要加载的配置文件的目录。Consul将加载后缀为“.json”的所有文件。 加载顺序是按字母顺序排列的。 这个选项可以多次指定加载多个目录。 config目录的子目录不被加载。

-data-dir:该选项为agent提供一个数据目录来存储状态。 这对于所有agent都是必需的。 该目录在重新启动时应该是持久的。 这对于在服务器模式下运行的agent尤其重要,因为它们必须能够保持集群状态。

-datacenter:此选项控制运行 Agent 的数据中心。 如果未提供,则默认为“dc1”。同一个数据中心内的节点应该在一个局域网上。

-dns-port:监听的DNS端口。这将覆盖默认端口8600。

-enable-script-checks:这将控制是否在此agent上启用执行脚本的运行状况检查,并且默认为false,因此操作员必须选择允许这些脚本。如果启用,建议启用ACL以控制哪些用户可以注册新的检查来执行脚本。

-http-port:要监听的HTTP API端口。这覆盖了默认端口8500.当将Consul部署到通过与HTTP端口进行通信的环境中时,该选项是非常有用的。

-retry-join:类似于-join,但允许在第一次尝试失败时重试连接。这对于知道地址最终可用的情况很有用。 该列表可以包含IPv4,IPv6或DNS地址。

-node:集群中此节点的名称。这在集群中必须是唯一的。默认情况下,这是机器的主机名。

七、配置的优先级顺序

1、命令行参数
2、环境变量
3、配置文件

当从文件目录加载配置文件时,按照字母的字典顺序加载配置文件。例如basic_config.json优先于extra_config.json的加载。配置文件内容格式支持.hcl或.json,文件必须带.hcl或.json的后缀名。

相同的配置后面的会覆盖前面的。

### 如何在两台服务器上设置和配置Consul集群 #### 准备工作 为了成功建立一个由两台服务器组成的Consul集群,每台服务器都需要安装并正确配置Consul软件。确保这两台服务器能够通过网络相互通信。 #### 安装Consul 在每一台目标机器上下载适合操作系统的Consul版本,并按照官方文档中的说明完成安装过程[^2]。 #### 配置文件设定 创建必要的目录用于存储数据以及任何自定义配置文件。例如,在Linux环境下可以使用如下命令来创建这些目录: ```bash sudo mkdir -p /data/consul ``` 对于每台作为服务器节点的机器而言,应该指定`-server`参数以表明其身份;同时利用`-bootstrap-expect`选项告知期望参与初始选举成为领导者成员的数量——在这个例子中为2,因为只有两个节点构成整个集群。 #### 启动第一个节点 (假设IP地址为 `10.100.110.72`) 启动首个Consul实例时需提供详细的启动参数,包括但不限于绑定接口(`-bind`)、监听所有客户端连接(`-client=0.0.0.0`)、持久化状态的数据路径(`/data/consul`)及唯一标识符(`-node`)等信息。此外还启用了Web UI界面方便管理和监控集群状况: ```bash consul agent -server -bootstrap-expect 2 \ -bind=10.100.110.72 \ -client=0.0.0.0 \ -data-dir=/data/consul \ -node=consul2 \ -ui ``` #### 加入第二个节点 (`10.100.110.73`) 同样的方式启动另一个Consul代理进程,但是这次要让它加入到已存在的集群当中去。这可以通过省略`-bootstrap-expect`标志实现自动发现现有集群的功能,而不需要再次尝试初始化新的集群结构。其余部分保持一致即可: ```bash consul agent -server \ -bind=10.100.110.73 \ -client=0.0.0.0 \ -data-dir=/data/consul \ -node=consul3 \ -ui \ -join=10.100.110.72 ``` 上述命令会使得新启动的服务端点主动寻找位于同一局域网内具有相同标签名(即`consul2`)的第一个节点并与之形成分布式系统的一部分。 #### 测试集群功能 当所有的服务端都已经正常运行之后,就可以测试它们之间的通信情况了。可以在任意一台主机上面执行下面这条指令查看当前在线成员列表及其健康状态: ```bash consul members ``` 如果一切顺利的话,则意味着已经成功构建了一个简单的双机Consul集群环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行业报告

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值