Etcd单节点扩容为三节点集群

参考文档

http://www.cnblogs.com/breg/p/5728237.html

开始环境是单节点,存储数据一段时间后发现需要集群高可用环境,幸亏etcd支持在线扩容

1,修改单节点配置并重启etcd

[[email protected] etcd]# cat /etc/etcd/etcd.conf

ETCD_NAME=k8s1

ETCD_DATA_DIR="/data/etcd"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_LISTEN_PEER_URLS="http://172.17.3.20:2380"

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.17.3.20:2380"

ETCD_INITIAL_CLUSTER="k8s1=http://172.17.3.20:2380"

备注后三行是新增,后重启etcd

2,注册新节点

注册新节点

[[email protected] etcd]# curl http://127.0.0.1:2379/v2/members -XPOST -H "Content-Type: application/json" -d ‘{"peerURLs": ["http://172.17.3.7:2380"]}‘

{"id":"dd224433fd05e450","name":"","peerURLs":["http://172.17.3.7:2380"],"clientURLs":[]}

注意只注册未启动新节点时集群状态是不健康的

[[email protected] etcd]#  curl  http://172.17.3.20:2379/v2/members

{"members":[{"id":"869f0c691c5458a3","name":"k8s1","peerURLs":["http://172.17.3.20:2380"],"clientURLs":["http://0.0.0.0:2379"]},

{"id":"dd224433fd05e450","name":"","peerURLs":["http://172.17.3.7:2380"],"clientURLs":[]}]}

[[email protected] etcd]# etcdctl cluster-health

member 869f0c691c5458a3 is unhealthy: got unhealthy result from http://0.0.0.0:2379

member dd224433fd05e450 is unreachable: no available published client urls

cluster is unhealthy

3,启动新节点

[[email protected] data]# cat /etc/etcd/etcd.conf

ETCD_NAME=k8s2

ETCD_DATA_DIR="/data/etcd"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_LISTEN_PEER_URLS="http://172.17.3.7:2380"

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.17.3.7:2380"

ETCD_INITIAL_CLUSTER="k8s1=http://172.17.3.20:2380,k8s2=http://172.17.3.7:2380"

ETCD_INITIAL_CLUSTER_STATE="existing"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

这是新节点配置,后启动新节点

4,检测新节点

[[email protected] etcd]# etcdctl cluster-health

member 869f0c691c5458a3 is healthy: got healthy result from http://0.0.0.0:2379

member dd224433fd05e450 is healthy: got healthy result from http://0.0.0.0:2379

cluster is healthy

5,重复上面操作添加新节点

添加第二个新节点后效果

[[email protected] etcd]# curl  http://172.17.3.20:2379/v2/members

{"members":[{"id":"29e27bbd848a2e50","name":"k8s3","peerURLs":["http://172.17.3.8:2380"],"clientURLs":["http://0.0.0.0:2379"]},

{"id":"869f0c691c5458a3","name":"k8s1","peerURLs":["http://172.17.3.20:2380"],"clientURLs":["http://0.0.0.0:2379"]},{"id":"dd224433fd05e450","name":"k8s2","peerURLs":

["http://172.17.3.7:2380"],"clientURLs":["http://0.0.0.0:2379"]}]}

[[email protected] etcd]# etcdctl cluster-health

member 29e27bbd848a2e50 is healthy: got healthy result from http://0.0.0.0:2379

member 869f0c691c5458a3 is healthy: got healthy result from http://0.0.0.0:2379

member dd224433fd05e450 is healthy: got healthy result from http://0.0.0.0:2379

cluster is healthy

6,最后修改所有节点配置为一致

[[email protected] etcd]# cat /etc/etcd/etcd.conf

ETCD_NAME=k8s1

ETCD_DATA_DIR="/data/etcd"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_LISTEN_PEER_URLS="http://172.17.3.20:2380"

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.17.3.20:2380"

ETCD_INITIAL_CLUSTER="k8s1=http://172.17.3.20:2380,k8s2=http://172.17.3.7:2380,k8s3=http://172.17.3.8:2380"

ETCD_INITIAL_CLUSTER_STATE="existing"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

7,更新访问etcd集群参数kube-apiserver与flanneld

KUBE_ETCD_SERVERS="--etcd-servers=http://172.17.3.20:2379,http://172.17.3.7:2379,http://172.17.3.8:2379"

8,集群配置文件备份脚本

[[email protected] etcd_backup]# cat /data/scripts/backupetcd.sh

#!/bin/bash

date_time=`date +%Y%m%d`

etcdctl backup --data-dir /data/etcd/ --backup-dir /data/etcd_backup/${date_time}

find /data/etcd_backup/ -ctime +7 -exec rm -r {} \;

9,故障排查

注意各节点时钟相差过大导致集群建立不起来,所以需要先做时钟同步,默认1s内时差才能成功

注意如果其中有etcd节点启动不起来,可以etcdctl rember delete 后重新添加,删除时清空/data/etcd数据,注意至少要有一份数据保存,这样才能同步到其他节点

时间: 2024-10-03 17:57:46

Etcd单节点扩容为三节点集群的相关文章

redhat6.5 redis单节点多实例3A集群搭建

在进行搭建redis3M 集群之前,首先要明白如何在单节点上完成redis的搭建. 单节点单实例搭建可以参看这个网:https://www.cnblogs.com/butterflies/p/9628207.html 完成单节点的redis搭建之后,修改配置文件,开启集群模式,修改配置文件生成的目录,修改位对应的端口,即可完成单节点多实例的redis集群搭建. 一:多实例配置文件生成和修改 1 配置文件拷贝 cp /usr/local/redis/etc/redis.conf /usr/loca

对于三节点集群zookeeper配置步骤:

步骤一:干净的集群,全新的hdfs在第一台主机上配置配置文件core-site.xml:<configuration><property> <name>fs.defaultFS</name> <value>hdfs://bcqm1711</value></property><property> <name>hadoop.tmp.dir</name> <value>/home/

简易hadoop三节点集群搭建总结

三节点hadoop集群搭建教程 一. 安装VMware虚拟机 二. 创建第一个Linux虚拟机节点,本机使用的centOS7.6 64位版本 三. 创建2个克隆节点 四. 3节点都关闭防火墙 命令:systemctl stop firewalld 关闭后查看防火墙状态确认是否关闭成功:systemctl status firewalld 五. 关闭 selinux vi etc/selinux/config SELINUX=disabled 六. 配置网络设置 vi /etc/sysconfig

etcd单节点数据备份与恢复

插入测试数据 # etcdctl put smith 7369 # etcdctl put allen 7499 # etcdctl put ward 7521 # etcdctl put jones 7566 # etcdctl put martin 7654 # etcdctl put blake 7698 # etcdctl put clark 7782 # etcdctl put scott 7788 # etcdctl put king 7839 # etcdctl put turne

etcd 单节点部署、备份与恢复

etcd 部署 wget https://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz tar -zxvf etcd-v3.3.13-linux-amd64.tar.gz cd etcd-v3.3.13-linux-amd64 目录下有两个可执行文件etcd 和 etcdctl cp etcd /usr/bin/ cp etcdctl /usr/bin/ 添加以下内容: $ ca

说说单节点集群里安装hive、3\5节点集群里安装hive的诡异区别

这几天,无意之间,被这件事情给迷惑,不解!先暂时贴于此,以后再解决! 详细问题如下: 在hive的安装目录下(我这里是 /home/hadoop/app/hive-1.2.1),hive的安装目录的lib下(我这里是/home/hadoop/app/hive-1.2.1/lib)存放了mysql-connector-java-5.1.21.jar. 我的mysql,是用root用户安装的,在/home/hadoop/app目录,所以,启动也得在此目录下. 对于djt002,我的mysql是roo

【Zookeeper】Zookeeper集群单节点提供服务

以下只在特殊情况下使用,不要用在生产环境. 一.问题背景 公司的产品使用Zookeeper做为集群支持,但是客户在验收的时候提出了一个很为难人的要求,那就是3台集群服务,停止2台以后,还要求我们的应用能提供服务,这就有点难为人了. 因为用过Zookeeper的人都知道,Zookeeper的leader的选举需要大多数同意,也就是说三台机器的Zookeeper集群那么选举leader就需要两台,如果只剩下一台Zookeeper那么是无法完成leader选举的,也就是说Zookeeper将不能对外提

kafka的单节点搭建和集群搭建

首先,kafka的运行,需要zookeeper在后台运行,虽然kafka中已经内置了zookeeper,但是我们还是用自己搭建的分布式zookeeper kafka的单节点搭建  (这里用了自带的zookeeper) 启动服务 ?1.配置和启动zookeeper服务 使用kafka内置zk ?配置zk文件:/opt/kafka/config/zookeeper.properties ?启用zk服务: ?/opt/kafka/bin/zookeeper-server-start.sh /opt/k

ActiveMQ的单节点和集群部署

平安寿险消息队列用的是ActiveMQ. 单节点部署: 下载解压后,直接cd到bin目录,用activemq start命令就可启动activemq服务端了. ActiveMQ默认采用61616端口提供JMS服务,使用8161端口提供管理控制台服务,执行以下命令以便检验是否已经成功启动ActiveMQ服务: ps -aux | grep activemq netstat -anp | grep 61616 此外,还可直接访问管理页面:http://ip:8161/admin/ ,用户名和密码可以