一.Keepalived的介绍
Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障,使多台节点安装keepalived。其他节点用来提供真实的服务,同样的,他们对外表现出一个虚拟IP。当主服务器宕机时,从服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
Keepalived主要由两大模块,VRRP static和checkers,实现HA集群中失败切换功能。Keepalived通过VRRP功能再结合LVS负载均衡即可部署一个高性能的负载均衡集群系统。Checkers主要实现对服务器运行的状态监测和故障隔离,其中ipvs和realserver健康状态检查通过配置文件就可以实现,而其他服务则需要编写脚本,然后通过keepalived文件调用。
Keepalived运行有3个守护进程。父进程主要负责读取配置文件初始化、监控2个子进程等;然后两个子进程,一个负责VRRP,另一个负责Cheackers健康检查。其中父进程监控模块为WacthDog,工作实现:每个子进程打开一个接受unix域套接字,父进程连接到那些unix域套接字并向子进程发送周期性(5s)hello包。
上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)
和内核空间(kernel space)。
内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)
和NETLINK(提供高级路由及其他相关的网络功能)两个部份。
二.Keepalived的特性
1.配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能
2.稳定性强:keepalived是一个类似于layer3, 4 & 7交换机制的软件,具备我们平时说的第3层、第4层和第7层交换机的功能,常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。
3.成本低廉:开源软件,可直接下载配置使用,没有额外费用。
4.应用范围广:因为keepalived可应用在多个层面,所以它几乎可以对所有应用做高可用,包括LVS、数据库、http服务、nginx负载均衡等等
5.支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择。
三.什么是VRRP
VRRP (Virtual Router Redundancy Protocol ,虚拟路由冗余协议)可以认为是实现路由器高可用的协议,简单的说,当一个路由器故障时可以由另一个备份路由器继续提供相同的服务。
VRRP 根据优先级来确定虚拟路由器中每台路由器的角色(Master 路由器或Backup 路由器)。VRRP 优先级的取值范围为0 到255 ( 数值越大表明优先级越高 ),可配置的范围是1 到254 ,优先级0 为系统保留给路由器放弃Master 位置时候使用,255 则是系统保留给IP 地址拥有者使用。优先级越高,则越有可能成为Master 路由器。当两台优先级相同的路由器同时竞争Master 时,比较接口IP
四.Keepalived软件介绍
Keepalived:
程序包:keepalived #通过yum源安装
/etc/keepalived/keepalived.cong #主配置文件
/etc/sysconfig/keepalived #启动时的添加参数
/etc/rc.d/init.d/keepalived #启动脚本
/usr/sbin/keepalived #启动程序
五.实验
实验环境:主从服务器两台,两台实现LNMP的rs-server两台
主服务器:vip : 192.168.1.100
DIP:192.168.19.113
从服务器:VIP:192.168.1.100
DIP:192.168.19.114
Rs-server1:192.168.19.111
RS-server2:192.168.19.112
关闭selinux策略和防火墙,安装keepalived包,并且已经实现过DR
配置主服务器:
- vim /etc/keepalived/keepalived.cong
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface ens37
virtual_router_id 76
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.19.111 80 {
weight 1
HTTP_GET{
url {
path /
}
connect_timeout 3
delay_before_retry 3
}
}
real_server 192.168.19.112 80 {
weight 1
HTTP_GET{
url {
path /
}
- 配置从服务器
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 76
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.19.111 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
delay_before_retry 3
}
}
real_server 192.168.19.111 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
delay_before_retry 3
connect_timeout 3
}
}
3.systemctl start keepalived
4.查看ipvsadm
5.测试
6.将主服务器的keepalived停用,模拟宕机
7.查看VIP是否漂移
8.测试
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88391