Others--Consul服务学习01

发布时间 2023-06-15 19:51:23作者: TeyGao

服务器信息


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

测试结果:能实现秒级域名变更刷新。