-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdeployha.sh
executable file
·218 lines (197 loc) · 6.02 KB
/
deployha.sh
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
source env.sh
# 配置haproxy模板
mkdir -p ${HAPROXY_PATH}
echo "============配置haproxy模板=========="
cat > ${HAPROXY_PATH}/haproxy.cfg <<EOF
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /var/lib/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
nbproc 1
defaults
log global
timeout connect 5000
timeout client 10m
timeout server 10m
listen admin_stats
bind 0.0.0.0:10080
mode http
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /status
stats realm welcome login\ Haproxy
stats auth admin:123456
stats hide-version
stats admin if TRUE
listen kube-master
bind 0.0.0.0:8443
mode tcp
option tcplog
balance source
server ${MASTER_IPS[0]} ${MASTER_IPS[0]}:6443 check inter 2000 fall 2 rise 2 weight 1
server ${MASTER_IPS[1]} ${MASTER_IPS[1]}:6443 check inter 2000 fall 2 rise 2 weight 1
server ${MASTER_IPS[2]} ${MASTER_IPS[2]}:6443 check inter 2000 fall 2 rise 2 weight 1
EOF
cat ${HAPROXY_PATH}/haproxy.cfg
# 分发haproxy配置文件及启动服务
echo "==========分发haproxy配置文件及启动服务=========="
for master_ip in ${MASTER_IPS[@]}
do
echo ">>> ${master_ip}"
echo "分发haproxy配置文件"
ssh root@${master_ip} "mkdir -p /etc/haproxy"
scp ${HAPROXY_PATH}/haproxy.cfg root@${master_ip}:/etc/haproxy/
echo "启动haproxy服务"
ssh root@${master_ip} "
mkdir -p /var/lib/haproxy
systemctl enable haproxy
systemctl restart haproxy
echo 'wait 3s for haproxy up'
sleep 3
systemctl status haproxy | grep Active
netstat -lnpt | grep haproxy"
if [ $? -ne 0 ];then echo "启动haproxy服务失败,退出脚本";exit 1;fi
done
# 创建keepalived systemd unit文件
echo "=========创建keepalived systemd unit文件========="
cat > ${KEEPALIVED_PATH}/keepalived.service <<"EOF"
[Unit]
Description=LVS and VRRP High Availability Monitor
After= network-online.target syslog.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
KillMode=process
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/usr/local/bin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
EOF
cat ${KEEPALIVED_PATH}/keepalived.service
# 创建keepalived启动文件
echo "=========创建keepalived启动文件========="
cat > ${KEEPALIVED_PATH}/keepalived.env <<"EOF"
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp -P Only run with VRRP subsystem.
# --check -C Only run with Health-checker subsystem.
# --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.
# --dump-conf -d Dump the configuration data.
# --log-detail -D Detailed log messages.
# --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON)
#
KEEPALIVED_OPTIONS="-D"
EOF
cat ${KEEPALIVED_PATH}/keepalived.env
# keepalived-master配置文件
echo "=========keepalived-master配置文件========="
cat > ${KEEPALIVED_PATH}/keepalived-master.conf <<EOF
global_defs {
router_id lb-master-105
}
vrrp_script check-haproxy {
script "killall -0 haproxy"
interval 5
weight -30
}
vrrp_instance VI-kube-master {
state MASTER
priority 120
dont_track_primary
interface ${VIP_IF}
virtual_router_id 68
advert_int 3
track_script {
check-haproxy
}
virtual_ipaddress {
${MASTER_VIP}
}
}
EOF
cat ${KEEPALIVED_PATH}/keepalived-master.conf
# keepalived-backup配置文件
echo "=========keepalived-backup配置文件========="
cat > ${KEEPALIVED_PATH}/keepalived-backup.conf <<EOF
global_defs {
router_id lb-backup-105
}
vrrp_script check-haproxy {
script "killall -0 haproxy"
interval 5
weight -30
}
vrrp_instance VI-kube-master {
state BACKUP
priority 110
dont_track_primary
interface ${VIP_IF}
virtual_router_id 68
advert_int 3
track_script {
check-haproxy
}
virtual_ipaddress {
${MASTER_VIP}
}
}
EOF
cat ${KEEPALIVED_PATH}/keepalived-backup.conf
# 分发keepalived配置文件及启动
echo "==========分发keepalived配置文件及启动========"
for (( i=0; i < 3; i++ ))
do
echo ">>> ${MASTER_IPS[i]}"
echo "分发keepalived二进制"
ssh root@${MASTER_IPS[i]} "
if [ -f /usr/local/bin/keepalived ];then
systemctl stop keepalived
rm -f /usr/local/bin/keepalived
fi"
scp ${KEEPALIVED_PATH}/keepalived \
root@${MASTER_IPS[i]}:/usr/local/bin/
echo "分发keepalived的systemd unit文件"
scp ${KEEPALIVED_PATH}/keepalived.service \
root@${MASTER_IPS[i]}:/usr/lib/systemd/system/keepalived.service
echo "分发keepalived启动文件"
scp ${KEEPALIVED_PATH}/keepalived.env \
root@${MASTER_IPS[i]}:/etc/sysconfig/keepalived
echo "分发keepalived配置文件"
ssh root@${MASTER_IPS[i]} "mkdir -p /etc/keepalived"
if [ $i -eq 0 ];then
scp ${KEEPALIVED_PATH}/keepalived-master.conf \
root@${MASTER_IPS[i]}:/etc/keepalived/keepalived.conf
else
scp ${KEEPALIVED_PATH}/keepalived-backup.conf \
root@${MASTER_IPS[i]}:/etc/keepalived/keepalived.conf
fi
echo "启动keepalived服务,检查服务"
ssh root@${MASTER_IPS[i]} "
systemctl daemon-reload
systemctl enable keepalived
systemctl restart keepalived"
echo "验证keepalived服务"
if [ $i -eq 0 ]
then
echo 'wait 10s for setting vip'
sleep 10
else
echo 'wait 3s for keepalived up'
sleep 3
fi
ssh root@${MASTER_IPS[i]} "
systemctl status keepalived | grep Active
/usr/sbin/ip addr show ${VIP_IF}
ping -c 3 ${MASTER_VIP}"
if [ $? -ne 0 ];then echo "启动keepalived服务失败,退出脚本";exit 1;fi
done