heartbeat+ldirectord+lvs nat

ldirectord来管理lvs,可以定时检查后端realserver,发现故障后自动清除,恢复后自动加入lvs表,让我们来感受下吧。

lvs端:

node1

eth0:192.168.3.124

eth0:192.168.8.124用于heartbeat心跳

node2

eth0:192.168.3.126

eth0:192.168.8.126用于heartbeat心跳

realserver端:

web1

eth0:192.168.3.128

eth0:0:192.168.8.128

web2

eth0:192.168.3.129

eth0:0:192.168.8.129

一.建议先配置lvs,没问题后再继续配置其他部分

在node1和node2上配置lvs nat模式,以node1为例

注:先在node1上建一个vip做lvs测试用,测试无误后再删掉,然后使用heartbeat的vip,这样可以给我们降低错误率

lvs端node1配置:

ifconfig eth0:1 192.168.3.233 netmask 255.255.255.0

ipvsadm -A -t 192.168.3.233:80 -s wrr

ipvsadm -A -t 192.168.3.233:80 -r 192.168.8.128:80 -g

ipvsadm -A -t 192.168.3.233:80 -r 192.168.8.129:80 -g

realserver端web1,web2配置:

ip route add 192.168.3.0 via 192.168.3.233

注:将realserver的网关指向vip 192.168.2.233

配置完成后测试:

[[email protected] ha.d]# curl 192.168.3.233/1.html

hello,192.168.3.128

[[email protected] ha.d]# curl 192.168.3.233/1.html

hello,192.168.3.129

以上说明lvs配置成功,取消eth0:1即可,ifdown eth0:1;需要在node2上做同样配置。

二.配置ldirectord

rpm -ql heartbeat-ldirectord

cp /usr/share/doc/ldirectord-1.0.4/ldirectord.cf /etc/ha.d

vim /etc/ha.d/ldirectord.cf

# Global Directives
checktimeout=20           #判定real server出错的时间间隔。
checkinterval=10          #指定ldirectord在两次检查之间的间隔时间。
fallback=127.0.0.1:80     #当所有的real server节点不能工作时,web服务重定向的地址。
autoreload=yes            #是否自动重载配置文件,选yes时,配置文件发生变化,自动载入配置信息。
logfile="/var/log/ldirectord.log"   #设定ldirectord日志输出文件路径。
quiescent=no              #当选择no时,如果一个节点在checktimeout设置的时间周期内没有响应,ldirectord将会从LVS的路由表中直接移除real server,此时,将中断现有的客户端连接,并使LVS丢掉所有的连接跟踪记录和持续连接模板,如果选择为yes,当某个real server失效时,ldirectord将失效节点的权值设置为0,新的连接将不能到达,但是并不从LVS路由表中清除此节点,同时连接跟踪记录和程序连接模板仍然保留在Director上。

# Sample for an http virtual service
virtual=192.168.3.233:80        #指定虚拟的IP地址和端口号,注意,在virtual行后面的行必
   real=192.168.8.128:80 masq      #指定Real Server服务器地址和端口,同时设定LVS工作模式,用gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。
   real=192.168.8.129:80 masq
   fallback=127.0.0.1:80 masq
   service=http                     #指定服务的类型,这里是对http服务做负载均衡。
   request="ipvsadm.html"             #ldirectord将根据指定的Real Server地址,结合该选项给出的请求路径,发送访问请求,检查Real Server上的服务是否正常运行,确保这里给出的页面地址是可访问的,不然ldirectord会误认为此节点已经失效,发生错误监控现象。
   receive="test ok"              #指定请求和应答字串。
   scheduler=wrr                     #指定调度算法,这里是rr(轮叫)算法。
   protocol=tcp                     #指定协议的类型,LVS支持TCP和UDP协议。
   checktype=negotiate              #指定Ldirectord的检测类型,默认为negotiate。
   checkport=80                     #指定监控的端口号。
#  virtualhost=www.gaojf.com        #虚拟服务器的名称,随便指定。

需要在web1,web2上设置ipvsadm.html

echo "test ok" > ipvsadm.html

node1上ldirectord配置好后,copy到node2上一份即可。

三.配置heartbeat

heartbeat配置参见前面的博文“heartbeat实现nginx热备”,在此只需改下/etc/ha.d/haresources资源,其他不需要动。如下:

nod1端/etc/ha.cf

logfile	/var/log/ha-log
logfacility	local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport	694
ucast eth0 192.168.8.126
auto_failback on
node	usvr-124.cityre.cn
node	usvr-126.cityre.cn
ping 192.168.3.1
respawn hacluster /usr/lib64/heartbeat/ipfail

node2端/etc/ha.cf

logfile	/var/log/ha-log
logfacility	local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport	694
ucast eth0 192.168.8.124
auto_failback on
node	usvr-124.cityre.cn
node	usvr-126.cityre.cn
ping 192.168.3.1
respawn hacluster /usr/lib64/heartbeat/ipfail

node1和node2端的/etc/ha.d/haresources

usvr-124.cityre.cn IPaddr::192.168.3.233/24/eth0 ldirectord::ldirectord.cf

注:需要在node1和node2中写入对方的host

192.168.3.124 usvr-124.cityre.cn

192.168.3.126 usvr-126.cityre.cn

注:这里的vip就是我们lvs的vip,这样才能实现vip的漂移。

四.测试

heartbeat配置完成后启动service heartbeat start

1.查看vip是否启动

[[email protected] ha.d]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

link/ether 00:50:56:89:a2:16 brd ff:ff:ff:ff:ff:ff

inet 192.168.3.124/24 brd 192.168.3.255 scope global eth0

inet 192.168.8.124/24 brd 192.168.8.255 scope global eth0:0

inet6 fe80::250:56ff:fe89:a216/64 scope link

valid_lft forever preferred_lft forever

[[email protected] ha.d]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

link/ether 00:50:56:89:a2:16 brd ff:ff:ff:ff:ff:ff

inet 192.168.3.124/24 brd 192.168.3.255 scope global eth0

inet 192.168.8.124/24 brd 192.168.8.255 scope global eth0:0

  inet 192.168.3.233/24 brd 192.168.3.255 scope global secondary eth0

inet6 fe80::250:56ff:fe89:a216/64 scope link

valid_lft forever preferred_lft forever

2.查看lvs表

[[email protected] ha.d]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.3.233:80 wrr

-> 192.168.8.128:80             Masq    1      0          0

-> 192.168.8.129:80             Masq    1      0          0

3.将web1端的nginx停掉,大约20秒,继续查看lvs表

[[email protected] ha.d]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.3.233:80 wrr

-> 192.168.8.129:80             Masq    1      0          0

发现node1端192.168.8.128:80已经从lvs表中清楚,说明ldirectord起作用了。

4.将web1端的nginx重新启动,继续查看lvs表

[[email protected] ha.d]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.3.233:80 wrr

-> 192.168.8.128:80             Masq    1      0          0

-> 192.168.8.129:80             Masq    1      0          0

发现node1又重新加入到lvs表中。

5.将web1,web2端的nginx全部停掉,继续查看lvs表

[[email protected] nginx1.6]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.3.233:80 wrr

-> 127.0.0.1:80                 Local   1      0          0

当所有的lvs的realserver节点全部down掉,会有node1上的127.0.0.1:80启动,当访问vip时

curl 192.168.3.233/1.html 会出现“页面正在维护”,来提高用户体验。

6.若node1宕机,node2会接管vip

在node1上service heartbeat stop

在node2上查看ip

[[email protected] ha.d]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

link/ether 00:50:56:89:91:a0 brd ff:ff:ff:ff:ff:ff

inet 192.168.3.126/24 brd 192.168.3.255 scope global eth0

inet 192.168.8.126/24 brd 192.168.8.255 scope global eth0:0

inet 192.168.3.233/24 brd 192.168.3.255 scope global secondary eth0

inet6 fe80::250:56ff:fe89:91a0/64 scope link

valid_lft forever preferred_lft forever

7.在node2上查看lvs表

[[email protected] ha.d]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.3.233:80 wrr

-> 192.168.8.128:80             Masq    1      0          0

-> 192.168.8.129:80             Masq    1      0          0

总结:

1.node1和node2上lvs不会同时运行,当vip在node1上时,lvs在node2上是停止的;当vip在node2上时,lvs在node1上是停止的。

2.ldirectord不必非配对使用,我们也可以单独使用来管理lvs,也就是说在heartbeat资源文件中不用加入ldirectord

时间: 2024-11-10 11:33:06

heartbeat+ldirectord+lvs nat的相关文章

heartbeat+ldirectord+lvs详细概念说明

========   heartbeat+ ldirectord + lvs  =============== 一.负载均衡说明    负载均衡的目的就是将大量的负载请求通过一个分发技术,将这些请求分 发 到提供相同应用的不同服务器上,提供一个单独服务器所不具备的负载能力.通常将提供实际服务的服务器群叫做real server,比如实际提供smtp.http服务的服务器.而提供负载分发功能的这个设备就是负载均衡设备,硬件的有常用的Radware,Alten 等,软件的就是lvs.对于用户来说,需

heartbeat+ldirectord+lvs实现高可用负载

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:19

Heartbeat+Ldirectord+LVS+httpd集群部署

一.硬件环境 4台虚拟机在同一网段 操作系统:centos6.3 关闭系统不必要的服务脚本 #!/bin/bash services=`chkconfig --list|cut -f1|cut -d" " -f1` for ser in $services do  if [ "$ser" == "network" ] || [ "$ser" == "rsyslog" ] || [ "$ser&qu

使用LVS+NAT搭建集群实现负载均衡

使用LVS+NAT搭建集群实现负载均衡 LVS集群简介    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多        LVS集群分布图   集群有三种类型:           

heartbeat+ldirector+lvs实现高可用集群

7.heartbeat+ldirector+lvs实现高可用集群 在lvs的DR模式基础下进行该实验. heartbeat工作原理: heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来 告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务. 两台 调度服务器 :    Heartbeat仅仅是个HA软件,它仅能完成

lVS(nat模式)+keepalived搭建

关于网上lvs+keepalived的文章很多,但是多数都是DR模式的方案,对于 nat模式的并不多见,因此,在此写一份nat模式的文章,仅供分享也当笔记保存. 网络拓扑结构: 现在的Linux系统内核都是支持lvs的,所以我们直接可以用yum安装ipvsadm yum 源的替换,将系统的yum源替换成163的yum源 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# ls centos-16

linux lvs集群nat模式(比上一篇的lvs nat实用)

这是一篇以apcache服务为例介绍lvs的nat模式配合keepalived实现的方案.实验拓扑图如下所示,虚线上面的大图可以看成是虚线下面"服务器群"的放大版: 本实验共用到4台linux虚拟服务器,其中两台rhel5.6作为主从HA(keepalived)服务器,另外两台rhel4.6模拟Apache服务器--用两台Apache服务器模拟多台Apache服务器. 实验原理是,用Apache服务器为代表模拟实际用到的服务器,用两台Apache模拟多台Apache,所有的Apache

LVS NAT模式搭建

准备工作 1.设备分配 192.168.137.100          LB Server(另一块公网网卡:192.168.138.100) 192.168.137.150          Server01(网关:192.168.137.100) 192.168.137.200          Server02(网关:192.168.137.100) 注:完成所有准备工作后调整设备网关. 2.关闭所有设备防火墙 systemctl stop firewalld systemctl disa

lvs nat搭建

生产环境网站离不开负载均衡.高可用性这样的字眼,不用解释便知道其中的意义与重要性.高可用性可以用keepalived实现,负载均衡可以用lvs或者nginx实现,二者的区别是lvs基于网络层,nginx基于应用层或者基于浏览器.lvs有3中实现方式,分别是nat.dr.tunel(隧道),三者大体相似,这里介绍nat模式,本文也没用介绍keepalived,以后有时间再写. 实验环境:使用vmware虚拟出4台linux,有一台作为client(rhel4.6),其中两台作为realserver