7.1 Keepalived 双机热备基础知识
Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover) 和健康检查査(Health Checking)功能一一判断LVS 负载调度器、节点服务器的可用性,及时隔离并替 换为新的服务器,当故障主机恢复后将其重新加入群集。
7.1.1 Keepalived 概述及安装
Keepalived的官方网站位于http://www.keepalived.org/、本章将以YUM方式讲解Keepalived的 安装,配置和使用过程。在非LVS群集环境中使用时,Keepalived也可以作为热备软件使用。
1. Kcepalived的热备方式
Keepalived 采用VRRP (Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以 软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案一一由多台 路由器组成一个热备组,通过共用的虚拟P地址对外提供服务,每个热备组内同一时刻只有一台主 路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替 (优先级决ぐ接替顺序)虚拟IP地址,以继续提供服务,如图7.1所示。 热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived时,漂移地址的实现不需要手动建立 虚接口配置文件(如 ens33:0),而是由Keepalived 根据配置文件自动管理。
部署配置实验
实验环境
虚拟机 4台 centos7.3
网卡NAT模式 数量 1
组件包LVS、keepslived、httpd
设备 | IP | 备注 |
Centos01 | 192.168.161.102 | node01 |
Centos02 | 192.168.161.103 | node02 |
Centos03 | 192.168.161.104 | web1 |
Centos04 | 192.168.161.105 | web2 |
初始配置
关闭防火墙
[root@node02 ~]# Systemctl disable firewalld --now
[root@node02 ~]# vim /etc/sysconfig/selinux
关闭Selinux
[root@node02 ~]# setenforce 0
配置IP DNS 网关
[root@node02 ~]# nmtui
两台调度节点配置并安装
[root@node02 ~]# yum install -y keepalived ipvsadm
修改配置文件
node02 配置内容
[root@node02 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER //角色 MASTER BACKUP
interface ens33 //本地网卡 ens33
virtual_router_id 51 //VRRP组号
priority 100 //优先级
advert_int 1 //VRRP传递时间 1s
authentication { //VRRP认证
auth_type PASS //认证类型
auth_pass abc.123 //密码
}
virtual_ipaddress { //虚拟IP,VIP,飘逸地址
192.168.161.200
}
}
node03 配置内容
[root@node03 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP //角色 MASTER BACKUP
interface ens33 //本地网卡 ens33
virtual_router_id 51 //VRRP组号
priority 90 //优先级
advert_int 1 //VRRP传递时间 1s
authentication { //VRRP认证
auth_type PASS //类型密码
auth_pass abc.123 //密码
}
virtual_ipaddress { //虚拟IP,VIP,飘逸地址
192.168.160.200
}
}
启动服务
[root@node02 ~]# systemctl enable keepalived --now
验证虚拟 IP 切换
node02 和 node03 查看虚拟IP
[root@node02 ~]# ip add
node02 关闭keepalived
[root@node02 ~]# systemctl stop keepalived
node03 查看虚拟IP
[root@node03 ~]# ip add
查看日志
找到主备切换
[root@node03 ~]# tail /var/log/messages
LVS+keepalived 高可用配置
WEB节点web1、web2配置 服务及站点
[root@node04 ~]# yum -y install httpd
[root@node04 ~]# echo "<h1>www.web1.com</h1>" > /var/www/html/index.html //仅在web1配置
[root@node04 ~]# echo “<h1>www.web2.com</h1>” > /var/www/html/index.html //仅在web2配置
[root@node04 ~]# systemctl enable httpd --now
主 备 关联后端WEB节点 并配置节点切换策略
[root@node02 ~]# vim /etc/keepalived/keepalived.conf
virtual_server 192.168.161.200 80 {
delay_loop 6
lb_algo rr 轮询方式
lb_kind DR LVS模式 NAT DR TUN
persistence_timeout 50 超时时间50s
protocol TCP 协议TCP
节点服务器1
real_server 192.168.161.104 80 {
weight 1 轮询权重
CHECK { 开启检测
connect_port 80 链接端口
connect_timeout 3 链接超时3s
nb_get_retry 3 重试次数
delay_before_retry 3 重试间隔时间3s
}
}
节点服务器2
real_server 192.168.161.105 80 {
weight 1
CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
重启服务
[root@node02 ~]# systemctl restart keepalived
主 备 两台LVS调度节点配置
[root@node02 ~]# ipvsadm > /etc/sysconfig/ipvsadm
[root@node02 ~]# ipvsadm -A -t 192.168.161.200:80 -s rr
[root@node02 ~]# ipvsadm -a -t 192.168.161.200:80 -r 192.168.161.104:80 -g -w 1
[root@node02 ~]# ipvsadm -a -t 192.168.161.200:80 -r 192.168.161.105:80 -g -w 1
[root@node02 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@node02 ~]# systemctl restart ipvsadm
[root@node02 ~]# ipvsadm -ln
[root@node02 ~]# cat /etc/sysconfig/ipvsadm //查看保存结果
两台web节点配置
[root@node04 ~]# cd /etc/sysconfig/network-scripts/
[root@node04 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@node04 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.160.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=lo:0
[root@node04 ~]# systemctl restart network
验证WEB节点切换访问
浏览器访问测试
web1 http://192.168.161.104
web2 http://192.168.161.105
虚拟IP httpd://192.168.161.200