keepalived双机热备
1:keepalived双机热备,主要是用来提供故障切换,和对节点服务器的健康检查。当故障主机回复之后加入群集
2:keepalived是基于vrrp协议的方式进行热备方式,除了一个主服务器之外可以有多个从服务器,而且每一台从服务器的优先级等级各不相同。
3:工作的时候只有主服务器在工作其他服务器处于冗余状态,只要主服务器一旦发生宕机,从服务器,优先级最高的将接任主服务器的位置,以此类推。当主服务器故障排除之后,将重新夺得控制权
VIP 地址为192.168.1.254
主调度器 从调度器 web1服务器 web2服务器 nfs服务器
192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5
keepalived的安装与服务控制
在编译安装keepalived之前首先解决安装内核的开发包kernel-devel、openssl-devel、popt-devel以及ipvsadm等支持库,当然ipvsadm是在后续的lvs群集中使用
1)安装支持软件
#yum -y install kernel-devel openssl-devel popt-devel
#yum -y install ipvsadm
2)编译安装keepalived
#tar zxf /mnt/keepalived-1.2.13.tar.gz -C /usr/src
# cd /usr/src/keepalived-1.2.13/
[[email protected]]#./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ 安装到“/”目录和指定内核路径
#make && make install
3)使用keepalived服务
#chkconfig --add keepalived
#chkconfig keepalived on
2.主服务器的配置
#cd /etc/keepalived
#cp keepalived.conf keepalived.conf.back
#vim keepalived.conf
global_defs {
router_id LVS_HA_R1 //主调度器的名称
}
vrrp_instance VI_1 { //定义VRRP热备实例
state MASTER //主调度器的热备状态
interface eth0 //承载VIP地址的物理接口
virtual_router_id 1 //虚拟路由器的ID号,每个热备组保持一致
priority 100 //优先级,数值越大优先级越高
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //认证信息,每个热备组保持一致
auth_type PASS //认证类型
auth_pass 123456 //密码字串
}
virtual_ipaddress {
192.168.1.254 //指定漂移地址(vip),可以多个
}
}
3.启动keepalived服务
#service keepalived start
4.备用服务器的配置
1)路由器的名称和优先级不同,其他都一样
5.测试双击热备功能
1)查看ip地址,发现在主服务器上出现VIP
[[email protected] keepalived]# ip add show dev eth0 或者 ip a
inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.254/32 scope global eth0 //自动设置的VIP地址
从服务器的vip查看
1)ping测试。在客户机上ping -t 192.168.1.254,然后禁用主服务器eth0网卡,发现中断了1或2个包即恢复正常,说明,其他服务器已经接替了VIP的地址
2)访问web,主服务器正常的情况下,看到是主服务器的网页,主服务器down掉后就是从服务器的内容,主服务器恢复后看到的还是主服务器的内容
3)查看/var/log/messages日志
从服务器查看将看到:VRRP_Instance(VI_1) Entering BACKUP STATE
主服务器查看将看到:VRRP_Instance(VI_1) Entering MASTER STATE
二、LVS+keepalived高可用群集
1.配置主调度器(lvs负载调度器这一部分可以省略了,完全由keepalived配置完成)
1)全局配置,热备配置(此部分略,保留之前的配置就可以了)
#vim /etc/keepalived/keepalived.conf
2)web服务器池的配置
#vim /etc/keepalived/keepalived.conf
virtual_server 192.168.1.254 80 {//虚拟服务器地址(vip)、端口
delay_loop 6//健康检查的间隔时间(秒)
lb_algo rr//轮询(rr)调度算法
lb_kind DR//直接路由(DR)群集工作模式
! persistence 60//连接保持时间(秒),若启用请去掉!号
protocol TCP//应用服务采用的是tcp协议
real_server 192.168.1.3 80 {//第一个web节点的地址和端口
wright 1//节点的权重
TCP_CHECK {//健康检查方式(手工添加)
connect_port 80 //检查的目标端口
connect_timeout 3 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 4 //重试间隔(秒)
}
}
rel_server 192.168.1.4 80 { //第二个web节点的地址和端口
........
}
3)重启keepalived服务
#service keepalived restart
2.配置从调度器(同主服务器,只需将web服务器池的配置添到/etc/keepalived/keepalived.conf中即可)
3.配置web节点服务器(这部分和lvs的DR模式一样了)
(1)配置虚拟ip地址
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-lo ifcfg-lo:0
#vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.254
NETMASK=255.255.255.255
ONBOOT=yes
#ifup lo:0
(2)为本机添加一条路由,将访问vip的数据波限制在本地
#route add -host 192.168.2.254 dev lo:0
(3)调整/proc响应参数
#vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
#sysctl -p 重启 /etc/sysctl.conf 配置文件
另一台web服务器相同的配置
4.测试LVS+keepalived高可用群集+lvs
在客户机上访问web
http://192.168.1.254
①首先验证lvs,多次刷新页面认真观察
②再将主服务器的eth0网卡down掉,看看还能不能访问
查看是否可以访问的到节点服务器网页内容
5:将nfs共享存储服务器的内容都挂载到web服务器中,保证服务对外的统一性
首先对nfs的web网页进行编辑
然后在/etc/exports文件中设置共享资源,另外为root用户分配权限控制
之后重新启动nfs服务和rpcbind两个服务
通过客户端网页进行测试
说明调度器的HA群集是成功的
补充内容:启用邮件通知功能,以便及时了解各web节点的健康状况
1.修改主配置文件
global_defs {
router_id LVS_HA_R1
notification_email {
root
}
notification_email_from root root
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_HA_R1
}
2.然后,重启keepalived服务
#service keepalived restart
3.查看邮件,down掉web2
#tail /var/spool/mail/root
[[email protected] ~]# tail /var/spool/mail/root
Date: Sun, 16 Apr 2017 09:32:45 +0000
From: [email protected]
Subject: [LVS_HA_R1] Realserver [192.168.2.4]:80 - DOWN
X-Mailer: Keepalived
To: [email protected]
Message-Id: <[email protected]>
=> TCP CHECK failed on service <=