负载均衡(LVS)DR+(HA)heartbeat主备模式配置案例

简介:

负载均衡(LVS)DR+(HA)heartbeat主备模式配置案例

HA—高可用:服务的可用性比较高,即我们的服务不会因为某台服务器的宕机而造成我们整个服务的停止,它的工作模式就是将一个具有故障的服务转交给一个正常工作的服务器,保证服务不会中断。

实验:

拓扑图


要求:使用HA--Heartbeat与LVS--DR模式对两台服务器实现负载均衡

首先在实验之前我们应该讲一下什么是HA—Heartbeat,通俗的讲就是HA—Heartbeat群集中的主机如果一台是激活状态,比如HA,那么另外一台主机就是停止状态,比如HB,但是,要是主机HA突然死掉了,那么HB主机怎么知道HA主机已经死掉了呢,这就需要在两台主机之间连接一根线,让HB主机通过这根线来不停的发送包来探测HA主机是否存活,如果HA死掉了,那么HB立即启动,接替HB的工作,HA与HB连接的线就叫心跳线,这种模式就叫HA—Heartbeat.

为了配置的明了,我们分三部分来分解配置

一.HA配置

1>Ha-server1 配置

1.先按照拓扑图配置IP地址,并且关闭防火墙与SELinux

2.安装软件包

需要的软件包如下

heartbeat- 2.1.4 -9.el5.i386.rpm

heartbeat-ldirectord- 2.1.4 -9.el5.i386.rpm

heartbeat-pils- 2.1.4 -10.el5.i386.rpm

heartbeat-stonith- 2.1.4 -10.el5.i386.rpm

libnet- 1.1.4 -3.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

在安装之前最好配置YUM源,这样可以解决依赖的问题,别忘了挂载镜像。

采用yum本地安装

[root@localhost ~]# yum localinstall heartbeat- 2.1.4 -9.el5.i386.rpm heartbeat-ldirectord-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm--nogpgcheck

3.设置本机名称为Ha-server1并配置域名解析

[root@localhost ~]# hostname Ha-server1

[root@Ha-server1 ~]# vim /etc/hosts添加如下内容

192.168.2.10Ha-server1

192.168.2.20Ha-server2

4.从拷备配置文件到/etc/ha.d/目录中,并进行文件的配置

[root@localhost ~]# cd /usr/share/doc/heartbeat- 2.1.4 /

[root@localhost heartbeat- 2.1.4 ]# cp ha.cf haresources authkeys /etc/ha.d/

[root@localhost ~]# cp /usr/share/doc/heartbeat-ldirectord- 2.1.4 /ldirectord.cf /etc/ha.d/

(1)配置结点文件

添加如下内容

[root@localhost heartbeat- 2.1.4 ]# cd /etc/ha.d

[root@localhost ha.d]# vim ha.cf

bcast eth1//广播给网卡eth1

node Ha-server1//指明Ha-server1节点

node Ha-server2//指明Ha-server2节点

(2)配置双方的相互验证文件

随机生成一个md5码,用作两个Ha-server之间的认证,两台主机必须是一样的。

[root@Ha-server1 ~]# dd if=/dev/random bs=512 count=1 | openssl md5

0+1 records in

0+1 records out

128 bytes (128 B) copied, 0.000360555 seconds, 355 kB/s

ebe6e661e422ec2ae2f9fb9484d4aefc

[root@localhost ha.d]# vim authkeys添加如下内容

auth 3

3 md5 ebe6e661e422ec2ae2f9fb9484d4aefc

修改权限,这个一定要修改如下

[root@localhost ha.d]# chmod 600 authkeys

(3) 配置心跳文件

[root@localhost ha.d]# vim haresources添加如下内容

Ha-server1 192.168.2.11/24/eth0 ldirectord::ldirectord.cf//这个是定义外网访问时的虚拟接口及IP,还有启动的资源。

(4) 配置文件ldirectord.cf

[root@Ha-server2 ha.d]# vim ldirectord.cf修改如下

(5) 拷备启动文件到/etc/ha.d/resource.d/,这一步可以不做,在安装文件时系统就把这个文件在此文件夹中做了一个链接

[root@localhost ha.d]# cp /etc/init.d/ldirectord /etc/ha.d/resource.d/

2>Ha-server2 配置

Ha-server2的配置与Ha-server1的配置基本相同,我们可以直接使用Ha-server1的配置文件

(1)先安装软件

(2)设置主机名

[root@localhost ~]# hostname Ha-server2

(3)配置域名解析

[root@Ha-server2 ~]# vim /etc/hosts

192.168.2.10Ha-server1

192.168.2.20Ha-server2

3> 我们可以先启动一下,看配置是否成功

二.LVS-DR配置

1>web1配置

1.先按照拓扑图配置IP地址,再重新建立一个lo:0接口,配置ip为:192.168.2.11,network为255.255.255.255

2.添加系统主机名

[root@localhost ~]# hostname web1

3.安装httpd软件

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh httpd- 2.2.3 -31.el5.i386.rpm

4.编辑一个与ldirectord.cf中指定的确认页

[root@localhost ~]# echo "ok"> /var/www/html/.test.html

5.配置arp隐藏

[root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf

       [root@localhost ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf

       [root@localhost ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf

6.配置路由

[root@localhost ~]# route add -host 192.168.2.11 dev lo:0

7.开启服务

[root@localhost Server]# service httpd start

8. 自己测试httpd环境正常工作

2>web2 配置

web2的配置与web1的配置基本相同,我们只需要修改如下几个点就行了

1.主机名称

[root@localhost Server]# hostname web2

3>启动服务

[root@localhost Server]# service httpd start

4>自己测试httpd环境正常工作

三.测试

1>首先开启两个directory的heartbeat服务

[root@Ha-server1 ha.d]# service heartbeat start

Starting High-Availability services:

2012/12/29 _04:04:30 INFO:Resource is stopped

[OK]

[root@Ha-server2 ha.d]# service heartbeat start

Starting High-Availability services:

2012/12/29 _04:04:30 INFO:Resource is stopped

[OK]

2>因为我们把Ha-server1为主director,所以我们可以查看Ha-server1上的ip地址

可以看到如下一个IP

eth0:0Link encap:EthernetHWaddr 00:0C:29:82:AB:2B

inet addr:192.168.2.11Bcast:192.168.2.255Mask:255.255.255.0

UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1

Interrupt:67 Base address:0x2024

也可以看到Ha-server1上存在ipvsadm的规则

[root@Ha-server1 ha.d]# ipvsadm -Ln

IP Virtual Server version  1.2.1  (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:PortForward Weight ActiveConn InActConn

TCP192.168.2.11:80 rr

-> 192.168.2.32:80Route100

-> 192.168.2.31:80Route100

但是etho:0 IP地址与Ipvsadm规则在Ha-server2上都不存在的,因为它只是一个备份,只有在Ha-server1死掉之后,都会接管Ha-server1的工作。

看一下Ha-server2有没有ipvsadm规则

[root@Ha-server2 ha.d]# ipvsadm -Ln

IP Virtual Server version  1.2.1  (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:PortForward Weight ActiveConn InActConn

[root@Ha-server2 ha.d]#

可以看到没有规则

现在可以访问自己的主页了,但是我们的要求是这两个Director形成HA负载均衡,所以要模仿把Ha-server1杀死,看Ha-server2会不会完全的接替Ha-server1的工作。

在HA群集里面有专业用来模仿杀死HA成员的文件,如下我们杀死Ha-server1,看Ha-server2变化

[root@Ha-server1 ha.d]# cd /usr/share/heartbeat/

[root@Ha-server1 heartbeat]# ./hb_standby

2012/12/29 _17:21:50 Going standby [all].

这样即可,我们再次看一下Ha-server1上还有没有ipvsadm规则

[root@Ha-server1 heartbeat]# ./hb_standby

2012/12/29 _17:24:49 Going standby [all].

[root@Ha-server1 heartbeat]# ipvsadm -Ln

IP Virtual Server version  1.2.1  (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:PortForward Weight ActiveConn InActConn

[root@Ha-server1 heartbeat]#

已经没有了规则

看Ha-server2上的规则

[root@Ha-server2 ha.d]# ipvsadm -Ln

IP Virtual Server version  1.2.1  (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:PortForward Weight ActiveConn InActConn

TCP192.168.2.11:80 rr

-> 192.168.2.32:80Route100

-> 192.168.2.31:80Route100

[root@Ha-server2 ha.d]#

在Ha-server2上重新出现,已经接管了Ha-server1的工作,实验成功

现在我们再把Ha-server1激活,规则又会出现在Ha-server1上,并且它们之间的转换中没有间隔的,没有数据包丢失

[root@Ha-server1 heartbeat]# ./hb_takeover










本文转自 guodong810 51CTO博客,原文链接:http://blog.51cto.com/guodong810/1104441,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
运维 算法 Linux
LVS详解(四)——LVS安装与配置命令
LVS详解(四)——LVS安装与配置命令
814 2
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
577 11
|
负载均衡 IDE Java
SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略
在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。
1355 9
SpringBoot整合XXL-JOB【04】-  以GLUE模式运行与执行器负载均衡策略
|
负载均衡 算法 应用服务中间件
Nginx长连接负载均衡详细说明以及案例
本文详细介绍了Nginx长连接负载均衡的配置与原理。长连接(Keepalive)允许客户端和服务器保持连接,减少建立和关闭连接的开销。Nginx支持多种负载均衡算法,如轮询、IP哈希等。通过在Nginx配置文件中使用`upstream`模块和`keepalive`指令,可以实现长连接负载均衡,从而提高系统的性能和响应速度。示例配置展示了如何设置后端服务器组、长连接数及HTTP/1.1协议,确保连接复用,降低延迟。
912 5
|
网络协议 应用服务中间件 Linux
LVS介绍与配置
LVS介绍与配置
1317 8
|
负载均衡 网络协议 算法
使用IPVSADM配置LVS负载均衡
使用IPVSADM配置LVS负载均衡
|
负载均衡 运维 监控
负载均衡与容错性:集群模式在分布式系统中的应用
本文由小米分享,解释了分布式系统中的集群模式。集群模式是通过组合多个服务器节点,共同提供服务,实现高可用性、负载均衡和扩展性。文章介绍了主控节点的角色及其高可用性策略,如主备模式和选举机制,并以Zookeeper为例详细阐述了其工作机制。集群模式的优势在于高可用性、负载均衡、扩展性和数据一致性,但也面临节点通信、数据一致性、故障检测和管理等挑战。最后,作者鼓励读者讨论和交流相关技术问题。
674 5
|
负载均衡 算法 网络协议
LVS、Nginx和HAProxy负载均衡器对比总结
LVS、Nginx和HAProxy负载均衡器对比总结
|
负载均衡 网络协议
NAT模式 LVS负载均衡部署
NAT模式 LVS负载均衡部署