阿晨的运维笔记 | Ubuntu部署Consul集群

1,154 阅读2分钟

开始部署之前,建议先按照Ubuntu切换到国内镜像源操作一下,能省下大把宝贵时间!

单机部署

老规矩,我们先从单机部署开始,练练手

sudo mkdir -p /data/consul/{current/{bin,etc},data}
sudo wget https://releases.hashicorp.com/consul/1.10.1/consul_1.10.1_linux_amd64.zip -O /data/consul/consul_1.10.1_linux_amd64.zip
sudo apt-get install unzip
sudo unzip /data/consul/consul_1.10.1_linux_amd64.zip -d /data/consul/current/bin
sudo vim /data/consul/current/etc/consul.json
{
    "bootstrap": true,
    "datacenter": "test-datacenter",
    "data_dir": "/data/consul/data",
    "log_level": "INFO",
    "server": true,
    "client_addr": "0.0.0.0",
    "ui": true,
    "start_join": ["ip:8301"],
    "enable_syslog": true
}
## 更多参考:https://www.consul.io/docs/agent/options.html#configuration_files

sudo ln -s /data/consul/current/etc /data/consul/etc

sudo vi /etc/systemd/system/consul.service
[Unit]
Description=consul service
[Service]
ExecStart=/data/consul/current/bin/consul agent -bind={ip} -config-dir /data/consul/etc/consul.json
User=root
[Install]
WantedBy=multi-user.target

sudo systemctl enable consul.service
sudo systemctl start consul.service

访问http://localhost:8500就可以打开Consul管理界面了,界面做的还是很不错滴!养眼

Consul集群

Consul集群是经典的server-agent架构,而且支持多server模式,真正做到了高可用。

在使用微服务的小伙伴,不妨尝试下consul作为注册中心,你会有意想不到的惊喜哦!

为了便于理解,使用1server-2agent进行演示。

主机ip
node0110.10.10.5
node0210.10.10.4
node0310.10.10.6
# 安装都是一样,分别在node01 node02 node03安装好consul
sudo mkdir -p /data/consul/{current/{bin,etc},data}
sudo wget https://releases.hashicorp.com/consul/1.10.1/consul_1.10.1_linux_amd64.zip -O /data/consul/consul_1.10.1_linux_amd64.zip
sudo apt-get install unzip
sudo unzip /data/consul/consul_1.10.1_linux_amd64.zip -d /data/consul/current/bin
sudo vi /data/consul/current/etc/consul.json
{
    "datacenter": "roc-datacenter",
    "data_dir": "/data/consul/data",
    "log_level": "INFO",
    "server": true,
    "bootstrap_expect": 3,
    "client_addr": "10.10.10.4",
    "ui": true,
    "start_join": ["10.10.10.4:8301","10.10.10.5:8301","10.10.10.6:8301"],
    "enable_syslog": true
}
## 更多参考:https://www.consul.io/docs/agent/options.html#configuration_files

sudo ln -s /data/consul/current/etc /data/consul/etc

sudo vi /etc/systemd/system/consul.service
[Unit]
Description=consul service
[Service]
ExecStart=/data/consul/current/bin/consul agent -config-dir /data/consul/etc/consul.json
User=root
[Install]
WantedBy=multi-user.target

sudo systemctl enable consul.service
sudo systemctl start consul.service

关闭防火墙,或者在内网开放端口:8300, 8301, 8500,如果网络不通,则子节点将无法join到主节点,可能会出现

failed to sync remote state: No cluster leader

无法选举出leader,其实是节点之间无法通信,如果通信正常,启动之时所有节点会自动推举出leader

常用命令

sudo systemctl start consul.service
sudo systemctl stop consul.service
sudo systemctl restart consul.service

## 更多参考:https://www.consul.io/docs/commands/index.html

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

image-20210723185904932

我是阿晨,在技术的道路上我们一起砥砺前行!