LVS+keepalived高可用群集

一 Keepalived双机热备

·keepalived概述

Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障自动切换节点健状态检查功能,如判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。在非LVS群集环境中使用时Keepalived也可以作为热备软件使用;官方网站:http://www.keepalived.org/

·keepalived的热备方式

Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能

VRRP是针对路由器的一种备份解决方案-----由多台路由器组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务

热备组内的每台服务器都可以成为主服务器,虚拟IP地址(VIP)可以在热备组内的服务器之间进行转移,所以也称为漂移IP地址,使用Keepalived时,漂移地址的实现不需要手动建立虚拟接口配置文件(如eth0:0),而是由Keepalived根据配置文件自动管理

二 LVS+keepalived高可用群集

使用Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性,对WEB服务器池中的节点进行分健康检查,自动移除失败节点,恢复后再重新加入

在基于LVS-Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台

·实验环境:如图所示

12 LVS+keepalived高可用群集_高可用

其中节点服务器都是双网卡

·配置主调度器

1安装keepalived支持软件

在编译安装Keepalived之前,必须先安装内核开发包kernel-devel以及openssl-devel、popt-devel等支持库(RHEL6中在装系统时如果勾选开发软件和开发工具,则会自动安装)12 LVS+keepalived高可用群集_高可用_02

除此之外,在LVS群集环境中应用时,也需要用到ipvsadm管理工具,先加载ip_vs模块

12 LVS+keepalived高可用群集_高可用_03

12 LVS+keepalived高可用群集_集群_04

2编译安装Keepalived

源码包从官网下载

使用指定的linux内核位置对keepalived进行配置,并将安装路径指定为根目录,这样就无需额外创建链接文件了

12 LVS+keepalived高可用群集_马向军_05

12 LVS+keepalived高可用群集_lvs_06

3配置为系统服务

安装完后会自动生成/etc/init.d/keepalived脚本文件,但还需要手动添加为系统服务,这样就可以使用service、chkconfig工具来对keepalived服务程序进行管理了

12 LVS+keepalived高可用群集_集群_07

4主服务器的配置文件

Keepalived服务的配置目录位于/etc/keepalived。其中keepalived.conf是主配置文件,另外包括一个子目录samples/,提供了许多配置样列作为参考。在keepalived的配置文件中,使用"global_defs {……}"区段指定全局参数。使用"vrrp_instance 实例名称 {……}"区段指定VRRP热备参数,注释文字以"!"符号开头

12 LVS+keepalived高可用群集_群集_08

全局参数

只需定义ID即可,其它自定义或默认

12 LVS+keepalived高可用群集_群集_09

实例参数

这里只需指定虚拟IP即可,实际环境中最好修改密码字串确保安全;其它全部默认

12 LVS+keepalived高可用群集_群集_10

优先级中,MASTER表示主服务器;SLAVE表示备用服务器;当有多台备用的服务器,热备状态改为 BACKUP,此状态是由 priority 的值来决定的,当前priority 的值小于备机的值,那么将会失去 MASTER 状态

热备参数

根据以下参数进行配置,其它多余内容全部删除即可

12 LVS+keepalived高可用群集_马向军_11

5重启keepalived服务并配置防火墙

重启服务配置生效,并设置防火墙使主从之间能够通信(VRRP协议的通告报文使用固定的组播地址224.0.0.18,用IP 报文作为传输协议进行协议报文的传送)

12 LVS+keepalived高可用群集_群集_12

·配置从调度器

从调度器的配置与主调度器基本相同,只需调整keepalived配置文件中的router_id、state、prority参数即可,其余内容完全相同

安装支持软件

12 LVS+keepalived高可用群集_集群_13

安装keepalived软件包

12 LVS+keepalived高可用群集_群集_14

12 LVS+keepalived高可用群集_lvs_15

12 LVS+keepalived高可用群集_lvs_16

调整配置文件

直接从主服务器中复制一份配置文件过来

12 LVS+keepalived高可用群集_lvs_17

只需修改一下三处即可

12 LVS+keepalived高可用群集_群集_18

重启服务配置防火墙

12 LVS+keepalived高可用群集_集群_19

总结:在同一个keepalived热备组内,所有服务器的keepalived配置文件基本相同。不同之处主要在于服务器的名称标识、热备状态、优先级

·测试主、从服务器的配置

当以上状态配置完成后,

实际状态为MASTER的主服务器取得VIP控制权,并将eth0接口自动添加VIP地址,通过ip addr show dev eth0命令可以查看(注意:ifconfig命令看不到)(我这里配置ip时为eth1)

主服务器

12 LVS+keepalived高可用群集_群集_20

从服务器

12 LVS+keepalived高可用群集_马向军_21

备用服务器中将不会为eth0接口添加VIP地址

Keepalived的日志消息保存在/var/log/messages文件中,在测试主、从故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化

在internet的测试机上执行ping 172.16.16.172 –t,(172.16.16.172为VIP地址),能够正常ping通,说明主服务器以接管VIP地址,并及时响应客户机的请求

禁用主服务器的eth0网卡,发现ping测试会中断3~4个包即恢复正常,说明已有其他服务器接替VIP地址,并及时响应客户机的请求

重新启用主服务器的eth0网卡,发现ping测试再次中断3~4个包即恢复正常,说明主服务器已恢复正常,并夺回VIP地址的控制权

在上述过程中可以查看日志记录来了解MASTER、SLAVE状态的迁移记录

·配置共享存储服务器

配置如下

修改/etc/exports文件,内容如下:

/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)

允许192.168.7.0/24网段的主机访问NFS的共享

12 LVS+keepalived高可用群集_集群_22

·配置节点服务器

节点服务器的配置与在DR模式中节点服务器的配置完全一样

1调整/proc响应参数

12 LVS+keepalived高可用群集_群集_23

12 LVS+keepalived高可用群集_群集_24

12 LVS+keepalived高可用群集_高可用_25

2配置虚拟IP地址

12 LVS+keepalived高可用群集_lvs_26

12 LVS+keepalived高可用群集_马向军_27

12 LVS+keepalived高可用群集_马向军_28

3添加VIP本地访问路由

12 LVS+keepalived高可用群集_群集_29

4连接共享目录

12 LVS+keepalived高可用群集_马向军_30

12 LVS+keepalived高可用群集_群集_31

5安装httpd服务,开启服务并创建测试页

12 LVS+keepalived高可用群集_群集_32

6配置防火墙策略

12 LVS+keepalived高可用群集_群集_33

其他节点服务器同样的配置

·测试访问

使用VIP进行访问

12 LVS+keepalived高可用群集_马向军_34

在主调度器上观察

12 LVS+keepalived高可用群集_群集_35

在从调度器上观察

12 LVS+keepalived高可用群集_lvs_36

模拟主调度器宕机(关闭网卡),再测试

查看从调度器,可以看出从调度器自动担任了主调度器的角色

12 LVS+keepalived高可用群集_群集_37

至此有关LVS+keepalived群集配置完毕,这样即实现了lvs负载平衡又实现了调度器的热备