linux之构建Keepalived双机热备 构建LVS+HA高可用群集
构建Keepalived双机热备 构建LVS+HA高可用群集
结构
1.高可用集群HA
以提高应用系统的可靠性、尽可能减少终端宕机时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,
例如“故障切换”“双击热备”“多机热备”等都属于高可用群集技术。
常用的HA软件:keepalived、heartbeat、corosync、cman
1.基本概念 单点故障(Single Point of Failure
2.检测方法
健康状态监测:检测服务器运行是否正常
监测方法 基于协议层次监测:
ping命令:icmp协议
传输层:nmap,nmap是一个网络连接端扫描软件,探测一组主机是否在线,也可扫描主机端口以判断某个服务是否在线
应用层:获取关键性资源,如进程与服务器的端口
状态判断:
下线 ok--->fail--->fail--->fail
上线 fail---->ok---->ok
3.高可用思路
为了实现高可用,需要配置VIP,提供同一个访问接口地址。
主节点出现故障,备节点必须第一时间将VIP抢占过来,备节点必须时刻监控主节点的健康状态。
若不是负载均衡调度器,还需考虑共享资源的安全转移,而不仅仅是VIP。
若主节点健康并恢复服务,备节点需要将VIP还给主节点。
主节点需要定时向备节点通知自己的健康状态,让备节点实时了解主节点健康状态。
主节点、备节点包括整个网络架构时间必须是精确同步,需要基于ntp服务进行同步时间。
2.keepalived概述及 LVS+HA实验
关于keepalived
专为LVS和HA设计的一款健康检查工具
支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)
官方网站:http://www.keepalived.org/
1.)keepalived的热备方式
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)
一主 + 多备,共用同一个VIP地址,但优先级不同
2.)两台服务端 安装keepalived和 httpd服务
yum -y install httpd 挂载光盘安装HTTP的服务
配置 两台httpd网站服务 设置20网段 IP地址
主、备服务器:192.168.20.100 192.168.20.200
提供的应用服务:Web 的httpd服务
vim /etc/sysconfig/network-scripts/ifcfg-ens33 更改IP
cd /var/www/html/
vim index.html 编写测试静态网页
3.)双机热备 安装keepalived服务 主服务器配置 漂移地址20.88
设置本地yum源 (可以使用yum方式进行安装,也可以使用编译安装,区别不大)
yum -y install keepalived
/etc/keepalived/keepalived.conf keepalived主配置文件
/usr/sbin/keepalived keepalived主程序文件
/usr/lib/systemd/system/keepalived.service 相当于keepalived服务启停脚本
/usr/share/doc/keepalived-1.3.5/samples/ keepalived众多配置的模板
vi /etc/keepalived/keepalived.conf更改主配置文件 增加漂移地址
global_defs { ... }全局设置
vrrp_instance 实例名称 { ... }热备设置
主服务器配置
state设置本节点状态,MASTER、BACKUP
priority设置竞选优先级,数值越大优先级越高
virtual_ipaddress { ... }设置漂移IP地址
……
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_MASTER 本服务器的名称
}
vrrp_instance VI_1 { 定义VRRP热备实例
state MASTER MASTER表示主服务器
interface ens33 承载VIP地址的物理接口
virtual_router_id 1 虚拟路由器的ID号
priority 100 优先级,数值越大优先级越高
advert_int 1 通告间隔秒数(心跳频率)
authentication { 认证信息
auth_type PASS 认证类型
auth_pass 123456 密码字串 可保留默认1111
}
virtual_ipaddress {
192.168.20.88 指定漂移地址(VIP)
}
}
4.)备用服务器配置
可以从主服务端传过来
scp keepalived.conf root@192.168.20.200:/etc/keepalived/
router_id设为自有名称
state设为BACKUP
Priority值低于主服务器
—— 其余所有配置均与主服务器相同
vi /etc/keepalived/keepalived.conf
global_defs {
router_id BACKUP 本服务器的名称
}
vrrp_instance VI_1 {
state BACKUP SLAVE表示从服务器
interface ens33
virtual_router_id 1
priority 99 优先级,低于主服务器
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.20.88/24
}
}
5.)启用keepalidved服务 测试
主、备机中 均启用keepalived服务
其中优先级最高的设备将获得VIP的控制权
VIP地址会 由keepalived自动设置
测试双机热备的效果
主、备机均启用Web服务,内容不相同
先后禁用、启用主服务器的keepalived,执行以下测试
测试1:使用ping检测192.168.20.88的连通性
测试2:访问http://192.168.20.88/,确认可用性及内容变化
测试3:查看日志文件/var/log/messages中的变化
systemctl start keepalived --会看到只有主服务器的网页
关闭主 服务 会漂移到备用服务器的网页
systemctl stop keepalived.service --关闭主服务器的服务
查看日志 tail /var/log/messages
tail -100 /var/log/messages | grep -i master
3.LVS与keepalived的结合
负载均衡+高可用群集
针对LVS调度器实现双机热备
能够管理服务器池,自动隔离失效节点
从外网来请求 交给交换机 交给LVS调度器(主) 调度器根据算法交给web真实服务器
服务器收到请求 经过交换机给予客户端回复
如果主LVS调度器荡掉了 那么辅助服务器替代主服务器
当主LVS 修复好 辅助就会还给主LVS
主、从调度器配置要点
清除手动设置的ipvsadm策略
配置keepalived双机热备,并添加服务器池设置
[root@localhost ~]# service ipvsadm stop
ipvsadm: Clearing the current IPVS table:[确定]
ipvsadm: Unloading modules:[确定]
[root@localhost ~]#systemctl disable ipvsadm
1.)源码编译安装keepalived 主KEEP
modprobe ip_vs启动模块
yum -y install ipvsadm安装LVS
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel安装编译软件
tar xzvf keepalived-2.0.18.tar.gz解压
cd keepalived-2.0.18
./configure --prefix=/ && make && make install到目录解压 指定目录
cd keepalived-2.0.18/
cp keepalived/etc/init.d/keepalived /etc/init.d/辅助keeplived启动服务
2.)修改keep主配置文件增加20.88漂移
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vi /etc/keepalived/keepalived.confkeep主配置文件
service keepalived start配置完成后启动服务
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
……
virtual_server 192.168.20.88 80 {
delay_loop 15健康检查间隔
lb_algo rr使用轮询调度算法
lb_kind DRDR模式的群集
! persistence 60连接保持时间
protocol TCP
real_server 192.168.20.100 80 {
……
}
real_server 192.168.20.200 80 {
……
}
……
}
第一台服务器
real_server 192.168.20.100 80 {
weight 1节点权重
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
……
第二台服务器
real_server 192.168.20.200 80 {
weight 1节点权重
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
……
3.辅助KEEP 同上操作 修改主配置文件即可
scp keepalived.conf root@192.168.20.20:/etc/keepalived/ 把主keep服务端 配置发给 辅
vim /etc/keepalived/keepalived.conf
修改router_idLVS_BACKUP
修改权重 priority 为低于主keep的
修改ip端口 即可
4.在所有RS服务器(httpd web服务)上执行 关闭回环
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig lo:0 192.168.20.88 netmask 255.255.255.255 broadcast 192.168.20.88 up
route add -host 192.168.20.88 dev lo:0
5.LVS+HA群集的测试
访问 http://192.168.20.88/,正常显示Web页面
主、从调度器其中一台失效,站点访问及负载仍然正常
只要保持至少一个Web节点有效,整个站点依然可用
当节点状态异常时发送通知
notification_email:设置收信人地址
notification_email_from:设置发信人地址
smtp_server:指定SMTP发信服务器
smtp_connect_timeout:SMTP连接超时
keepalived的邮件通知
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost.localdomain
}
notification_email_from TsengYia root@localhost.localdomain
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_HA_R1
}
……
[root@localhost ~]# service keepalived restart