开始部署之前,建议先按照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 |
---|---|
node01 | 10.10.10.5 |
node02 | 10.10.10.4 |
node03 | 10.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
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。
我是阿晨,在技术的道路上我们一起砥砺前行!