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
文章评论