ETCD集群部署
etcd、etcd-browser、etcdkeeper(支持 etcd v3 api) 简单安装配置
简介:
etcd是一个类似于zk的工具,用于保存值,节点-值这种映射关系的。节点组织结构类似unix文件系统结构,从/最开始。
环境说明:
三台机器的/etc/hosts文件全部相同,安装etcd前需要关闭防火墙和SELinux。
角色 | Hostname | Ip | 系统 | Etcd版本 |
Etcd | H1 | 192.168.10.1 | Cents7 | Etcd3.3 |
Etcd | H2 | 192.168.10.2 | Cents7 | Etcd3.3 |
Etcd | H3 | 192.168.10.3 | Cents7 | Etcd3.3 |
Etcd安装:
[root@h1 /]# yum -y install etcd #我这里用的是yum安装,也可以编辑部署;
配置:
在三台机器上新建数据目录/data/etcd
[root@h1 /]# mkdir /data/etcd
H1配置:
[root@h1/]# grep -v ^# /etc/etcd/etcd.conf
ETCD_DATA_DIR=/data/etcd/h1.etcd
ETCD_LISTEN_PEER_URLS=http://192.168.10.1:2380
ETCD_LISTEN_CLIENT_URLS=http://192.168.10.1:2379,http://127.0.0.1:2379
ETCD_NAME=h1
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.10.1:2380
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.10.1:2379
ETCD_INITIAL_CLUSTER=h1=http://192.168.10.1:2380,h2=http://192.168.10.2:2380,h3=http://192.168.10.3:2380
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER_STATE=new
RestartSec=5
ETCD_PROXY=off
H2配置:
[root@h2 /]# grep -v ^# /etc/etcd/etcd.conf
ETCD_DATA_DIR=/data/etcd/h2.etcd
ETCD_LISTEN_PEER_URLS=http://192.168.10.2:2380
ETCD_LISTEN_CLIENT_URLS=http://192.168.10.2:2379,http://127.0.0.1:2379
ETCD_NAME=h2
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.10.2:2380
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.10.2:2379
ETCD_INITIAL_CLUSTER=h1=http://192.168.10.1:2380,h2=http://192.168.10.2:2380,h3=http://192.168.10.3:2380
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER_STATE=new
RestartSec=5
ETCD_PROXY=off
H3配置:
[root@h3 /]# grep -v ^# /etc/etcd/etcd.conf
ETCD_DATA_DIR=/data/etcd/h3.etcd
ETCD_LISTEN_PEER_URLS=http://192.168.10.3:2380
ETCD_LISTEN_CLIENT_URLS=http://192.168.10.3:2379,http://127.0.0.1:2379
ETCD_NAME=h3
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.10.3:2380
ETCD_ADVERTISE_CLIENT_URLS=http://192.168.10.3:2379
ETCD_INITIAL_CLUSTER=h1=http://192.168.10.1:2380,h2=http://192.168.10.2:2380,h3=http://192.168.10.3:2380
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_PROXY=off
Etcd.service文件配置(三个节点都需要修改):
[root@h3 /]# vim /lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos
[Service]
user=etcd
Type=notify
WorkingDirectory=${ETCD_DATA_DIR}
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd \
--name=${ETCD_NAME} \
--initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS}
\
--listen-peer-urls=${ETCD_LISTEN_PEER_URLS}
\
--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS}
\
--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS}
\
--initial-cluster-token=${ETCD_INITIAL_CLUSTER_TOKEN}
\
--initial-cluster=${ETCD_INITIAL_CLUSTER}
--initial-cluster-state=${ETCD_INITIAL_CLUSTER_STATE}
\
--data-dir=${ETCD_DATA_DIR}
RestartSec=5
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
[root@h3 /]# systemctl daemon-reload #重载配置文件
[root@h1 opt]# etcdctl cluster-health #查看集群健康状况
member 44f06326325900ef is healthy: got healthy result from http://192.168.10.1:2379
member c21e258ec1c8e974 is healthy: got healthy result from http://192.168.10.2:2379
member daf7a0ec8b42b526 is healthy: got healthy result from http://192.168.10.3:2379
[root@h1 /]# etcdctl member list #查看节点信息
44f06326325900ef: name=node1 peerURLs=http://192.168.6.70:2380 clientURLs=http://192.168.6.70:2379 isLeader=false
c21e258ec1c8e974: name=node3 peerURLs=http://192.168.6.72:2380 clientURLs=http://192.168.6.72:2379 isLeader=false
daf7a0ec8b42b526: name=node2 peerURLs=http://192.168.6.71:2380 clientURLs=http://192.168.6.71:2379 isLeader=true
常见错误:
上述问题, 是 ETCD_LISTEN_CLIENT_URLS=”http://127.0.0.1:2379” 没有提供127 本地地址导致,那么通过指定 endpoint 方法解决
[root@h1/]#etcdctl --endpoints http://xx.xxx.205.229:2379,http://xx.xxx.205.229:4001 member list
集群重置
1 利用 systemctl stop etcd 关闭集群, 在重新启动集群, 之前 etcd 保存的资料不会丢失
2 要对 etcd 集群进行重置, 最简单的方式是关闭集群后,
3 删除了所有 etcd member 中 ETCD_DATA_DIR 配置中定义的目录下的所有子目录
4 启动所有 member 即可