前言
在这个高度信息化的IT时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,使得对高可用(HA)技术的应用需求大量上升,以便提供持续的、不间断的计算机系统或网络服务。
使用Keepalived实现双机热备,包括针对IP地址的故障切换,以及在LVS高可用群集中的热备应用。
一、Keepalived 双机热备基础
1.1、Keepalived 概述及安装
1.1.1、Keepalived 的热备方式
Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
VRRP,虚拟路由冗余协议,是针对路由器的一种备份解决方案
由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
1.1.2、Keepalived 的安装与服务控制
在LVS群集环境中应用时,也需用到 lipvsadm管理工具
YUM安装 Keepalived
启用 Keepalived服务
[root@localhost ~]# yum -y install keepalived ipvsadm
1.2、使用Keepalived 实现双机热备
Keepalived可实现多机热备,每个热备组可有多台服务器,最常用的就是双机热备
双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
本次部署将实现基于web服务的双机热备
1.2.1、主服务器的配置
Keepalievd配置目录位于/etc/keepalievd/
keepalievd.conf是主配置文件
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs{
…}区段指定全局参数
vrrp_instance实例名称{
…}区段指定VRRP热备参数
注释文字以“!”符号开头
目录samples/,提供了许多配置样例作为参考
常用配置选项
router_id HA_TEST_R1: 本路由器(服务器)的名称
vrrp_instance VI_1:定义VRRP热备实例
state MASTER:热备状态,MASTER表示主服务器
interface ens33:承载VIP地址的物理接口
virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
priority 100:优先级,数值越大优先级越高
advert_int 1:通告间隔秒数(心跳频率)
auth_type PASS:认证类型
auth_pass 123456:密码字串
virtual_ipaddress{
vip}:指定漂移地址(VIP),可以有多个,多个漂移地址以逗号分隔
确认配置没有问题,启动Keepalived服务,通过ip命令可以查看
[root@localhost keepalived]# systemctl start keepalived ####启动keepalived
[root@localhost keepalived]# ip addr show dev ens33 ####查看主控制IP地址和漂移地址
1.2.2、备用服务器的配置
Keepalived备份服务器的配置与master的配置有三个选项不同
router_id:设为自由名称
state:设为BACKUP
priority:值低于主服务器
其他选项与master相同
1.2.3、测试双机热备功能
测试双机热备的效果
主、备机均启用Web服务,内容相同
先后禁用、启用主服务器的网卡,执行以下测试
测试1:使用ping检测19216810.72的连通性
测试2:访问htt:/192168.10.72,确认可用性及内容变化
测试3:查看日志文件/var/log/messages中的变化
二、LVS+Keepalived 高可用群集 实战部署
2.1、实验环境
VMware 5台服务器
IP地址规划:
漂移地址(VIP):192.168.100.100
主调度器:192.168.100.21
辅调度器:192.168.100.20
WEB服务器1:192.168.100.22
WEB服务器2:192.168.100.23
存储服务器:192.168.100.24
2.2、配置主调度器
2.2.1、调整/proc 响应参数
[
root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]