高可用方案
- LVS : 4 层负载均衡,性能强的,对内存和
cpu资源消耗比较低, 不支持正则静态分离,大型网站配置复杂 - nginx : 7 层负载均衡, 适用面小,负载均衡可能会遇到 session 等问题,不支持通过 ur l来检测
- haproxy : 4+7层,负载均衡策略非常多,能很好地弥补 nginx 的缺点
在 Nginx 1.9.0 版本后,Nginx 便可以通过配置 –with-stream 模块的方式,来实现基于四层的反向代理
基于TCP的四层负载均衡配置文件不能配置 http 层
eg: k8s 主节点 10.0.0.101,10.0.0.102,10.0.0.103.端口均为 6443
访问任一节点 nginx:6443 则负载均衡到任一节点1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
events {
worker_connections 3000;
}
stream {
upstream backend {
server 10.0.0.101:6443 max_fails=2 fail_timeout=3s;
server 10.0.0.102:6443 max_fails=2 fail_timeout=3s;
server 10.0.0.103:6443 max_fails=2 fail_timeout=3s;
}
server {
listen 127.0.0.1:6443 so_keepalive=on; # 开启 TCP 存活探测
# proxy_connect_timeout 10s; # 端口保持时间
proxy_connect_timeout 1s;
proxy_pass backend;
}
}
Keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务节点的状态,后来又加入了可以实现高可用的 VRRP 功能。因此, Keepalived 除了能够管理 LVS 软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL 等)的高可用解决方案软件
准备工作
示例:
- 多台
Nginx服务器 : smtp_server 192.168.43.101(主)smtp_server 192.168.43.102(备) - 安装
Keepalived: yum install -y Keepalived ,配置文件 默认 /etc/keepalived/keepalived.conf - 虚拟
ip: 192.168.43.100
主备模式
192.168.43.101 上修改 keepalived.conf
1 | ! Configuration File for keepalived |
192.168.43.102 上修改 keepalived.conf
1 | ! Configuration File for keepalived |
所有主机执行1
2systemctl start keepalived
systemctl enable keepalived
双主模式
再配置一段新的 vrrp_instance(实例)规则,主 上面加配置一个 从 的实例规则,从 上面加配置一个 主 的实例规则
192.168.43.101 上修改 keepalived.conf1
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! Configuration File for keepalived
global_defs {
router_id k8s
}
vrrp_instance VI_1 {
state MASTER # 主节点
interface ens33 # 当前用的 ens33 网卡
virtual_router_id 51
priority 100 # 优先级配置
advert_int 2
authentication {
auth_type PASS
auth_pass K8SHA_KA_AUTH
}
virtual_ipaddress { # VIP
192.168.43.100
}
}
vrrp_instance VI_2 {
state BACKUP # 备节点
interface ens33 # 当前用的 ens33 网卡
virtual_router_id 51
priority 100 # 优先级配置
advert_int 2
authentication {
auth_type PASS
auth_pass K8SHA_KA_AUTH
}
virtual_ipaddress { # VIP
192.168.43.100
}
}
192.168.43.102 上修改 keepalived.conf
1 | ! Configuration File for keepalived |
所有主机执行
1 | systemctl restart keepalived |