本文介绍在Ubuntu 18.04、Ubuntu 16.04系统上安装及设置Consul Service Discovery cluster(Consul集群)的详细方法。
简介 Consul是一个开源,分布式和高可用性解决方案,用于服务发现,配置和分段功能。 你可以根据需要单独使用每个Consul功能,也可以一起使用它们来构建全方位服务网格解决方案,它附带一个简单的内置代理,因此一切都可以开箱即用,但也支持第三方代理集成,如Envoy。
在Ubuntu 18.04上下载并安装Consul 我有三个节点用于此部署,节点名称及IP地址如下:
在所有三个节点上安装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:
要验证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
输出显示集群中的地址,运行状况,集群中的角色以及每个节点的consul版本,你可以通过提供-detailed标志来获取其他元数据。
访问Consul UI的方法 你可以使用URL:http://<consul-IP>:8500/ui访问Consul内置Web界面:
活动节点列表:
检查节点:
至此,你已经成功安装了consul并在Ubuntu 18.04、Ubuntu 16.04系统上引导了一个三节点Consul集群。
相关主题 |