etcd集群搭建

上一篇文章 《etcd源码编译安装》介绍了 etcd 源码编译的过程,etcd 源码编译后,生成了两个可执行文件,etcd 和 etcdctl,其中 etcd 是服务端程序,etcdctl 是客户端程序。有了这两个程序文件,就能够搭建 etcd 集群并进行测试。

环境:CentOS 7.3

一、单机单实例搭建

直接运行 etcd 程序:
etcd

在另外一个终端测试写入 key,读取 key:
etcdctl put mykey "this is awesome"
etcdctl get mykey

这种方式安装的 etcd 只能在本地访问,其他机器无法访问。

二、单机3节点搭建

etcd 是基于 raft 算法的分布式 kv 数据库,正常情况下,至少需要 3 个节点来部署 etcd 集群,在开发或者测试环境,可以在一台机器上,搭建 3 节点 etcd 集群,以便于节省机器资源,而在生产环境,通常不建议这样操作。

由于在一台机器上搭建 3 个实例,etcd 默认端口为 2379,3 个 etcd 实例的端口不能相同,这里分别设置为:

  • 2379
  • 3379
  • 4379
# 机器ip地址
local_ip=192.168.56.200

# 创建 etcd 数据目录
mkdir -p /opt/etcd_1/data
mkdir -p /opt/etcd_2/data
mkdir -p /opt/etcd_3/data

# 创建节点1
etcd --name M1 --data-dir /opt/etcd_1/data 
--initial-advertise-peer-urls http://${local_ip}:2380 
--listen-peer-urls http://${local_ip}:2380 
--advertise-client-urls http://0.0.0.0:2379 
--listen-client-urls http://0.0.0.0:2379 
--initial-cluster M1=http://${local_ip}:2380,M2=http://${local_ip}:3380,M3=http://${local_ip}:4380 
--initial-cluster-state new 
--initial-cluster-token etcd-cluster1 
--auto-compaction-retention 2 &

# 创建节点2
etcd --name M2 --data-dir /opt/etcd_2/data 
--initial-advertise-peer-urls http://${local_ip}:3380 
--listen-peer-urls http://${local_ip}:3380 
--advertise-client-urls http://0.0.0.0:3379 
--listen-client-urls http://0.0.0.0:3379 
--initial-cluster M1=http://${local_ip}:2380,M2=http://${local_ip}:3380,M3=http://${local_ip}:4380 
--initial-cluster-state new 
--initial-cluster-token etcd-cluster1 
--auto-compaction-retention 2 &

# 创建节点3
etcd --name M3 --data-dir /opt/etcd_3/data 
--initial-advertise-peer-urls http://${local_ip}:4380 
--listen-peer-urls http://${local_ip}:4380 
--advertise-client-urls http://0.0.0.0:4379 
--listen-client-urls http://0.0.0.0:4379 
--initial-cluster M1=http://${local_ip}:2380,M2=http://${local_ip}:3380,M3=http://${local_ip}:4380 
--initial-cluster-state new --initial-cluster-token etcd-cluster1 
--auto-compaction-retention 2 &

在其他机器测试 etcd 安装是否成功:
etcdctl --endpoints=192.168.56.200:2379 put mykey 'this is myvalue'

etcdctl --endpoints=192.168.56.200:2379 get mykey

这里 etcd 端口设置为 2379, 3379, 4379 都是可用的。

三、3台机器3节点搭建

在生产环境,通常会搭建 3 节点或者 5 节点 etcd 集群,每个节点部署在独立的机器上,下面介绍 3 节点 etcd 集群搭建过程。

3 个节点 ip 分别为:

  • 192.168.56.200
  • 192.168.56.201
  • 192.168.56.202

在每个节点上指定如下共同的配置信息:

TOKEN=token-01
CLUSTER_STATE=new
NAME_1=machine-1
NAME_2=machine-2
NAME_3=machine-3
HOST_1=192.168.56.200
HOST_2=192.168.56.201
HOST_3=192.168.56.202
CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

在第 1 个节点上执行:

THIS_NAME=${NAME_1}
THIS_IP=${HOST_1}
etcd --data-dir=data.etcd 
--name ${THIS_NAME} 
--initial-advertise-peer-urls http://${THIS_IP}:2380 
--listen-peer-urls http://${THIS_IP}:2380 
--advertise-client-urls http://${THIS_IP}:2379 
--listen-client-urls http://${THIS_IP}:2379 
--initial-cluster ${CLUSTER} 
--initial-cluster-state ${CLUSTER_STATE} 
--initial-cluster-token ${TOKEN} &

在第 2 个节点上执行:

THIS_NAME=${NAME_2}
THIS_IP=${HOST_2}
etcd --data-dir=data.etcd 
--name ${THIS_NAME} 
--initial-advertise-peer-urls http://${THIS_IP}:2380 
--listen-peer-urls http://${THIS_IP}:2380 
--advertise-client-urls http://${THIS_IP}:2379 
--listen-client-urls http://${THIS_IP}:2379 
--initial-cluster ${CLUSTER} 
--initial-cluster-state ${CLUSTER_STATE} 
--initial-cluster-token ${TOKEN} &

在第 3 个节点上执行:

THIS_NAME=${NAME_3}
THIS_IP=${HOST_3}
etcd --data-dir=data.etcd 
--name ${THIS_NAME} 
--initial-advertise-peer-urls http://${THIS_IP}:2380 
--listen-peer-urls http://${THIS_IP}:2380 
--advertise-client-urls http://${THIS_IP}:2379 
--listen-client-urls http://${THIS_IP}:2379 
--initial-cluster ${CLUSTER} 
--initial-cluster-state ${CLUSTER_STATE} 
--initial-cluster-token ${TOKEN} &

测试集群是否搭建成功:
etcdctl --endpoints=192.168.56.200:2379 put mykey 'my value'
etcdctl --endpoints=192.168.56.200:2379 get mykey
etcdctl --endpoints=192.168.56.201:2379 get mykey
etcdctl --endpoints=192.168.56.202:2379 get mykey

文章评论

0条评论