Lvs + heartbeat+ldirectord高可用测试

 

1、实验环境

OS:centos 6.7 mini

LVS mode :DR

Heartbeat: version 2.1.4

Iptables:off

Selinux:disabled

Lvs master ip:192.168.6.122

Lvs backup ip:192.168.6.123

Realserver1:192.168.6.42:15080

Realserver2:192.168.6.46:15080

VIP:192.168.6.66

 

2、拓扑图

如附件一示

1) 用户对vip发起访问请求

2) Heartbeat定义VIP在master上

3) Lvs master接受用户的请求

4) Lvs backup在master工作时不提供VIP和后端服务

5) Realserver提供真实服务并响应用户请求

 

 

 

 

 

3、实验需求

1、实现lvs高可用

2、lvs master出现故障时,有lvs backup接管vip和服务

 

4、安装相关依赖关系

yum install -y vim wget ntp net-snmp-libs libnet PyXML  gettext gcc make automake autoconf flex rpm-build kernel-devel libxslt libxslt-devel bzip2-devel pam-devel Python-devel swig gnu tls libtool glib2-devel libxml2-devel  e2fsprogs-devel  libtool-ltdl-devel docbook-dtds docbook-style-xsl pygtk2-libglade

 

5、安装LVS

参考上一篇LVS DR模式

 

6、安装heartbeat

注意事项:

1) Master与backup间要时间同步

2) Master与backu 间要互信登陆

3) 关闭系统防火墙,selinux状态为disabled

4) 绑定/etc/hosts,master与backup相同

 

heartbeat-2.1.4-12.el6.x86_64.rpm

heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm

heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

heartbeat-gui-2.1.4-12.el6.x86_64.rpm

heartbeat-pils-2.1.4-12.el6.x86_64.rpm

 

rpm -ivh heartbear-pils-2.1.4-12.el6.x86_64.rpm

rpm ivh heartbeat-2.1.4-12.el6.x86_64.rpm

yum localinstall heartbeat-*

 

7、heartbeat配置文件

Vim /etc/ha.d/ha.cf

 

#日志文件位置

logfile /var/log/ha-log

#指定主备服务器多久发送一次心跳

keepalive 2

#指定30秒没有收到对方心跳就认为对方已经down机

deadtime 10

#10秒没有收到心跳,便发出警报。

warntime 10

#对方DOWN后120秒重新检测一次。

initdead 11

#指定监听端口

udpport 694

#心跳监听网口,这里为eth1

bcast eth0

#去掉后面#linux

#备份机的心跳线接口与接口IP

ucast eth0 192.168.6.123

#主节点恢复后,自动收回资源。

auto_failback on

#指定主备服务器的主机名称,即在hosts文件中指定的。第一个node为主服务器,第二个node为备服务器。

node lvs1.okooo.cn

node lvs2.okooo.cn

#当192.168.8.0、10.10.0.254这两个IP都不能ping通时,对方即开始接管资源。

ping_group group1 10.10.0.254 192.168.8.0

#启用ipfail脚本

respawn root /usr/lib64/heartbeat/ipfail

#指定运行ipfail的用户。

apiauth ipfail gid=root uid=root

 

 

Vim /etc/ha.d/authkey

 

auth 1

1 crc

#2 sha1 okooo

#3 md5 Hello!

 

Vim /etc/ha.d/haresource

 

lvs1.okooo.cn 192.168.6.66/32/eth0:0 ldirectord

 

 

Vim /etc/ha.d/conf/ldresource.cf

 

# Global Directives

checktimeout=3

checkinterval=1

#fallback=127.0.0.1:80

autoreload=yes

logfile="/var/log/ldirectord.log"

#logfile="local0"

quiescent=yes

 

# Sample for an http virtual service

virtual=192.168.6.66:80

        real=192.168.6.42:80 gate 2

        real=192.168.6.46:80 gate 3

        fallback=127.0.0.1:80 gate

        service=http

        request="index.html"

      receive="woshi"

        virtualhost=lvs1.okooo.cn

        scheduler=wrr

      persistent=5

        netmask=255.255.255.255

        protocol=tcp

        checktype=negotiate

        checkport=80

        request="index.html"

        receive="woshirongqi"

        virtualhost=

 

PS:  

① heartbeat 的配置文件master 与 backup之间的区别在于心跳监测地址不同,其他均为相同。

② 测试方法是关掉master上的heartbeat服务,backup会接管VIP和资源池,从而不影响终端用户的体验。

 

8、逻辑关系 

Heartbeat有三个配置文件:

1) ha.cf是主配置文件

2) Authkey决定了配置密钥

3) Haresource文件列出集群所提供的服务和服务默认所有者

4) Ldirect.cf文件列出了后端lvs的详细规则

PS:

a) 在服务启动时,顺序为heartbaet-----ldirectord-----lvs

b) Heartbeat定义vip,调用ldirectord,ldirectord定义lvs规则

 

9、keepalived对比

 

1) Heartbeat是基于主机或网络的服务的高可用方式

2) keepalived目的是模拟路由器的双机

3) heartbeat目的是用户service的双机

4) lvs的高可用建议用keepavlived

5) 业务的高可用用heartbeat

Keepalived使用更简单:从安装、配置、使用、维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装、配置、使用都比较复杂,尤其是出问题的时候,都不知道具体是哪个子系统出问题了;而Keepalived只有1个安装文件、1个配置文件,配置文件也简单很多;

Heartbeat功能更强大Heartbeat虽然复杂,但功能更强大,配套工具更全,适合做大型集群管理,而Keepalived主要用于集群倒换,基本没有管理功能;

协议不同Keepalived使用VRRP协议进行通信和选举,Heartbeat使用心跳进行通信和选举;Heartbeat除了走网络外,还可以通过串口通信,貌似更可靠;

使用方式基本类似:如果要基于两者设计高可用方案,最终都要根据业务需要写自定义的脚本,Keepalived的脚本没有任何约束,随便怎么写都可以;Heartbeat的脚本有约束,即要支持service start/stop/restart这种方式,而且Heartbeart提供了很多默认脚本,简单的绑定ip,启动apache等操作都已经有了;