CentOS/Redhat Linux:安装Keepalived为Web群集提供IP故障转移
Keepalived为LVS群集提供了强大而健壮的运行状况检查。
它在多层上实现了用于服务器故障转移的健康检查框架,并通过VRRPv2堆栈来处理导向器故障转移。
如何为nginx或者lighttpd等反向代理服务器安装和配置Keepalived?
如果您使用LVS Director在生产环境中对服务器池进行负载平衡,则可能需要一个健壮的健康检查和故障转移解决方案。
这也适用于反向代理服务器,例如nginx。
拓扑
Internet- | ============= | ISP Router| ============= | | | |eth0 -> 192.168.1.11 (connected to lan) |-lb0==| | |eth1 -> 192.54.1.1 (vip master) | | |eth0 -> 192.168.1.10 (connected to lan) |-lb1==| |eth1 -> 192.54.1.1 (vip backup)
其中:
- lb0 Linux盒通过eth1直接连接到Internet。这是主负载均衡器。
- lb1 Linux盒通过eth1直接连接到Internet。这是备用负载平衡器。如果主控网络失败,它将变为活动状态。
- 192.54.1.1该IP在lb0和lb1服务器之间移动。它称为虚拟IP地址,由keepalived管理。
- eth0连接到LAN和所有其他后端软件,例如Apache,MySQL等。
您需要在lb0和lb1上都安装以下软件:
- 为IP故障转移保持活力。
- iptables过滤流量
- nginx或者lighttpd反转代理服务器。
DNS设置应如下所示:
- theitroad.com我们的示例域名。
- lb0.theitroad.com 192.54.1.11(分配给eth1的真实IP)
- lb1.theitroad.com 192.54.1.12(分配给eth1的真实IP)
- www.theitroad.com 192.54.1.1(Web服务器的VIP)未将此IP分配给任何接口。
安装Keepalived
访问keepalived.org以获取最新的源代码。
您可以使用wget命令下载相同的文件(您需要在lb0和lb1上都安装keepalived):
# cd /opt # wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz # tar -zxvf keepalived-1.1.19.tar.gz # cd keepalived-1.1.19
安装内核头文件
您需要安装以下软件包:
- "内核头文件"包含C头文件,这些文件指定Linux内核与用户空间库和程序之间的接口。头文件定义了构建大多数标准程序所需的结构和常量,以及重建glibc软件包所需的结构和常量。
kernel-devel
这个软件包提供了足以针对内核软件包构建模块的内核头文件和makefile。
确保已安装内核头文件和内核开发包。
如果不是,请输入以下内容进行相同的安装:
# yum -y install kernel-headers kernel-devel
编译keepalived
执行以下命令:
# ./configure --with-kernel-dir=/lib/modules/$(uname -r)/build
输出示例:
checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o ... ..... .. config.status: creating keepalived/check/Makefile config.status: creating keepalived/libipvs-2.6/Makefile Keepalived configuration ----------------------- Keepalived version : 1.1.19 Compiler : gcc Compiler flags : -g -O2 Extra Lib : -lpopt -lssl -lcrypto Use IPVS Framework : Yes IPVS sync daemon support : Yes Use VRRP Framework : Yes Use Debug flags : No
编译并安装相同的文件:
# make && make install
创建所需的软链接
输入以下命令以创建服务并在RHEL/CentOS运行级别#3上运行该服务:
# cd /etc/sysconfig # ln -s /usr/local/etc/sysconfig/keepalived . # cd /etc/rc3.d/ # ln -s /usr/local/etc/rc.d/init.d/keepalived S100keepalived # cd /etc/init.d/ # ln -s /usr/local/etc/rc.d/init.d/keepalived .
配置
您的主要配置目录位于/usr/local/etc/keepalived,配置文件名为keepalived.conf。
首先,备份现有配置:
# cd /usr/local/etc/keepalived # cp keepalived.conf keepalived.conf.bak
在" lb0"上按如下所示编辑keepalived.conf:
vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 51 priority 101 authentication { auth_type PASS auth_pass Add-Your-Password-Here } virtual_ipaddress { 192.54.1.1/29 dev eth1 } }
在`lb1'上编辑keepalived.conf(注意优先级设置为100,即备份负载均衡器):
vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 51 priority 100 authentication { auth_type PASS auth_pass Add-Your-Password-Here } virtual_ipaddress { 192.54.1.1/29 dev eth1 } }
保存并关闭文件。
最后,按照以下步骤在lb0和lb1上开始保持活动:
# /etc/init.d/keepalived start
验证:Keepalived是否正常工作
/var/log/messages将跟踪VIP:
# tail -f /var/log/messages
输出示例:
Nov 21 04:06:15 lb0 Keepalived_vrrp: Netlink reflector reports IP 192.54.1.1 added Nov 21 04:06:20 lb0 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.54.1.1
验证分配给eth1的VIP:
# ip addr show eth1
输出示例:
3: eth1: mtu 1500 qdisc pfifo_fast qlen 10000 link/ether 00:30:48:30:30:a3 brd ff:ff:ff:ff:ff:ff inet 192.54.1.11/29 brd 192.54.1.254 scope global eth1 inet 192.54.1.1/29 scope global secondary eth1
ping故障转移测试
打开UNIX/Linux/OS X桌面终端,然后执行以下命令ping通VIP:
# ping 192.54.1.1
登录到lb0并停止服务器或者关闭网络:
# halt
在几秒钟内,VIP应该从lb0移至lb1,并且您应该不会看到ping下降的情况。
在lb1上,您应该在/var/log/messages中获得以下内容:
Nov 21 04:10:07 lb1 Keepalived_vrrp: VRRP_Instance(VI_1) forcing a new MASTER election Nov 21 04:10:08 lb1 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE Nov 21 04:10:09 lb1 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE Nov 21 04:10:09 lb1 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs. Nov 21 04:10:09 lb1 Keepalived_healthcheckers: Netlink reflector reports IP 192.54.1.1 added Nov 21 04:10:09 lb1 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for 192.54.1.1