• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

基于DNS动态发现方式部署etcd集群

Docker 蜷缩的蜗牛 4个月前 (06-22) 175次浏览 已收录

使用 discovery 的方式来搭建 etcd 集群方式有两种:etcd discoveryDNS discovery。在 「基于已有集群动态发现方式部署 etcd 集群」一文中讲解了etcd discovery这种方式,今天我们就来讲讲DNS discovery这种方式的实现。

etcd 在基于 DNS 做服务发现时,实际上是利用 DNS 的 SRV 记录不断轮训查询实现的。DNS SRV是 DNS 数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单信息。

本文采用dnsmasq作为dns服务器,关于dnsmasq搭建可参考 「利用 Dnsmasq 部署 DNS 服务」。

创建 DNS 记录

  • 增加 DNS SRV 记录
$ vim /etc/dnsmasq.conf

#增加内容如下

srv-host=_etcd-server._tcp.hi-linux.com,etcd1.hi-linux.com,2380,0,100
srv-host=_etcd-server._tcp.hi-linux.com,etcd2.hi-linux.com,2380,0,100
srv-host=_etcd-server._tcp.hi-linux.com,etcd3.hi-linux.com,2380,0,100
  • 增加对应的域名解析
$ vim /etc/dnsmasq.hosts

#增加内容如下

192.168.2.210 etcd1.hi-linux.com
192.168.2.211 etcd2.hi-linux.com
192.168.2.212 etcd3.hi-linux.com
  • 重启 dnsmasq
$ systemctl restart dnsmasq
  • 测试是否成功
# 查询 SRV 记录

$ dig @192.168.2.210 +noall +answer SRV _etcd-server._tcp.hi-linux.com

_etcd-server._tcp.hi-linux.com. 0 IN SRV 0 100 2380 etcd2.hi-linux.com.
_etcd-server._tcp.hi-linux.com. 0 IN SRV 0 100 2380 etcd1.hi-linux.com.
_etcd-server._tcp.hi-linux.com. 0 IN SRV 0 100 2380 etcd3.hi-linux.com.
# 查询域名解析结果

$ dig @192.168.2.210 +noall +answer etcd1.hi-linux.com etcd2.hi-linux.com etcd3.hi-linux.com

etcd1.hi-linux.com. 0 IN A 192.168.2.210
etcd2.hi-linux.com. 0 IN A 192.168.2.211
etcd3.hi-linux.com. 0 IN A 192.168.2.212
  • 修改 DNS 服务器

Linux 系统默认从/etc/resolv.conf配置文件读取 DNS 服务器,为了让 etcd 能够从dnsmasq服务器获取自定义域名解析,要修改三台 etcd 服务器的/etc/resolv.conf文件。

# 编辑 resolv.conf 文件
# 文件内容如下,保证我们自定义的 dnsmasq 服务器在第一位

$ vim /etc/resolv.conf
nameserver 192.168.2.210

配置 etcd

  • 修改 etcd 配置文件

开启 DNS 服务发现,主要是删除掉ETCD_INITIAL_CLUSTER字段(用于静态服务发现),并指定DNS SRV域名(ETCD_DISCOVERY_SRV)

这里以 etcd1 节点为例(etcd2、etcd3 同理):

$ vim /opt/etcd/config/etcd.conf

ETCD_NAME=etcd1
ETCD_DATA_DIR="/var/lib/etcd/etcd1"
ETCD_LISTEN_PEER_URLS="http://etcd1.hi-linux.com:2380"
ETCD_LISTEN_CLIENT_URLS="http://etcd1.hi-linux.com:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://etcd1.hi-linux.com:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="hilinux-etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd1.hi-linux.com:2379,http://etcd1.hi-linux.com:4001"
ETCD_DISCOVERY_SRV="hi-linux.com"
  • 测试 etcd 集群

按上面配置好各集群节点后,分别在各节点启动 etcd。

$ systemctl start etcd

启动完成后,执行以下命令查看集群成员:

$ etcdctl --endpoints "http://etcd1.hi-linux.com:2379" member list
1da4b0d74a9ecfff: name=etcd2 peerURLs=http://etcd2.hi-linux.com:2380 clientURLs=http://etcd2.hi-linux.com:2379,http://etcd2.hi-linux.com:4001 isLeader=false
7dd139e539054326: name=etcd1 peerURLs=http://etcd1.hi-linux.com:2380 clientURLs=http://etcd1.hi-linux.com:2379,http://etcd1.hi-linux.com:4001 isLeader=true
a12d567c7c7f2e2b: name=etcd3 peerURLs=http://etcd3.hi-linux.com:2380 clientURLs=http://etcd3.hi-linux.com:2379,http://etcd3.hi-linux.com:4001 isLeader=false

更多集群使用方法可参考「通过静态发现方式部署 etcd 集群」一文。

参考文档

http://www.google.com
http://t.cn/RXUCXYD
http://t.cn/RXUCoVR

本文转载自 基于 DNS 动态发现方式部署 etcd 集群


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明基于 DNS 动态发现方式部署 etcd 集群
喜欢 (1)
[]
分享 (0)