首页
首页
文章目录
  1. 由于工作原因,经常会用到etcd集群,etcd集群部署并不麻烦,但是重复性很高,由于人懒所以,自己做个一个简单的ETCD集群一键部署的脚本。

ETCD集群一键部署(附源码)

由于工作原因,经常会用到etcd集群,etcd集群部署并不麻烦,但是重复性很高,由于人懒所以,自己做个一个简单的ETCD集群一键部署的脚本。

以下为源码,写的很清楚,大家应该都能看懂,没啥技术含量,只是方便自己使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/sh
# 检查etcd是否安装
etcd --version
if [[ $? -eq 0 ]];
then
echo 'etcd 已经安装了,请卸载后在重新安装!!!'
exit
else
yum -y install etcd
fi

# 获取本机ip地址
export Dzer0=$(ifconfig eth0 |grep 'inet'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $2}')
# 输出本机ip地址
echo $Dzer0

# 以下表示将配置文件输出到指定目录
tee /etc/etcd/etcd.conf <<-'EOF'
ETCD_NAME="name"
ETCD_DATA_DIR="/var/lib/etcd/name"
ETCD_LISTEN_PEER_URLS="http://Dzer0:2380"
ETCD_LISTEN_CLIENT_URLS="http://Dzer0:2379,http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://Dzer0:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://Dzer0:2379"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster1"
ETCD_INITIAL_CLUSTER="list"
EOF

# Dzer0 表示本机ip
# list 表示所有集群列表 模板 name1=http://ip:port,name2=http://ip:port,name3=http://ip:port
# name 表示集群节点名称

# 以下表示替换各种关键字
sed -i 's%Dzer0%'$Dzer0'%g' /etc/etcd/etcd.conf # 表示替换本机ip
sed -i 's%list%'$2'%g' /etc/etcd/etcd.conf # 表示替换所有etcd集群列表
sed -i 's/name/'$1'/g' /etc/etcd/etcd.conf # 表示替换集群名称
# 由于使用sed 在使用/做分隔符是出现报错:sed: -e expression #1, char 19: unknown option to `s' 所以在此将/替换成成%

#sed -i 's/Dzer0/'$Dzer0'/g' ~/etcd.conf # 表示替换本机ip
#sed -i 's/list/'$2'/g' ~/etcd.conf # 表示替换所有etcd集群列表
#sed -i 's/name/'$1'/g' ~/etcd.conf # 表示替换集群名称


# 设置开机启动,并启动
systemctl enable etcd
systemctl start etcd

#检查etcd是否安装成功并返回自定义字符串
etcd --version
if [[ $? -eq 0 ]];
then
echo 'ETCD 安装完成!!'
else
echo 'ETCD 安装失败!!'
fi

使用方法:

sh filename nodename node1=http://ip:port,node2=http://ip:port,node3=http://ip:node

注意事项:

  • 文档中eth0为网卡名称,如果你的网卡不是eth0请自行修改
  • 如果已经安装了etcd 请先卸载
  • 此脚本只测试过centos7 其他系统暂不支持
支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫