1.keepalive是什么
中文名为存活检测机制,顾名思义,就是用来检测群组服务器中有没有服务器停止工作了,具有防止单点故障的功能
主要可以实现loadbalancing(负载均衡)和 high-availability(高可用)功能
负载均衡需要配合DR模式,keepalive就是基于vrrp协议协议而实现高可用的
采用多进程的设计模式,每个进程负责不同的功能
2.vrrp协议
概念:在节点(主机)出现故障时,实现ip地址的切换。
keepalive就是基于此协议而实现高可用的。Failover:故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作;
Failback:故障移回,即某资源的主节点故障后重新修改上线后,将转移至其它节点的资源重新切回的过程;
3.配置keepalive
1)server1
首先配置yum源,将其中的内核软件加入yum源中
vim /etc/yum.repos.d/rhel-source.repo ##添加以下内容
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.1.254/rhel6.5/HighAvailability
enabled=1
gpgcheck=1
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.1.254/rhel6.5/LoadBalancer
enabled=1
gpgcheck=1
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.1.254/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=1
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.1.254/rhel6.5/ResilientStorage
enabled=1
gpgcheck=1
然后需要编译keepalive的源码包,我这里是通过ftp方式传到的虚拟机
tar zxf keepalived-2.0.6.tar.gz
cd keepalived-2.0.6
在进行编译之前,我们需要进行安装keepalive的依赖包
yum install openssl-devel -y
yum install gcc -y
然后进行编译
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make && make install
接下来赋予脚本可执行权限
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
制作keepalived软连接
ip addr del 172.25.1.100/24 dev eth0 ##删除虚拟ip
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
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
最重要的一步,修改keepalive的配置文件
vim /etc/keepalived/keepalived.conf 修改为如下内容
! Configuration File for keepalived
## 全局配置
global_defs { ##全局定义块
notification_email { ##邮件通知
root@localhost
}
#设置邮件的发送地址
notification_email_from keepalived@localhost
smtp_server 127.0.01 #设置 smtp server 地址
smtp_connect_timeout 30 #设置连接 smtp 服务器超时时间
router_id LVS_DEVEL #load balancer 的标识 ID,用于 email 警报
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
## VRRPD配置
vrrp_instance VI_1 {
state MASTER #备机改为 BACKUP,此状态是由 priority 的值来决定的,当前
priority 的值小于备机的值,那么将会失去 MASTER 状态
interface eth0 #HA 监测网络接口
virtual_router_id 51 #主、备机的 virtual_router_id 必须相同,取值 0-255
priority 100 #主机的优先级,备份机改为 50,主机优先级一定要大于备机
advert_int 1 #主备之间的通告间隔秒数
authentication {
auth_type PASS #设置验证类型,主要有 PASS 和 AH 两种
auth_pass 1111
}
##指定漂移地址(VIP),即切换到MASTER时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),所以每台服务器可以不用绑定任何的虚拟地址。
virtual_ipaddress {
172.25.1.100
}
}
## 虚拟服务配置
virtual_server 172.25.1.100 80 { #定义虚拟服务器
delay_loop 6 #定义虚拟服务器
lb_algo rr #lvs 调度算法,这里使用轮叫
lb_kind DR #LVS 是用 DR 模式
#persistence_timeout 50 #注释掉
protocol TCP #指定转发协议类型,有 tcp 和 udp 两种
real_server 172.25.1.2 80 { #配置服务节点
weight 1 ##默认为1,0为失效
TCP_CHECK{ ##TCP方式的健康检查,realserve 的状态检测设置部分,单位是秒
connect_timeout 3 #10 秒无响应超时
retry 3 #重试次数
delay_before_retry 3 #重试间隔
}
}
real_server 172.25.1.3 80 {
weight 1
TCP_CHECK{
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
将配置好的所有文件发给备用机server4
scp -r /usr/local/keepalived [email protected]:/usr/local
2)server4
首先配置yum源,将其中的内核软件加入yum源中
vim /etc/yum.repos.d/rhel-source.repo ##添加以下内容
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.1.254/rhel6.5/HighAvailability
enabled=1
gpgcheck=1
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.1.254/rhel6.5/LoadBalancer
enabled=1
gpgcheck=1
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.1.254/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=1
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.1.254/rhel6.5/ResilientStorage
enabled=1
gpgcheck=1
修改keepalive配置
vim /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP ##修改地方1
interface eth0
virtual_router_id 19
priority 50 ##修改地方2
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.1.100
}
}
virtual_server 172.25.1.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 172.25.1.2 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.1.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
作跟servre1一样的软连接
ip addr del 172.25.1.100/24 dev eth0 ##删除虚拟ip
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
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
3.测试
1)高可用
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived ##server1和server4都加权限
/etc/init.d/keepalived start ##server和server4都开启keepalive服务
开启服务以后会自动分配ip地址,以下是server1
我们这里将server的keepalive服务关闭,就会发现keepalive服务自动漂移到了server4,如下图
2)高可用下的健康检查
当realserver即server2和server3都正常的时候
当其中server2坏掉的时候
当两台都坏掉的时候
ok~