搭建etcd集群

Posted 絮雨清风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建etcd集群相关的知识,希望对你有一定的参考价值。

  最近分布式项目开发中用到订阅/通知机制,经过选型决定采用etcd,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。

本系列总共3篇:

  1. 《搭建etcd集群》:介绍搭建etcd集群方式、遇到的问题及处理方式;
  2. 《编译安装etcd-cpp-apiv3》:介绍etcd-cpp-apiv3编译安装方式、常见问题及处理方式;
  3. 《etcd-cpp-apiv3使用实例介绍》:介绍如何通过etcd-cpp-apiv3建立与etcd集群的连接,订阅etcd消息。

 本文是第1篇 《搭建etcd集群》

参考:https://developer.aliyun.com/article/623228


1. 节点信息

  以搭建3节点的etcd集群为例。节点信息如下:

集群节点节点1节点2节点3
IP地址192.168.61.135192.168.61.136192.168.61.137
hostnameCBFS2CBFS3CBFS4

2. 下载etcd

root@cbfs2 ~]# wget https://github.com/coreos/etcd/releases/download/v3.4.10/etcd-v3.4.10-linux-amd64.tar.gz

3. 安装etcd

[root@cbfs2 ~]# tar -xzf etcd-v3.4.10-linux-amd64.tar.gz
[root@cbfs2 ~]# cd etcd-v3.4.10-linux-amd64/
[root@cbfs2 etcd-v3.4.10-linux-amd64]# ls
Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md
# 将etcd,etcdctl,将它们复制到/usr/local/bin目录下
[root@cbfs2 etcd-v3.4.10-linux-amd64]# cp etcd* /usr/local/bin/

4. 配置systemctl方式启动

  创建/etc/systemd/etcd.service,键入:

[Unit]
Description=Etcd Server
Documentation=https://github.com/coreos/etcd
After=network.target

[Service]
User=root
Type=notify
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target

  按照步骤2,3,4,依次在节点1、2、3安装etcd.

5. etcd配置文件

5.1 节点1配置文件

[root@cbfs2 ~]# cat /etc/etcd/etcd.conf
ETCD_NAME="etcd1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://192.168.61.135:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.61.135:2379,http://127.0.0.1:2379"

ETCD_LISTEN_PEER_URLS="http://192.168.61.135:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.61.135:2380"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.61.135:2380,etcd2=http://192.168.61.136:2380,etcd3=http://192.168.61.137:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

5.2 节点2配置文件

[root@cbfs3 ~]# cat /etc/etcd/etcd.conf
ETCD_NAME="etcd2"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://192.168.61.136:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.61.136:2379,http://127.0.0.1:2379"

ETCD_LISTEN_PEER_URLS="http://192.168.61.136:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.61.136:2380"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.61.135:2380,etcd2=http://192.168.61.136:2380,etcd3=http://192.168.61.137:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

5.3 节点3配置文件

[root@cbfs4 ~]# cat /etc/etcd/etcd.conf
ETCD_NAME="etcd3"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://192.168.61.137:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.61.137:2379,http://127.0.0.1:2379"

ETCD_LISTEN_PEER_URLS="http://192.168.61.137:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.61.137:2380"
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.61.135:2380,etcd2=http://192.168.61.136:2380,etcd3=http://192.168.61.137:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"



6. 启动etcd

[root@cbfs2 ~]# systemctl daemon-reload;systemctl start ctdb

  节点1、2、3分别启动etcd服务。

7. 查看所有member信息:

[root@cbfs2 ~]# etcdctl -w="table" member list



8. 问题记录

8.1 etcdctl member list报connect: connection refused

如果不写127.0.0.1或localhost 在测试时 回环地址将被拒绝链接。
解决方式:添加 http://127.0.0.1:2379


以上是关于搭建etcd集群的主要内容,如果未能解决你的问题,请参考以下文章

搭建etcd集群

搭建etcd集群

关于 Kubernetes中etcd的一些笔记

etcd集群搭建(高可用)

搭建etcd集群,python调etcd接口

Etcd 集群搭建