zoukankan      html  css  js  c++  java
  • 基于 DNS 动态发现方式部署 Etcd 集群

    使用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.comxxxxxxxxxx7 1$ vim /etc/dnsmasq.hosts23#增加内容如下45192.168.2.210 etcd1.hi-linux.com6192.168.2.211 etcd2.hi-linux.com7192.168.2.212 etcd3.hi-linux.com$ vim /etc/dnsmasq.hosts#增加内容如下192.168.2.210 etcd1.hi-linux.com192.168.2.211 etcd2.hi-linux.com192.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

  • 相关阅读:
    Python 学习日记 第七天
    Python 学习日记 第六天
    Python 学习日记 第五天
    Python 学习日记 第四天
    Redis 中的数据类型及基本操作
    Asp.net mvc 中View 的呈现(二)
    Asp.net mvc 中View的呈现(一)
    Asp.net mvc 中Action 方法的执行(三)
    Asp.net mvc 中Action 方法的执行(二)
    Asp.net mvc 中Action 方法的执行(一)
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/11990806.html
Copyright © 2011-2022 走看看