一.前言
1. Consul架构
consul是分布式、高可用的系统,下图是单数据中心的部署架构
2. Consul特性
- 服务发现:解决在分布式环境中,如何找到可用的服务地址的问题,支持通过DNS和HTTP查询服务地址。
- 健康检查:定时监控服务是否正常,对于异常的服务会主动下线
- 键值存储:配置中心解决方案,是一种key/value存储结构,区别就是key是以目录树结构形式组织的,可以用来存储系统配置信息
- 多数据中心:支持多数据中心部署
二.单机
1.安装Consul,本人比较喜欢用systemctl命令所有用官网的方式
yum install -y yum-utils
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum -y install consul
2.查看Consul是否安装成功
consul version
3.创建数据文件夹,修改权限
mkdir /usr/local/consul
cd /usr/local/consul
chmod 777 /usr/local/consul
4.配置Consul
vim /etc/consul.d/consul.hcl
# 数据目录
data_dir = "//usr/local/consul"
# 指定客户端访问的IP,0.0.0.0不限制客户端IP
client_addr = "0.0.0.0"
# 开启UI
ui_config{
enabled = true
}
# Agent以服务端模式启动(注册中心)
server = true
# 监听所有地址,如果纯在多个网卡必须写死ip,否则可以写0.0.0.0
bind_addr = "0.0.0.0"
# 部署1个server节点
bootstrap_expect=1
5.启动Consul
systemctl start consul
netstat -lntup
# 排查错误日志
journalctl -u consul
6.访问Consul
http://ip:8500
7.基本命令
#查询集群节点
consul members
#重新加载配置文件
consul reload
#优雅关闭节点
consul leave
#查询所有注册的服务
consul catalog services
#加入集群
consul join 192.168.4.130
三.Consul集群部署
1.集群部署环境准备
序号 | IP地址 | 操作系统 | 主机名 |
---|---|---|---|
1 | 192.168.4.130 | CentOS 7 | host-consul1 |
2 | 192.168.4.131 | CentOS 7 | host-consul2 |
3 | 192.168.4.132 | CentOS 7 | host-consul3 |
2.主机名配置(所有节点执行)
[root@localhost ~]# hostnamectl set-hostname host-consul1
[root@localhost ~]# hostnamectl set-hostname host-consul2
[root@localhost ~]# hostnamectl set-hostname host-consul3
3.安装Consul(所有节点执行)
yum install -y yum-utils
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum -y install consul
4.查看Consul是否安装成功(所有节点执行)
consul version
5.配置Consul(所有server节点执行)
vi /etc/consul.d/consul.hcl
#数据中心名称
datacenter = "consul-cluster"#数据目录
data_dir = "/uer/local/consul"#指定客户端访问的IP,0.0.0.0不限制客户端IP
client_addr = "0.0.0.0"#开启UI
ui_config{
enabled = true
}# Agent以服务端模式启动(注册中心)
server = true#监听所有地址
bind_addr = "0.0.0.0"#部署3个server节点
bootstrap_expect=3
6.启动Consul(所有节点执行)
systemctl start consul
netstat -lntup
7.指定主节点(所有server节点执行)
consul join 192.168.4.130