目录

搭建 etcd 集群

etcd构建自身高可用集群主要有三种形式:

1. 静态部署(前提)

2. 集群搭建

3. 集群测试


搭建 etcd 集群

   etcd构建自身高可用集群主要有三种形式:

  • 静态发现:

预先已知etcd集群中有哪些节点,

在启动时通过--initial-cluster参数直接指定好etcd的各个节点地址

  • etcd动态发现:

静态配置前提是在搭建集群之前已经提前知道各节点的信息,

而实际应用中可能存在预先并不知道各节点ip的情况,

这时可通过已经搭建的etcd来辅助搭建新的etcd集群。

通过已有的etcd集群作为数据交互点,然后在扩展新的集群时

实现通过已有集群进行服务发现的机制。比如官方提供的:discovery.etcd.io

  • DNS动态发现:

通过DNS查询方式获取其他节点地址信息


1. 静态部署(前提)

以下为2台主机信息(需要打开虚拟机,请根据自己电脑配置量力而行) 

通常都是将集群节点部署为3,5,7,9个节点,为什么不能选择偶数个节点? 

1.偶数个节点集群不可用风险更高,表现在选主过程中,有较大概率或等额选票,从而触发  下一轮选举。

2.偶数个节点集群在某些网络分割的场景下无法正常工作。当网络分割发生后,将集群节点对半分割开。 此时集群将无法工作。按照RAFT协议,此时集群写操作无法使得大多数节点同意,从而导致写失败,集群无法正常工作

请确保两台主机中都已经安装好了 etcd 服务并能正常启动


2. 集群搭建

1. 安装服务( 参考博文==>微服务自动化【etcd基本介绍】)

2. 编辑etcd.conf文件,添加集群信息注意修改对应的ip

vim /etc/etcd/etcd.conf
  • 代码如下
#########################################################
######  请根据各节点实际情况修改配置:1/3/4/5/6/7  ######
#########################################################
#[Member]
#1.节点名称,必须唯一
ETCD_NAME="etcd01"#2.设置数据保存的目录
ETCD_DATA_DIR="/var/lib/etcd"#3.用于监听其他etcd member的url
ETCD_LISTEN_PEER_URLS="http://192.168.27.128:2380"#4.该节点对外提供服务的地址
ETCD_LISTEN_CLIENT_URLS="http://192.168.27.129:2379,http://127.0.0.1:2379"#[Clustering]
#5.对外公告的该节点客户端监听地址
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.27.129:2379"#6.该节点成员对等URL地址,且会通告集群的其余成员节点
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.27.129:2380"#7.集群中所有节点的信息
ETCD_INITIAL_CLUSTER="etcd01=http://192.168.27.128:2380,etcd02=http://192.168.27.129:2380"#8.创建集群的token,这个值每个集群保持唯一
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"#9.初始集群状态,新建集群的时候,这个值为new;
ETCD_INITIAL_CLUSTER_STATE="new"#10.flannel操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API
#   为了兼容flannel,将默认开启v2版本,故配置文件中设置
ETCD_ENABLE_V2="true"

3. 修改/etc/etcd/etcd.conf文件后,要先删除/var/lib/etcd目录下保存的数据,再重新启用服务,不然失败

cd /var/lib/etcd && rm -rf *

4. 为节点etcd01创建一个etcd服务 /etc/systemd/system/etcd.service

vim /etc/systemd/system/etcd.service
  • 代码如下
[Unit]
Description=Etcd Server
Documentation=https://github.com/etcd-io/etcd
After=network.target[Service]
User=root
Type=notify
## 根据实际情况修改EnvironmentFile和ExecStart这两个参数值
## 1.EnvironmentFile即配置文件的位置,注意“-”不能少
EnvironmentFile=-/etc/etcd/etcd.conf
## 2.ExecStart即etcd启动程序位置
ExecStart=/usr/local/bin/etcd
Restart=always
RestartSec=10s
LimitNOFILE=65536[Install]
WantedBy=multi-user.target

5. 因为需要跨主机通信,需要开放防火墙端口

firewall-cmd --zone=public --add-port=2379/tcp --permanent && firewall-cmd --zone=public --add-port=2380/tcp --permanent && firewall-cmd --reload && firewall-cmd --list-port

6. 启动可能报错信息(没有就忽略)

master-16 etcd[25461]: request cluster ID mismatch (got bdd7c7c32bde1208 want 698851d67fea3c17)
  • 原因 集群ip地址变化后,除了修改/etc/etcd/etcd.conf 文件并重新启用服务外,还需要删除/var/lib/etcd目录下保存的数据
  • 解决办法 删除了etcd集群所有节点中的--data_dir的内容

7. 服务相关指令

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl status etcd
systemctl stop etcd
systemctl restart etcd

3. 集群测试

1. 各节点重启启动完成后,在任意节点执行etcdctl member list可列所有集群节点信息

etcdctl member list
etcdctl member list -w table
etcdctl endpoint health
etcdctl endpoint status

2. http命令

etcdctl --endpoints=http://192.168.199.160:2379,http://192.168.199.157:2379,http://192.168.199.158:2379 endpoint health
etcdctl --endpoints=http://192.168.27.120:2379 endpoint health
etcdctl --endpoints=http://192.168.27.129:2379 member list -w table

微服务自动化【集群搭建】相关推荐

  1. 常用服务的集群搭建(redis、MQ、es、zookerper)

    常用服务的集群搭建(redis.MQ.es.zookerper) 1.集群概述 1.1什么是集群 1.1.1集群概念 集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地 ...

  2. 分布式协调服务Zookeeper集群搭建

    分布式协调服务Zookeeper集群搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装jdk环境 1>.操作环境 [root@node101.yinzhengjie ...

  3. 2017微服务 mysql集群_微服务架构系列之Nacos集群搭建

    上回我们说到了<微服务架构系列之Nacos 配置核心概念>,这次我们讲讲Nacos 集群环境搭建. 集群模式跟我们平时进行扩容是一样的,可以通过 Nginx 转发到多个节点,如下图: 如果 ...

  4. 基于Docker的Consul服务发现集群搭建

    在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章.本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架 ...

  5. 003_ZooKeeper服务端集群搭建

    1. 我们这里使用三台机器搭建ZooKeeper服务器集群.三台机器上都安装好Java和ZooKeeper. 2. 修改zoo.cfg配置信息 2.1. zookeeper的三个端口作用 2181: ...

  6. 分布式文件服务minio集群搭建

    minio集群搭建过程记录 minio集群搭建 1.服务器:2台服务器(存储数据目录不能是/root目录,否则会报错) 2.从官网获取Minio二进制文件并上传至2台集群主机: 3.创建目录(2台集群 ...

  7. 分布式、微服务、集群

    一.分布式 小马正在经营一个在线购物网站,名叫TT猫,有商品管理.订单管理.用户管理.支付管理.购物车等模块,每个模块部署到独立的云服务主机. 现在,程序员小明同学浏览TT猫,想买一款牛逼的cherr ...

  8. 微服务服务器集群Session管理演进史

    点击上方"JavaEdge",关注公众号 设为"星标",好文章不错过! 应用服务器的高可用设计主要基于服务无状态这一特性,但事实上,业务总 是有状态: 在电商网 ...

  9. 2017微服务 mysql集群_成功升P7多亏掌握了这几点:高并发+Nginx+微服务+Redis+MySQL...

    高并发 书中采用循序渐进的讲解方式,从并发编程的基本理论人手,逐步介绍了在设计Java并发程序时各种重要的设计原则.设计模式以及思维模式,同时辅以丰富的示例代码作为对照和补充,使得开发人员能够更快地领 ...

  10. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建

    目录 ZooKeeper集群搭建 第一步:下载zookeeeper的压缩包,下载网址如下 第二步:解压 第三步:修改配置文件 第四步:添加myid配置 ​​​​​​​第五步:安装包分发并修改myid的 ...

最新文章

  1. c语言switch不允许实型,C语言中switch语句什么意思
  2. 机器学习算法如何调参?这里有一份神经网络学习速率设置指南
  3. Xamarin 2017.9.19更新
  4. 嵌入式软件架构设计分层思路
  5. LeetCode 1054. 距离相等的条形码(优先队列)
  6. 软件测试初学者学习资料汇总大全(校招、工作进阶通用)
  7. 1分钟链圈 | 硅谷和成都互设科技金融中心;帅初:区块链更容易落地游戏和版权行业;区块链底层技术布局基本完成
  8. 怎么用数学绘图软件验证扇形面积公式?
  9. python 极客学院 正则表达式
  10. 【招聘】STM32、LINUX、FPGA工程师,硬件设计工程师,待遇7000~15000!
  11. 感应加热ZVS制作图解
  12. 白话机器学习-Encoder-Decoder框架
  13. VMware虚拟机装系统出现Units specified dont exist解决办法
  14. 计算机英语 自我介绍,计算机专业学生面试英语自我介绍
  15. java高德点到ian距离,高德地图(点到线段的最短距离算法)不调用高德API
  16. js重新渲染或重新加载div
  17. 基于BGP技术和防火墙双机热备技术的校园网设计与实现
  18. 业务需求调研经验分享
  19. Adobe Premiere Pro 2020(PR)系统兼容性报告(不支持的视频驱动程序)完美解决方案
  20. 让数据起飞,MySql索引

热门文章

  1. hysteria歇斯底里的配置
  2. java 人脸检测_Java人脸检测库
  3. 【快速改文件名后缀】和【谷歌浏览器网页图片一键下载插件】推荐
  4. ezStudio,易用高效的业务基础平台开发工具
  5. OpenAI的人工智能语音识别模型Whisper详解及使用
  6. 【Soul源码阅读】12.soul-admin 与 soul-bootstrap 同步机制之 http 长轮询解析(上)
  7. shell内置字符串替换
  8. 分享138个HTML公司企业模板,总有一款适合您
  9. SIL,PL等基础概念简介
  10. JETSON TX2 NX刷机+烧录系统,挂载固态硬盘保姆教程