Others--Consul服务学习01
服务器信息
Consul Server: 172.16.188.208
App Server: 172.16.188.209
安装Consul
在Consul服务器上执行:
## 下载
wget https://releases.hashicorp.com/consul/1.15.3/consul_1.15.3_linux_amd64.zip
## 解压
unzip consul_1.15.3_linux_amd64.zip
## 创建目录
mkdir -p /tools/consul/data/ /tools/consul/ui/ /tools/consul/et/ /tools/consul/bin/
## 将consul文件移到/tools/consul/bin/ 目录
mv consul /tools/consul/bin/
## 启动服务
## agent -server 表示将consul以Server形式运行
## -bootstrap-expect 1 表示单个consul服务也能提供服务
## -bind=172.16.188.208 表示绑定的IP地址
## -client 0.0.0.0 表示监听所有IP请求, 默认为127.0.0.1(仅监听本地请求)
/tools/consul/bin/consul agent -server -bootstrap-expect 1 -data-dir /tools/consul/data/ -config-dir=./etc/ -ui-dir=/tools/consul/ui/ -node=s1 -bind=172.16.188.208 -client 0.0.0.0 -rejoin &
安装dnsmasq
在Consul服务器上执行:
## 安装dnsmasq
yum -y install dnsmasq
## 修改dnsmasq配置
echo "server=/consul/172.16.188.208#8600" > /etc/dnsmasq.d/resolv.conf
## 启动dnsmasq服务
systemctl start dnsmasq
服务dnsmasq使用Consul服务器有DNS服务功能,并且将内部consul域名解析交由consul服务处理。
创建服务
在Consul服务器上执行,增加服务:
curl -X PUT -d '{"Datacenter": "dc1", "Node": "c2", "Address": "172.16.188.211", "Service": {"Service": "mysql-test-3306", "tags": ["mysql"], "Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register
调整服务的IP指向:
curl -X PUT -d '{"Datacenter": "dc1", "Node": "c2", "Address": "172.16.188.211", "Service": {"Service": "mysql-test-3306", "tags": ["mysql"], "Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register
使用"Service": "mysql-test-3306"
来定于服务名称,而完整的服务域名为:mysql-test-3307.service.consul
调整DNS解析
在App服务器上执行:
# 设置nameserver
echo "nameserver 172.16.188.208" > /etc/resolv.conf
/etc/resolv.conf是DNS客户机的配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。
将DNS服务器的IP地址指向Consul服务器,这样域名解析请求会路由到Consul服务器。
测试DNS解析:
while [[ 1==1 ]]
do
addr_info=$(nslookup mysql-test-3307.service.consul |grep 'Address:' |tail -n 1)
echo "$(date "+%Y-%m-%d %H:%M:%S") mysql-test-3307: ${addr_info}"
sleep 1
done
测试结果:能实现秒级域名变更刷新。