搭建etcd集群
Posted 絮雨清风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建etcd集群相关的知识,希望对你有一定的参考价值。
最近分布式项目开发中用到订阅/通知机制,经过选型决定采用etcd,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。
本系列总共3篇:
- 《搭建etcd集群》:介绍搭建etcd集群方式、遇到的问题及处理方式;
- 《编译安装etcd-cpp-apiv3》:介绍etcd-cpp-apiv3编译安装方式、常见问题及处理方式;
- 《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.135 | 192.168.61.136 | 192.168.61.137 |
hostname | CBFS2 | CBFS3 | CBFS4 |
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集群的主要内容,如果未能解决你的问题,请参考以下文章