目录
一、高可用场景及解决方案
高可用(High Avaliability,简称HA)就是主机的冗余和接管。Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。
Keepalive起初是为LVS(Linux Virtual Server 虚拟的服务器集群负载均衡系统)设计的,一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。
后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,它能够保证当个别节点宕机时,通过VRRP可以实现网络不间断稳定运行,因此Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。
二、配置 KeepAlived
1.yum 安装 KeepAlived
准备两台虚机,nginx01为主服务器,nginx02为备用机(backup),两台虚机都需要安装 KeepAlived
[root@nginx01 ~]# yum install -y keepalived
2.修改配置文件
对默认配置文件一些不必要的内容进行了修改,最终的内容如下:
主服务:
[root@nginx01 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
# 路由id可自定义,可以是ip好辨认
router_id 101
}
# 虚拟ip的配置
vrrp_instance test { # vrrp 内网通讯协议 test:实例名称,可自定义
state MASTER # 主服务器为 MASTER,备份服务器则为 BACKUP
interface ens32 # ens32: 网卡名称(根据实际情况,ifconfig可查)
virtual_router_id 51 # 主、备机的 id需要相同
priority 100 # 主、备机竞选机制的优先级,值越高越优先
advert_int 1 # 间隔检测时间
authentication { # 同一组 KeepAlived 的认证配置
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # 虚拟出来的ip地址,可填多个
192.168.78.200
}
}
备用机:
[root@nginx02 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
# 路由id可自定义,可以是ip好辨认
router_id 100
}
# 虚拟ip的配置
vrrp_instance test { # vrrp 内网通讯协议 test:实例名称,可自定义
state BACKUP # 主服务器为 MASTER,备份服务器则为 BACKUP
interface ens32 # ens32: 网卡名称(根据实际情况,ifconfig可查)
virtual_router_id 51 # 主、备机的 id需要相同
priority 50 # 主、备机竞选机制的优先级,值越高越优先
advert_int 1 # 间隔检测时间
authentication { # 同一组 KeepAlived 的认证配置
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # 虚拟出来的ip地址,可填多个
192.168.78.200
}
}
3.启动 KeepAlived
主、备机都需要启动服务:
[root@nginx01 ~]# systemctl start keepalived.service
[root@nginx01 ~]# systemctl enable keepalived.service
[root@nginx01 ~]# systemctl status keepalived.service
[root@nginx01 ~]# ip a # 查看ip,发现主服务器多出个虚拟ip,而备用机没有,因为主服务器优先级高
4.测试
在 cmd 里 先ping 虚拟ip 200(此时虚拟ip在 nginx01),可以通,然后把 nginx01 关机,出现一个“请求超时”,后面继续可以ping通
此时虚拟ip来到 nginx02:
在浏览器访问200虚拟ip也是来到nginx02这台服务器:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74623.html