1什么是高可用,为什么要设计高可用?.
- 一般指启动两台相同的业务系统, 当有一台故障,另外一台自动接管,对于用户而言是无感知的
* 专业解释: 减少系统不能提供服务的时间。
2.高可用使用什么工具来实现? 是硬件还是软件?
- keepalived
3.keepalived如何实现高可用?
- keepalived需要借助一个VRRP协议来实现高可用.
* VRRP 虚拟路由冗余协议
4.vrrp诞生的过程以及vrrp的原理?
- 1.增加一个backup (不同IP) 不行 (所有人都需要修改网关地址)
- 2.增加一个backup (相同IP) 不行 (所有人都需要情况arp缓存表)
- 3.给master和backup前面增加一个 vip和 vmac
.安装keeplaived
[root@lb01 ~]# yum install keepalived -y
[root@lb02 ~]# yum install keepalived -y
2.配置keeplaived
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 50
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
}
}
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
}
}
3.启动keeplaived (所有机器都需要执行)
[root@lb02 ~]# systemctl enable keepalived.service
[root@lb02 ~]# systemctl start keepalived.service
.keepalived高可用地址漂移测试?
1.停止keeplaived就能测试是否正常漂移虚拟IP地址 VIp
2.停止后,我们可以使用 ip addr|grep 10.0.0.3 检查虚拟IP在哪台主机上
3.使用windows持续ping 虚拟VIP -->模拟keepalived故障 ( arp )
4.抓包查看切换的过程
9.keepalived高可用抢占式与非抢占式?
#Master
vrrp_instance VI_1 {
state BACKUP
priority 150
nopreempt
}
#Backup
vrrp_instance VI_1 {
state BACKUP
priority 100
nopreempt
}
.如果nginx故障了? 故障会转移? --->不会
1.脚本怎么写? 监控Nginx是否存活,不存活则kill掉Keeplaived
1.1 检查Nginx进程 ps
1.2 检查端口存活状态 80 443 netstat
1.3 检查网站是否返回输出结果 curl
[root@lb01 conf.d]# cat /scripts/check_web.sh
#!/usr/bin/bash
#1.检查nginx进程数量
Nginx_Process_Number=$(ps -C nginx --no-header|wc -l)
#2.判断nginx进程数量
if [ $Nginx_Process_Number -lt 2 ];then
#3.如果进程小于2,则尝试重新启动一次Nginx,并等待2s
systemctl restart nginx &>/dev/null
sleep 2
Nginx_Process_Number=$(ps -C nginx --no-header|wc -l)
#4.如果再次执行进程还是小于2,则直接kill掉keeplaived
if [ $Nginx_Process_Number -lt 2 ];then
pkill keepalived
fi
fi
[root@lb01 conf.d]# chmod +x /scripts/check_web.sh
2.脚本放哪?
2.1 定时任务 ( 分钟级 )
2.2 sleep命令 ( 秒级 ) --->丢后台 ---> screen
1.yum install screen -y
2.开启一个新的会话---> screen -S Name
3.在screen中使用ctrl+a+d 回到Bash窗口
4.screen -list ---> screen -r pid|name
注意:不能再screen窗口中执行ctrl+d的操作
2.3 keeplaived 调脚本 ( 秒 | 分 )
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_01
}
#1.每5秒执行一次脚本, 脚本执行内容不能超过5秒,否则会被中断再次重新运行脚本
vrrp_script check_web {
script "/server/scripts/check_web.sh"
interval 5
}
vrrp_instance VI_1 {
nopreempt
state MASTER
interface eth0
virtual_router_id 50
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3
}
#2.调用并运行该脚本
track_script {
check_web
}
}