认识keepalived
keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生
主要提供 loadbalancing(负载均衡)和 high-availability(高可用)功能
负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs)
高可用是通过VRRP协议实现多台机器之间的故障转移服务
采用多进程的设计模式,每个进程负责不同的功能
VRRP 协议:
- 用于实现路由器冗余的协议
- 解决静态路由单点故障问题
- 通过一种竞选(election)协议来实现虚拟路由器的功能
实验环境:
1.新建一个虚拟机server4并配置好ip和主机名
2.server1中:
tar zxf keepalive-2.0.6.tar.gz
yum install -y openssl-devel
./configure --prefix=/usr/local/keepalived --with-init=SYSV 编译keepalived的源码包
make && make install
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
编译好以后可以看见IPVS打开
server1和server4都需要制作如下制作软连接方便keepalived的管理与设置
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf samples/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
在server1 中配置/keepalived的配置文件
Keepalived配置文件详解:Keepalived的所有配置都在一个配置文件里面设置,支持的配置项主要分三类:
全局配置(Global Configuration):作用于整个keepalived服务
VRRPD配置:keepalived的核心
虚拟服务配置:指定服务与负载均衡
配置文件都是以块(block)形式组织的,每个块都在{ }包围的范围内#和!开头的行都是注释
vim /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
全局配置
----
global_defs { #全局定义块
notification_email { #邮件通知
sysadmin@localhost
}
#notification_email指定keepalived在发生事件(切换),需要发送email到的对象。可以有多个,每行一个。
notification_email_from keepalive@localhost
smtp_server 127.0.0.1 #smtp_*指定发送email的smtp服务器
smtp_connect_timeout 30
router_id LVS_DEVEL #router_id运行keepalived的机器的一个标识,用于 email 警报
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
VRRPD配置
-------
vrrp_instance VI_1 {
##state指定instance的初始化状态,在两台router都启动后,马上会发生竞选,高priority的会竞选为Master,因而这里的state并不表示这台就一直是Master
state MASTER # 指定该节点为主节点,备用节点设置为BACKUP
interface eth0 #绑定虚拟IP的网络接口
virtual_router_id 1 #设置验证信息,两个节点需一致,取值 0-255
priority 100 # 主节点的优先级,数值在1~254,注意从节点必须比主节点的优先级别低
advert_int 1 #组播信息发送间隔,两个节点需一致
authentication {
auth_type PASS #设置验证类型,主要有 PASS 和 AH 两种
auth_pass 1111
}
##指定漂移地址(VIP),即切换到MASTER时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),所以每台服务器可以不用绑定任何的虚拟地址。
virtual_ipaddress {
172.25.99.100 #指定虚拟IP,两个节点需设置一样
}
}
虚拟服务配置
------
virtual_server 172.25.99.100 80 {
delay_loop 3 #指定检查间隔
lb_algo rr #指定lvs算法
lb_kind DR #指定lvs模式为DR
#persistence_timeout 50 #持久连接设置,会话保持时间,在此处需要注释
protocol TCP #指定转发协议类型,有 tcp 和 udp 两种
#后端实际TCP服务配置
real_server 172.25.99.2 80 {
weight 1 ##默认为1,0为失效
TCP_CHECK { ##TCP方式的健康检查,realserve 的状态检测设置部分,单位是秒
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.99.3 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
将配置好的keepalived文件发送给备机(server4), 并做修改
/etc/init.d/keepalived start
scp -r keepalived server4:/usr/local/
修改VRRPD配置如下
vrrp_instance VI_1 {
state BACKUP ##修改地方1
interface eth0
virtual_router_id 19
priority 50 ##修改地方2
/etc/init.d/ldirectord stop ## keepalived 可实现健康检查 所以关闭ldirectord
chkconfig ldirectord off
将server1(主)的keepalived服务关闭,则vip地址漂移到server4(备)
查看是否轮循:
curl 172.25.99.100
关掉server3的httpd服务
再次查看
再关闭server2httpd查看
server1:
mailq 查看邮件