云网牛站
所在位置:首页 > Linux云服务器 > 在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

2019-02-05 21:33:30作者:曾秀珠稿源:云网牛站

本文介绍在Ubuntu 18.04、Ubuntu 16.04系统上安装及设置Consul Service Discovery cluster(Consul集群)的详细方法。

 

简介

Consul是一个开源,分布式和高可用性解决方案,用于服务发现,配置和分段功能。

你可以根据需要单独使用每个Consul功能,也可以一起使用它们来构建全方位服务网格解决方案,它附带一个简单的内置代理,因此一切都可以开箱即用,但也支持第三方代理集成,如Envoy。

Consul入门:实现分布式系统的服务发现与配置

 

在Ubuntu 18.04上下载并安装Consul

我有三个节点用于此部署,节点名称及IP地址如下:

在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

在所有三个节点上安装Consul,本文采用consul 1.4.2版本:

wget https://releases.hashicorp.com/consul/1.4.2/consul_1.4.2_linux_amd64.zip

提取文件:

unzip consul_1.4.2_linux_amd64.zip

将提取的consul二进制文件移动到/usr/local/bindirectory:

sudo mv consul /usr/local/bin/

要看consul帮助页面,请使用--help命令,即consul --help:

在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

要验证Consul是否已正确安装,请在你的系统上运行consul -v命令:

# consul -v

Consul v1.4.2

 

引导并启动Consul Cluster

由于我们有三个节点可用于Consul集群设置,我们将逐个引导,如果要进行单节点Consul设置,可以跳过其他两个。

创建一个consul系统用户/组:

sudo groupadd --system consul

sudo useradd -s /sbin/nologin --system -g consul consul

创建consul数据目录并将所有权设置为consul用户:

sudo mkdir -p /var/lib/consul

sudo chown -R consul:consul /var/lib/consul

sudo chmod -R 775 /var/lib/consul

创建Consul配置目录:

sudo mkdir /etc/consul.d

sudo chown -R consul:consul /etc/consul.d

设置DNS或编辑/etc/hosts文件以配置所有服务器的主机名(在所有节点上设置):

$ sudo vim /etc/hosts

192.168.18.40 consul-01.example.com consul-01

192.168.18.41 consul-02.example.com consul-02

192.168.18.42 consul-03.example.com consul-03

将example.com替换为你的实际域名。

 

Bootstrap Consul第一个节点 - consul-01

1、对于单个节点Consul:

对于单个服务器Consul设置,在/etc/systemd/system/consul.service中创建一个系统服务文件,其中包含以下内容:

[Unit]

Description=Consul Service Discovery Agent

Documentation=https://www.consul.io/

After=network-online.target

Wants=network-online.target

[Service]

Type=simple

User=consul

Group=consul

ExecStart=/usr/local/bin/consul agent -server -ui \

 -advertise=192.168.18.40 \

 -bind=192.168.18.40 \

 -data-dir=/var/lib/consul \

 -node=consul-01 \

 -config-dir=/etc/consul.d

ExecReload=/bin/kill -HUP $MAINPID

KillSignal=SIGINT

TimeoutStopSec=5

Restart=on-failure

SyslogIdentifier=consul

[Install]

WantedBy=multi-user.target

Where:

192.168.18.40是节点的IP地址。

-server选项:将代理切换到服务器模式。

-advertise:设置要使用的广告地址。

-ui:启用内置静态Web UI服务器。

-node:此节点的名称,在群集中必须是唯一的。

-data-dir:存储代理状态的数据目录的路径

2、对于三节点集群:

创建一个systemd服务文件/etc/systemd/system/consul.service并添加:

[Unit]

Description=Consul Service Discovery Agent

Documentation=https://www.consul.io/

After=network-online.target

Wants=network-online.target

[Service]

Type=simple

User=consul

Group=consul

ExecStart=/usr/local/bin/consul agent \

 -node=consul-01 \

 -config-dir=/etc/consul.d

ExecReload=/bin/kill -HUP $MAINPID

KillSignal=SIGINT

TimeoutStopSec=5

Restart=on-failure

SyslogIdentifier=consul

[Install]

WantedBy=multi-user.target

生成Consul secret:

consul keygen

然后在/etc/consul.d/config.json中为节点创建一个json配置文件:

{

"advertise_addr": "192.168.18.40",

"bind_addr": "192.168.18.40",

"bootstrap_expect": 3,

"client_addr": "0.0.0.0",

"datacenter": "KE-DC",

"data_dir": "/var/lib/consul",

"domain": "consul",

"enable_script_checks": true,

"dns_config": {

"enable_truncate": true,

"only_passing": true

},

"enable_syslog": true,

"encrypt": "bnRHLmJ6TeLomirgEOWP2g==",

"leave_on_terminate": true,

"log_level": "INFO",

"rejoin_after_leave": true,

"retry_join": [

"consul-01",

"consul-02",

"consul-03"

],

"server": true,

"start_join": [

"consul-01",

"consul-02",

"consul-03"

],

"ui": true

}

将所有出现的192.168.18.40替换为此节点的正确IP地址和使用生成的密码加密的值,你需要为短DNS名称(consul-01,consul-02和consul-03)配置DNS或主机文件才能工作。

 

Bootstrap Consul第二个和第三个节点

1、Consul节点2

Consul系统服务:

# cat /etc/systemd/system/consul.service 

[Unit]

Description=Consul Service Discovery Agent

Documentation=https://www.consul.io/

After=network-online.target

Wants=network-online.target

[Service]

Type=simple

User=consul

Group=consul

ExecStart=/usr/local/bin/consul agent \

 -node=consul-02 \

 -config-dir=/etc/consul.d

ExecReload=/bin/kill -HUP $MAINPID

KillSignal=SIGINT

TimeoutStopSec=5

Restart=on-failure

SyslogIdentifier=consul

[Install]

WantedBy=multi-user.target

Consul json配置文件:

# cat /etc/consul.d/config.json 

{

"advertise_addr": "192.168.18.41",

"bind_addr": "192.168.18.41",

"bootstrap_expect": 3,

"client_addr": "0.0.0.0",

"datacenter": "KE-DC",

"data_dir": "/var/lib/consul",

"domain": "consul",

"enable_script_checks": true,

"dns_config": {

"enable_truncate": true,

"only_passing": true

},

"enable_syslog": true,

"encrypt": "bnRHLmJ6TeLomirgEOWP2g==",

"leave_on_terminate": true,

"log_level": "INFO",

"rejoin_after_leave": true,

"retry_join": [

"consul-01",

"consul-02",

"consul-03"

],

"server": true,

"start_join": [

"consul-01",

"consul-02",

"consul-03"

],

"ui": true

}

2、Consul节点3

Consul系统服务:

# cat /etc/systemd/system/consul.service 

[Unit]

Description=Consul Service Discovery Agent

Documentation=https://www.consul.io/

After=network-online.target

Wants=network-online.target

[Service]

Type=simple

User=consul

Group=consul

ExecStart=/usr/local/bin/consul agent \

 -node=consul-03 \

 -config-dir=/etc/consul.d

ExecReload=/bin/kill -HUP $MAINPID

KillSignal=SIGINT

TimeoutStopSec=5

Restart=on-failure

SyslogIdentifier=consul

[Install]

WantedBy=multi-user.target

Consul json配置文件:

# cat /etc/consul.d/config.json 

{

"advertise_addr": "192.168.18.42",

"bind_addr": "192.168.18.42",

"bootstrap_expect": 3,

"client_addr": "0.0.0.0",

"datacenter": "KE-DC",

"data_dir": "/var/lib/consul",

"domain": "consul",

"enable_script_checks": true,

"dns_config": {

"enable_truncate": true,

"only_passing": true

},

"enable_syslog": true,

"encrypt": "bnRHLmJ6TeLomirgEOWP2g==",

"leave_on_terminate": true,

"log_level": "INFO",

"rejoin_after_leave": true,

"retry_join": [

"consul-01",

"consul-02",

"consul-03"

],

"server": true,

"start_join": [

"consul-01",

"consul-02",

"consul-03"

],

"ui": true

}

在所有节点上启动consul服务:

sudo systemctl start consul

启用服务以在启动时启动:

sudo systemctl enable consul

检查集群成员:

# consul members

在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

输出显示集群中的地址,运行状况,集群中的角色以及每个节点的consul版本,你可以通过提供-detailed标志来获取其他元数据。

 

访问Consul UI的方法

你可以使用URL:http://<consul-IP>:8500/ui访问Consul内置Web界面:

在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

活动节点列表:

在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

检查节点:

在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法

至此,你已经成功安装了consul并在Ubuntu 18.04、Ubuntu 16.04系统上引导了一个三节点Consul集群。

 

相关主题

Consul集群部署:实现分布式系统的服务发现与配置

精选文章
热门文章