disabled 8.0 deploy start node listen down dscp isa
- #!/bin/bash
- set -x
- set -e
- #更改这里的IP, 只支持部署3个节点etcd集群
- declare -A NODE_MAP=(["etcd0"]="192.168.0.153" ["etcd1"]="192.168.0.154" ["etcd2"]="192.168.0.164")
- etcddownload()
- {
- ETCD_VER=v3.2.9 #指定要安装的版本号
- DOWNLOAD_URL=https://github.com/coreos/etcd/releases/download
- [ -f ${PWD}/temp-etcd/etcd ] && return
- curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o ${PWD}/etcd-${ETCD_VER}-linux-amd64.tar.gz
- mkdir -p ${PWD}/temp-etcd && tar -zxf ${PWD}/etcd-${ETCD_VER}-linux-amd64.tar.gz -C ${PWD}/temp-etcd --strip-components=1
- }
- etcdconfig()
- {
- local node_index=$1
- cat <<EOF >${PWD}/${node_index}.conf
- ETCD_NAME=${node_index}
- ETCD_DATA_DIR="/var/lib/etcd"
- ETCD_INITIAL_ADVERTISE_PEER_URLS="http://${NODE_MAP[${node_index}]}:2380"
- ETCD_LISTEN_PEER_URLS="http://${NODE_MAP[${node_index}]}:2380"
- ETCD_LISTEN_CLIENT_URLS="http://${NODE_MAP[${node_index}]}:2379,http://127.0.0.1:2379"
- ETCD_ADVERTISE_CLIENT_URLS="http://${NODE_MAP[${node_index}]}:2379"
- ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-378"
- ETCD_INITIAL_CLUSTER="etcd0=http://${NODE_MAP[‘etcd0‘]}:2380,etcd1=http://${NODE_MAP[‘etcd1‘]}:2380,etcd2=http://${NODE_MAP[‘etcd2‘]}:2380"
- ETCD_INITIAL_CLUSTER_STATE="new"
- # ETCD_DISCOVERY=""
- # ETCD_DISCOVERY_SRV=""
- # ETCD_DISCOVERY_FALLBACK="proxy"
- # ETCD_DISCOVERY_PROXY=""
- #
- # ETCD_CA_FILE=""
- # ETCD_CERT_FILE=""
- # ETCD_KEY_FILE=""
- # ETCD_PEER_CA_FILE=""
- # ETCD_PEER_CERT_FILE=""
- # ETCD_PEER_KEY_FILE=""
- EOF
- }
- etcdgen_unit()
- {
- cat <<EOF >${PWD}/etcd.service
- [Unit]
- Description=Etcd Server
- After=network.target
- [Service]
- Type=notify
- WorkingDirectory=/var/lib/etcd
- EnvironmentFile=-/etc/etcd/10-etcd.conf
- ExecStart=/usr/bin/etcd
- Restart=always
- RestartSec=8s
- LimitNOFILE=40000
- [Install]
- WantedBy=multi-user.target
- EOF
- }
- SSH_OPTS="-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oLogLevel=ERROR -C"
- etcdscp()
- {
- local host="$1"
- local src=($2)
- local dst="$3"
- scp -r ${SSH_OPTS} ${src[*]} "${host}:${dst}"
- }
- etcdssh()
- {
- local host="$1"
- shift
- ssh ${SSH_OPTS} -t "${host}" "$@" >/dev/null 2>&1
- }
- etcdssh_nowait()
- {
- local host="$1"
- shift
- ssh ${SSH_OPTS} -t "${host}" "nohup $@" >/dev/null 2>&1 &
- }
- etcddeploy()
- {
- for key in ${!NODE_MAP[@]}
- do
- etcdconfig $key
- etcdssh "root@${NODE_MAP[$key]}" "mkdir -p /var/lib/etcd /etc/etcd"
- etcdscp "root@${NODE_MAP[$key]}" "${key}.conf" "/etc/etcd/10-etcd.conf"
- etcdscp "root@${NODE_MAP[$key]}" "etcd.service" "/usr/lib/systemd/system"
- etcdscp "root@${NODE_MAP[$key]}" "${PWD}/temp-etcd/etcd ${PWD}/temp-etcd/etcd" "/usr/bin"
- etcdscp "root@${NODE_MAP[$key]}" "${PWD}/temp-etcd/etcd ${PWD}/temp-etcd/etcdctl" "/usr/bin"
- etcdssh "root@${NODE_MAP[$key]}" "chmod 755 /usr/bin/etcd*"
- etcdssh_nowait "root@${NODE_MAP[$key]}" "systemctl daemon-reload && systemctl enable etcd && nohup systemctl start etcd"
- done
- }
- etcdclean()
- {
- for key in ${!NODE_MAP[@]}
- do
- rm -f ${PWD}/${key}.conf
- done
- rm -f ${PWD}/etcd.service
- }
- #etcddownload
- etcdgen_unit
- etcddeploy
- etcdclean
- echo -e "\033[32m 部署完毕! 执行 etcdctl cluster-health,检测是否OK。\033[0m"
1、准备三台机器,系统为centos7
yum install -y epel-release vim bash-c* net-tools lrzsz
2、关闭防火墙和selinux
- #systemctl stop firewalld && systemctl disable firewalld
- #vim / etc / selinux / config
- SELINUX = disabled
- #setenforce 0
3、校对时间
yum install -y ntp ntpdate && ntpdate pool.ntp.org
4、设置ssh互信
5、执行脚本即可。
- # bash deploy-etcd.sh
- 原地址:http://www.cnblogs.com/keithtt/p/6649951.html
一键部署ETCD集群脚本
来源: http://www.bubuko.com/infodetail-2358089.html