一.keepalived高可用(私网)
1.什么是高可用
一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。
2.什么是keepalived
部署在整个集群中的一个高可用软件,作用是创建一个VIP(虚拟IP),在整个集群中有且只有一个机器上生成VIP,当这台机器出现问题时,keepalived将自动将VIP切换至其他的某一台服务器上。
3.常用的工具
1.硬件通常使用 F5
2.软件通常使用 keepalived
4.keepalived涉及名词
keepalived软件是基于VRRP协议实现的,VRRP虚拟路由冗余协议,主要用于解决单点故障问题
ARP广播
VRRP协议
vip负责IP漂移
vmac负责通知ARP广播修改mac地址
5.高可用keepalived核心概念
1.如何确定谁是主节点谁是备节点(选举投票,优先级)
2.如果Master故障,Backup自动接管,那么Master恢复后会夺权吗(抢占试、非抢占式)
3.如果两台服务器都认为自己是Master会出现什么问题(脑裂)
6.keepalived的部署
实现VIP,解决web服务器的单点故障
1、服务器准备
主机 | ip | 身份 |
---|---|---|
lb01 | 192.168.15.5 | 负载均衡 |
lb02 | 192.168.15.6 | 负载均衡 |
web01 | 192.168.15.7 | web服务器 |
web02 | 192.168.15.8 | web服务器 |
web03 | 192.168.15.9 | web服务器 |
2、保证七层负载均衡完全一致
前提:保证七层负载均衡完全一致
把lb01相关配置传到lb02
[root@lb01 ~]# cd /etc/nginx/conf.d
[root@lb01 conf.d]# ll
total 8
-rw-r--r-- 1 root root 440 Nov 1 19:52 game.conf
-rw-r--r-- 1 root root 212 Oct 31 22:21 pysession.conf
[root@lb01 conf.d]# scp game.conf 172.16.1.6:/etc/nginx/conf.d
[root@lb01 conf.d]# scp ../nginx.conf 172.16.1.6:/etc/nginx/
[root@lb01 conf.d]# scp ../proxy_params 172.16.1.6:/etc/nginx/
[root@lb01 conf.d]# scp -r ../ssl_key 172.16.1.6:/etc/nginx/
重启nginx
[root@lb02 conf.d]# nginx -t
[root@lb02 conf.d]# systemctl restart nginx
1)安装keepalived(lb01和lb02)
在所有的需要流量的机器上部署keepalived。
yum install keepalived -y
2) 添加VIP配置
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
#全局配置
global_defs {
#身份识别(全局唯一)
router_id lb01
}
# 配置VRRP协议
vrrp_instance VI_1 {
# 状态,MASTER和BACKUP(这里仅仅是一个标记,正真确认VIP的是权重)
state MASTER
# 绑定网卡
interface eth0
# 虚拟路由标示,可以理解为分组
virtual_router_id 50
# 优先级(数字越大,权重越大)
priority 100
# 监测心跳间隔时间
advert_int 1
# 配置认证
authentication {
# 认证类型
auth_type PASS
# 认证的密码
auth_pass 1111
}
# 设置VIP
virtual_ipaddress {
# 虚拟的VIP地址
192.168.15.200
}
}
[root@lb02 ~]# vim /etc/keepalived/keepalived.conf
#全局配置
global_defs {
#身份识别(全局唯一)
router_id lb02
}
# 配置VRRP协议
vrrp_instance VI_1 {
# 状态,MASTER和BACKUP(这里仅仅是一个标记,正真确认VIP的是权重)
state BACKUP
# 绑定网卡
interface eth0
# 虚拟路由标示,可以理解为分组
virtual_router_id 50
# 优先级(数字越大,权重越大)
priority 90
# 监测心跳间隔时间
advert_int 1
# 配置认证
authentication {
# 认证类型
auth_type PASS
# 认证的密码
auth_pass 1111
}
# 设置VIP
virtual_ipaddress {
# 虚拟的VIP地址
192.168.15.200
}
}
3)、web服务器
启动nginx:
systemctl start nginx
4)修改Windows的hosts
5) 启动keepalived服务(lb01和lb02)
systemctl start keepalived
6)测试
7)访问https:game.test.com
关闭lb01的keepalived
注意:
虚拟VIP无法在云服务器上使用,因为云服务器不支持虚拟IP。