高可用
什么是高可用
高可用指一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。
常用工具
1.硬件通常使用 F5
2.软件通常使用 keepalived
部署Keepalived
keepalived配置
修改keepalived的配置文件
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { # 主机名 router_id lb02 } # 检测脚本 vrrp_script check_nginx { # 指定脚本路径 script "/etc/keepalived/checkNG.sh" # 执行间隔 interval 5 } # 配置VRRP协议 vrrp_instance VI_1 { #状态,MASTER和BACKUP #非抢占式需要使用BACKUP state BACKUP # 开启非抢占式 nopreempt #绑定网卡 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.3 } # 调用检查 track_script { check_nginx } }配置文件
启动keepalived
测试:
解决nginx宕机问题
nginx宕机后,服务器并没有出问题,keepalived就不会自动将ip转到另一台服务器上,想解决这个问题,就要想办法告诉keepalived,Nginx的情况。
编写脚本供keepalived使用
#!/bin/bash # 解决Nginx无法正常启动 ps -ef | grep -q [n]ginx if [ $? -ne 0 ];then # 代表Nginx未正常启动 systemctl start nginx &>/dev/null sleep 2 ps -ef | grep -q [n]ginx if [ $? -ne 0 ];then systemctl stop keepalived fi fi # $?表示上条命令的执行结果,0表示有结果 # -ne 表示不相等 # & 表示上条命令的输出 # >/dev/null 相当于放入回收站脚本代码
非抢占式
两个节点都启动时,由于节点1优先级高于节点2,所以只有节点1上有VIP。当节点1keepalived挂掉,节点2会自动接管节点1的工作。因为节点1优先级高于节点2,所以当节点1恢复时,会将VIP抢占回来。这就是抢占式。
非抢占式就是节点一重启后,虽然他的优先级高但却不会抢占vip,而是当节点2宕机后才会接管节点2的工作
配置要点:
1.两个节点的state都必须配置为BACKUP
2.两个节点都必须加上配置 nopreempt
3.其中一个节点的优先级必须要高于另外一个节点的优先级。
两台服务器都角色状态启用nopreempt后,必须修改角色状态统一为BACKUP,唯一的区分就是优先级。
四层负载均衡
当需要对非http协议的项目进行负载均衡时需要使用四层负载均衡的模式
案例:使用四层负载均衡实现SSH的代理,端口为1122
1.修改nginx配置
2.创建文件夹并新增配置文件
3.重启nginx