forked from Donyintao/Kubernetes-install
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path部署Haproxy服务.md
139 lines (114 loc) · 3.84 KB
/
部署Haproxy服务.md
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
# 部署haproxy + keepalived服务
## Keepalived高可用方案
说明: keepalived软件主要是通过VRRP协议实现高可用功能的,因此还可以作为其他服务的高可用解决方案;下面的解决方案并非完美解决方案,仅供参考学习。
+ `keepalived`在运行过程中周期检查本机的haproxy进程状态,如果检测到haproxy进程异常,则触发重新选主的过程,VIP将飘移到新选出来的主节点,从而实现VIP的高可用。
## Kubernetes高可用方案
`kubernetes`的`Master`节点为三台主机,当前示例的haproxy监听的端口是`8443`,与`kube-apiserver`的端口`6443`不同,避免冲突。
`kubernetes`组件相关组件`kube-controller-manager`、`kube-scheduler`、`kubelet`、`kube-proxy`等均都通过`VIP`和`haproxy`监听的`8443`端口访问`kube-apiserver`服务。
## 安装haproxy服务
``` bash
# yum install haproxy -y
```
## 配置haproxy服务
``` bash
# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak_$(date '+%Y%m%d')
# vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local3
maxconn 20480
chroot /var/lib/haproxy
user haproxy
group haproxy
nbproc 8
daemon
quiet
defaults
log global
mode tcp
option tcplog
option dontlognull
option redispatch
option forwardfor
option http-pretend-keepalive
retries 3
redispatch
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend kube_https *:8443
mode tcp
maxconn 20480
default_backend kube_backend
backend kube_backend
balance roundrobin
server kube-master-01 172.16.0.101:6443 check inter 5000 fall 3 rise 3 weight 1
server kube-master-02 172.16.0.102:6443 check inter 5000 fall 3 rise 3 weight 1
server kube-master-03 172.16.0.103:6443 check inter 5000 fall 3 rise 3 weight 1
listen haproxy-status
bind 0.0.0.0:18443
mode http
stats refresh 30s
stats uri /haproxy-status
stats realm welcome login\ Haproxy
stats auth admin:admin
# systemctl enable haproxy
# systemctl restart haproxy
# netstat -ntpl|grep haproxy
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 7456/haproxy
tcp 0 0 0.0.0.0:18443 0.0.0.0:* LISTEN 7456/haproxy
```
## 安装keepalived服务
``` bash
# yum install keepalived -y
```
## 配置haproxy服务健康检查脚本
``` bash
# vim /etc/keepalived/haproxy_check.sh
#!/bin/bash
flag=$(systemctl status haproxy &> /dev/null;echo $?)
if [[ $flag != 0 ]];then
echo "haproxy is down,close the keepalived"
systemctl stop keepalived
fi
# chmod +x /etc/keepalived/haproxy_check.sh
```
## 配置keepalived服务
``` bash
# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak_$(date '+%Y%m%d')
# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script haproxy_check {
script "/etc/keepalived/haproxy_check.sh"
interval 5
}
vrrp_instance VI_1 {
state MASTER // 在备节点设置为BACKUP
interface eth0
virtual_router_id 51
priority 200 // 备节点的阀值小于主节点
nopreempt // MASTER节点故障恢复后不重新抢回VIP
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.0.253 // MASTER VIP
}
track_script {
haproxy_check // 检查脚本
}
}
# systemctl enable keepalived
# systemctl restart keepalived
# systemctl status keepalived
```