基于 DNS 动态发现方式部署 Etcd 集群
使用discovery的方式来搭建etcd集群方式有两种:etcd discovery
和DNS 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
基于 DNS 动态发现方式部署 Etcd 集群的更多相关文章
- 基于已有集群动态发现方式部署 Etcd 集群
etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集群. 不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知 ...
- 通过静态发现方式部署 Etcd 集群
在「etcd使用入门」一文中对etcd的基本知识点和安装做了一个简要的介绍,这次我们来说说如何部署一个etcd集群. etcd构建自身高可用集群主要有三种形式: 静态发现: 预先已知etcd集群中有哪 ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复
目录 一.系统环境 二.前言 三.etcd数据库 3.1 概述 四.安装部署etcd单节点 4.1 环境介绍 4.2 配置节点的基本环境 4.3 安装部署etcd单节点 4.4 使用客户端访问etcd ...
- 使用二进制文件部署Etcd集群
Etcd 是一个分布式键值存储系统,Kubernetes使用Etcd进行数据存储,所以先准备一个Etcd数据库,为解决Etcd单点故障,应采用集群方式部署,这里使用3台组建集群,可容忍1台机器故障,当 ...
- 部署etcd集群
部署etcd集群 第一步:先拉取etcd二进制压缩包 wget https://github.com/coreos/etcd/releases/download/v3.3.2/etcd-v3.3.2- ...
- 2、二进制安装K8s 之 部署ETCD集群
二进制安装K8s 之 部署ETCD集群 一.下载安装cfssl,用于k8s证书签名 二进制包地址:https://pkg.cfssl.org/ 所需软件包: cfssl 1.6.0 cfssljson ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第02章 - 部署etcd集群
文章目录 1.2.部署etcd集群 1.2.0.下载etcd二进制文件 1.2.1.创建etcd证书和私钥 1.2.2.生成etcd证书和私钥 1.2.3.配置etcd为systemctl管理 1.2 ...
- 005.基于docker部署etcd集群部署
一 环境准备 ntp配置:略 #建议配置ntp服务,保证时间一致性 etcd版本:v3.3.9 防火墙及SELinux:关闭防火墙和SELinux 名称 地址 主机名 备注 etcd1 172.24. ...
随机推荐
- 【MySQL】rds 不支持镜像表/联合表,怎么办?
出于对业务的不了解,往往会让人做出错误的判断 CREATE TABLE `new_tables` ( `customer_id` int(11) NOT NULL AUTO_INCREMENT C ...
- 安装Ubuntu后需要做的事
卸载软件 纸牌 麻将 扫雷 数独 火狐 邮件 扫描 拍照 照片 视频 计划 日历 打印 备份 计算器 亚马逊 电源统计 音乐播放 远程桌面 To Do LibreOffice 换下载源 装机的时候下载 ...
- Windows下Redis安装配置和使用注意事项
Windows下Redis安装配置和使用注意事项 一:下载 下载地址: https://github.com/microsoftarchive/redis/releases 文件介绍: 本文以3.2. ...
- Docker Hello-World镜像运行测试
一.命令:docker run hello-world 命令解释:以docker客户端命令的方式运行hello-world镜像 命令运行结果: hadoop@Docker:/opt/docker$ d ...
- 生成随机文件名JS
export default function (length) { const data = ["0", "1", "2", " ...
- ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目
前言: 说明两个地方 1.点击按钮启动SmartConfig的地方 2.最终跳转的地方 说明 这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程 我要把所有的全部拿出来讲,让 ...
- 蒟蒻所见之DP
本文有错是正常的,因为这只是一部成长史,并非教学博文. 会常年更下去. 2019.10.24 DP,核心只是"表格法"而已. DP题真正所考察的,是: 1.对问题的描述.简化以及归 ...
- 数学建模之Python操作csv文件
1.用Python通过csv文件里面的某一列,形成键值,然后统计键在其他列出现的次数. import pandas as pd import numpy as np import csv import ...
- 第02组 团队Git现场编程实战
目录 1. 组员职责分工(2分) 2. github 的提交日志截图(1分) 3. 程序运行截图(3分) 4. 程序运行环境(1分) 5. GUI界面(5分) 6. 基础功能实现(10分) 7. 鼓励 ...
- 一些精简的JavaScript代码集合
日历 创建过去七天的数组,如果将代码中的减号换成加号,你将得到未来7天的数组集合 // 创建过去七天的数组 [...Array(7).keys()].map(days => new Date(D ...