etcd集群的搭建(3节点,基于CentOS7)

#!/bin/bash
##########################################
########### etcd集群启动脚本 ###########
##########################################
# 需要关闭etcd所在节点的防火墙,才能组建集群
# 关闭防火墙
# systemctl stop firewalld.service
# 禁止防火墙开机自启
# systemctl disable firewalld.service
# etcd所在三个节点的IP
# 要求三个节点的etcd工作目录为/kubernetes/etcdworkspace/
# 该目录内有etcd二进制文件,data/、log/、wal/文件夹,etcdctl(etcd客户端工具,非必须)
# 权限为755
# IP请使用实际ip替代
IP01="xxx.xxx.xxx.x01"
IP02="xxx.xxx.xxx.x02"
IP03="xxx.xxx.xxx.x03"

WORKDIR=/kubernetes/etcdworkspace

# 生成etcd的执行脚本
echo '#!/bin/bash
flag=$1

WORKDIR=/kubernetes/etcdworkspace
PEER_PORT=2380
CLIENT_PORT=2379
NAME_PREFIX="etcd-kubernetes"
ETCD_CLUSTER_TOKEN="${NAME_PREFIX}-cluster"

# IP请使用实际ip替代
IP01="xxx.xxx.xxx.x01"
IP02="xxx.xxx.xxx.x02"
IP03="xxx.xxx.xxx.x03"
etcd_name="0"

if [[ $(ifconfig eth0 | grep "${IP01}" | wc -l)x = "1"x ]]; then
etcd_name="01"
IP=${IP01}
elif [[ $(ifconfig eth0 | grep "${IP02}" | wc -l)x = "1"x ]]; then
etcd_name="02"
IP=${IP02}
elif [[ $(ifconfig eth0 | grep "${IP03}" | wc -l)x = "1"x ]]; then
etcd_name="03"
IP=${IP03}
else
echo "no ip match"
exit 1
fi
echo "etcd_name is [${etcd_name}]"

if [[ ${flag}x == stopx ]] || [[ ${flag}x == restartx ]]; then
pid=$(ps -ef | grep etcd | grep ${NAME_PREFIX}-${etcd_name} | grep -v grep | awk '"'"'{print $2}'"'"')
if [[ ${pid}x != x ]]; then
echo "kill etcd pid [${pid}]"
kill -9 ${pid}
echo "etcd is stop"
fi
fi

if [[ ${flag}x == startx ]] || [[ ${flag}x == restartx ]]; then
echo "etcd ready to start"
elif [[ ${flag}x == stopx ]]; then
echo "etcd stop"
exit 0
else
echo "command in [start, restart, stop]"
exit 1
fi

# 启动节点etcd的命令
${WORKDIR}/etcd --name ${NAME_PREFIX}-${etcd_name} --debug \
--data-dir ${WORKDIR}/data \
--wal-dir ${WORKDIR}/wal \
--initial-advertise-peer-urls http://${IP}:${PEER_PORT} \
--listen-peer-urls http://${IP}:${PEER_PORT} \
--listen-client-urls http://${IP}:${CLIENT_PORT},http://127.0.0.1:${CLIENT_PORT} \
--advertise-client-urls http://${IP}:${CLIENT_PORT} \
--initial-cluster-token ${ETCD_CLUSTER_TOKEN} \
--initial-cluster ${NAME_PREFIX}-01=http://${IP01}:${PEER_PORT},${NAME_PREFIX}-02=http://${IP02}:${PEER_PORT},${NAME_PREFIX}-03=http://${IP03}:${PEER_PORT} \
--initial-cluster-state new
' > ./etcd.sh

sshpass -p "123456" scp -o StrictHostKeychecking=no ./etcd.sh root@${IP01}:${WORKDIR}/
sshpass -p "123456" scp -o StrictHostKeychecking=no ./etcd.sh root@${IP02}:${WORKDIR}/
sshpass -p "123456" scp -o StrictHostKeychecking=no ./etcd.sh root@${IP03}:${WORKDIR}/

sshpass -p "123456" ssh -o StrictHostKeychecking=no root@${IP01} "cd ${WORKDIR}/; sh ./etcd.sh restart >> ${WORKDIR}/log/etcd-01.log 2>&1 &"
sshpass -p "123456" ssh -o StrictHostKeychecking=no root@${IP02} "cd ${WORKDIR}/; sh ./etcd.sh restart >> ${WORKDIR}/log/etcd-02.log 2>&1 &"
sshpass -p "123456" ssh -o StrictHostKeychecking=no root@${IP03} "cd ${WORKDIR}/; sh ./etcd.sh restart >> ${WORKDIR}/log/etcd-03.log 2>&1 &"

猜你喜欢

转载自www.cnblogs.com/ouyanghuanlin/p/11206009.html
今日推荐