欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker搭建etcd集群 bitnami/etcd

程序员文章站 2022-07-13 22:34:15
...

docker部署etcd集群

优秀的博客应该一来就先上代码(不接受杠精反驳)

注意这是sh代码,liunx批处理脚本

#!/bin/bash

#设置网络名
network_name=etcd_network

#创建网络
docker network create --driver bridge --subnet=10.3.36.0/16 --gateway=10.3.1.1 ${network_name}

#设置结点名
node1=etcd_node1
node1_ip=10.3.36.1

node2=etcd_node2
node2_ip=10.3.36.2

node3=etcd_node3
node3_ip=10.3.36.3

#设置集群口令
cluster_token=etcd_cluster


#创建节点1
docker run -d --name ${node1} \
	--network ${network_name} \
	--publish 12379:2379 \
	--publish 12380:2380 \
	--ip ${node1_ip} \
	--env ALLOW_NONE_AUTHENTICATION=yes \
	--env ETCD_NAME=${node1} \
	--env ETCD_ADVERTISE_CLIENT_URLS=http://${node1_ip}:2379 \
	--env ETCD_INITIAL_ADVERTISE_PEER_URLS=http://${node1_ip}:2380 \
	--env ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \
	--env ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 \
	--env ETCD_INITIAL_CLUSTER_TOKEN=${cluster_token} \
	--env ETCD_INITIAL_CLUSTER=${node1}=http://${node1_ip}:2380,${node2}=http://${node2_ip}:2380,${node3}=http://${node3_ip}:2380 \
	--env ETCD_INITIAL_CLUSTER_STATE=new \
	bitnami/etcd:latest

#创建节点2
docker run -d --name ${node2} \
	--network ${network_name} \
	--publish 22379:2379 \
	--publish 22380:2380 \
	--ip ${node2_ip} \
	--env ALLOW_NONE_AUTHENTICATION=yes \
	--env ETCD_NAME=${node2} \
	--env ETCD_ADVERTISE_CLIENT_URLS=http://${node2_ip}:2379 \
	--env ETCD_INITIAL_ADVERTISE_PEER_URLS=http://${node2_ip}:2380 \
	--env ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \
	--env ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 \
	--env ETCD_INITIAL_CLUSTER_TOKEN=${cluster_token} \
	--env ETCD_INITIAL_CLUSTER=${node2}=http://${node2_ip}:2380,${node1}=http://${node1_ip}:2380,${node3}=http://${node3_ip}:2380 \
	bitnami/etcd:latest

#创建节点3
docker run -d --name ${node3} \
	--network ${network_name} \
	--publish 32379:2379 \
	--publish 32380:2380 \
	--ip ${node3_ip} \
	--env ALLOW_NONE_AUTHENTICATION=yes \
	--env ETCD_NAME=${node3} \
	--env ETCD_ADVERTISE_CLIENT_URLS=http://${node3_ip}:2379 \
	--env ETCD_INITIAL_ADVERTISE_PEER_URLS=http://${node3_ip}:2380 \
	--env ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \
	--env ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 \
	--env ETCD_INITIAL_CLUSTER_TOKEN=${cluster_token} \
	--env ETCD_INITIAL_CLUSTER=${node3}=http://${node3_ip}:2380,${node1}=http://${node1_ip}:2380,${node2}=http://${node2_ip}:2380 \
	bitnami/etcd:latest

如何执行

sh xxx.sh

# xxx填写你的shell文件名

注意
如果你在执行的时候遇到这个错误

line 2: $'\r': command not found

麻烦安装一下这个东西(不要问为什么?)

yum -y install dos2unix*
dos2unix *.*

这里说一下配置参数情况

#docker网络名
--network 
#端口号可以这样写-p
--publish

--env ALLOW_NONE_AUTHENTICATION
#设置成员节点的别名
--env ETCD_NAME
#广播到集群中本成员的监听客户端请求的地址
--env ETCD_ADVERTISE_CLIENT_URLS
#广播到集群中本成员的Peer监听通信地址
--env ETCD_INITIAL_ADVERTISE_PEER_URLS
#客户端请求的监听地址列表
--env ETCD_LISTEN_CLIENT_URLS
#Peer消息的监听服务地址列表
--env ETCD_LISTEN_PEER_URLS
#启动集群的时候指定集群口令,只有相同token的才能加入到同一集群
--env ETCD_INITIAL_CLUSTER_TOKEN
#所有集群节点的地址列表
--env ETCD_INITIAL_CLUSTER

测试一下成功没有

$docker ps

CONTAINER ID   IMAGE                 COMMAND                 CREATED          STATUS          PORTS                                              NAMES
13aad2124d35   bitnami/etcd:latest   "/entrypoint.sh etcd"   11 minutes ago   Up 11 minutes   0.0.0.0:32379->2379/tcp, 0.0.0.0:32380->2380/tcp   etcd_node3
03e368e9658e   bitnami/etcd:latest   "/entrypoint.sh etcd"   11 minutes ago   Up 11 minutes   0.0.0.0:22379->2379/tcp, 0.0.0.0:22380->2380/tcp   etcd_node2
2781e87d368d   bitnami/etcd:latest   "/entrypoint.sh etcd"   11 minutes ago   Up 11 minutes   0.0.0.0:12379->2379/tcp, 0.0.0.0:12380->2380/tcp   etcd_node1

#测试命令
$docker exec -it 2781e87d368d etcdctl member list

知识源于学习