基于 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

原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/11990806.html

时间: 2024-11-10 05:23:07

基于 DNS 动态发现方式部署 Etcd 集群的相关文章

基于已有集群动态发现方式部署 Etcd 集群

etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集群. 不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知道这几个节点的ip,从而无法使用--initial-cluster参数. 这个时候,你就需要使用discovery的方式来搭建etcd集群.discovery方式有两种:etcd discovery和DNS discovery. 这里我们先介绍下etcd discovery方式.这种启动方式依赖另外

部署etcd集群

部署etcd集群 第一步:先拉取etcd二进制压缩包 wget https://github.com/coreos/etcd/releases/download/v3.3.2/etcd-v3.3.2-linux-amd64.tar.gz //解压压缩包 tar zxvf etcd-v3.3.2-linux-amd64.tar.gz 第二步:建立一个文件,分别存放bin文件,cfg配置文件,ssl验证文件 mkdir /opt/kubernetes/{bin,cfg,ssl} //然后将etcd,

部署k8s ssl集群实践4:部署etcd集群

参考文档:https://github.com/opsnull/follow-me-install-kubernetes-cluster感谢作者的无私分享.集群环境已搭建成功跑起来.文章是部署过程中遇到的错误和详细操作步骤记录.如有需要对比参考,请按照顺序阅读和测试. 4.1下载和分发二进制安装包 [[email protected] kubernetes]# wget https://github.com/coreos/etcd/releases/download/v3.3.7/etcd-v3

k8s部署etcd集群

1.k8s部署高可用etcd集群时遇到了一些麻烦,这个是自己其中一个etcd的配置文件 例如: [Unit] Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target Documentation=https://github.com/coreos [Service] User=k8s Type=notify WorkingDirectory=/var/l

CentOS 部署Etcd集群

一.环境介绍 操作系统信息:CentOS 7 64位 服务器信息: 192.168.80.130  Etcd-master 192.168.80.131  Etcd-node1 192.168.80.132  Etcd-node2 二.部署前准备 1.设置免密登录   [Master] [[email protected] ~]# ssh-keygen [[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub Etcd-node1 [

在CentOS6.6上以replSet方式部署MongoDB集群

部署方式在3台centos6.6系统上以Replica Set方式部署mongodb3.0.2集群. 官方参考资料: http://docs.mongodb.org/manual/tutorial/deploy-replica-set/ http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ 集群的IP地址分配# node01: 192.168.35.173(PRIMARY node)# node02: 192.16

kubernetes容器集群部署Etcd集群

安装etcd 二进制包下载地址:https://github.com/etcd-io/etcd/releases/tag/v3.2.12 [[email protected] ~]# GOOGLE_URL=https://storage.googleapis.com/etcd [[email protected] ~]# GITHUB_URL=https://github.com/coreos/etcd/releases/download [[email protected] ~]# DOWNL

kubernetes 基础-安装部署etcd集群

HDSS7-200上: ~]# wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/bin/cfssl ~]# wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/bin/cfssl-json ~]# wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/bin/cfssl-cert

kubernetes部署etcd集群

部署环境: CentOS Linux release 7.2 64位 10.10.0.103 etcd master 10.10.0.49   etcd follower master安装过程: # yum update # yum install -y etcd # [member] ETCD_NAME=etcd1 ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #ETCD_WAL_DIR="" #ETCD_SNAPSHOT_