LVS+heartbeat+ldriectord

LVS

LVS+Keepalived+heartbeat

Lvs:Linux Virtual Server Linux 虚拟服务器,是一个虚拟的服务器集群系统

主要有四种负载均衡技术(VS/NAT,VS/TUN,VS/DR,VS/fullNAT)十余种调度算法:(rr,wrr,lc,wlc,lblcr,dh,sh,sed,nq)

Keepalvied主要作用时Realserver的健康状态检查及LoadBalance主机和Backfail的实现。

LVS可分为三部分:

1.Load Balancer:这是LVS的核心部分,它好比我们网站MVC模型的Controller。它负责将客户的请求按照一定的算法分发到下一层不同的服务器进行处理,自己本身不做具体业务的处理。另外该层还可用监控下一层的状态,如果下一层的某台服务器不能正常工作了,它会自动把其剔除,恢复后又可用加上。该层由一台或者几台Director Server组成。

2.Server Array:该层负责具体业务。可有WEB Server、mail Server、FTP Server、DNS Server等组成。注意,其实上层的Director Server也可以当Real server用的。

3.Shared Storage:主要是提高上一层数据和为上一层保持数据一致

负载均衡机制
前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。LVS的通过控制IP来实现负载均衡。IPVS是其具体的实现模块。IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如果返回给客户端数据等等。IPVS为此有三种机制:

1.VS/NAT(Virtual Server via Network Address Translation),即网络地址翻转技术实现虚拟服务器。当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。

2.VS/TUN(Virtual Server via IP Tunneling),即IP隧道技术实现虚拟服务器。它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。

3.VS/DR(Virtual Server via Direct Routing),即用直接路由技术实现虚拟服务器。跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上

ARP协议:

ARP:Address Resolution Protocol是根据IP地址获取物理地址的一个TCP?IP协议,主机反送消息时将包含目标IP的ARP请求广播到网络上的所有主机,并接受返回消息,一次确定目标的物理地址,受到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保存一定时间,下次请求时直接查询ARP缓存以节约资源。

由于lvs是linux2.6以后内核自带的,所以可以直接使用

Ipvsadm在rhel中含有,只要安装ipvsadm,ipvsadm在rhel的隐藏模块中,所以应该先配好yum源,有关配置请查看上一片“redhat_HA”

Serve1作为Scheduler

Server3和Server4作为RealServer

在Server3和Server4上安装httpd服务器,作为测试项

写入主页:

并加入红色

[[email protected] ~]# cat /var/www/html/index.html

<h1><font color=#FF0000>server3.example.com</font></h1>

为Scheduler和RealServer添加VIrt Ip(VIP)

[[email protected] ~]# ip addr add 172.25.33.100/24 dev eth0

[[email protected]/3 ~]#  ip addr add 172.25.33.100/32 dev eth0

添加策略:

[[email protected] ~]# ipvsadm -A -t 172.25.33.100:80 -s rr

[[email protected] ~]# ipvsadm -a -t 172.25.33.100:80 -r 172.25.33.3

[[email protected] ~]# ipvsadm -a -t 172.25.33.100:80 -r 172.25.33.4

[[email protected] ~]# service ipvsadm save

ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]

-A, --add-service

Add a virtual service.

-a, --add-server

Add a real server to a virtual service.

-t, --tcp-service service-address

Use TCP service.

-s, --scheduler scheduling-method

scheduling-method

rr 调度算法:轮询

-r, --real-server server-address

Real server that  an  associated  request  for  service  may  be

assigned  to.

设置其在第三和第五等级开机启动。

[[email protected] ~]# chkconfig --level 35 ipvsadm  on

[[email protected] ~]# chkconfig --list |grep ipvsadm

ipvsadm        0:off1:off2:off3:on4:off5:on6:off

此时的lvs已经可以开始访问了,但是由于realserver的vip也是100,很容易造成arp表中的映射关系错误,从而产生只能访问一个realserver的错误。

如果想要客户端访问调度器而不能访问realserver,那么需要让realserver忽略每个虚拟IP的ARP请求,执行以下指令

[[email protected]/3 ~]# yum install arptables_jf -y

[[email protected] ~]# arptables -A IN -d 172.25.33.100 -j DROP

[[email protected] ~]# arptables -A OUT -s 172.25.33.100 -j mangle --mangle-ip-s 172.25.33.4

此时,realserver仅响应调度器的请求。

保存策略

[[email protected] ~]# service arptables_jf save

Saving current rules to /etc/sysconfig/arptables:          [  OK  ]

使用arp -an IP 查看当前请求iP和MAC的绑定关系,如果不会自动轮询,那么查看各主机的mac,看是否在某个主机上。

[[email protected] Desktop]$ arp -an 172.25.33.100

? (172.25.33.100) at 52:54:00:ec:e5:a9 [ether] on br0

使用arp -d 172.25.33.100删除IP——MAC映射表。

与heartbeat的结合:

使用ipvsadm -C清空策略:

[[email protected] ha.d]# cat haresources |tail -n 1

server1.example.comIPaddr::172.25.33.100/24/eth0 ipvsadm httpd

但是由于heartbeat和lvs本身都没有对服务是否运行的监控能力,所以需要使用ldirectord来帮助heartbeat和lvs进行监控管理,ldirectord要预先安装。

ldirectord - Linux Director Daemon

Daemon to monitor remote services and control Linux Virtual Server

[[email protected] ha.d]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf .

[[email protected] ha.d]# vim ldirectord.cf

[[email protected] ha.d]# scp ldirectord.cf 172.25.33.2:/etc/ha.d/

[[email protected] ha.d]# vim ldirectord.cf

virtual=172.25.33.100:80

real=172.25.33.3:80 gate

real=172.25.33.4:80 gate

fallback=127.0.0.1:80 gate

service=http

scheduler=rr

#persistent=600

#netmask=255.255.255.255

启动heartbeat,配好参数//此处未知参见hearbeat_HA.

在heartbeat资源策略haresources中,添加资源httpd ldirectord ipvsadm 即可让heartbeat实现ipvsadm的双机热备

测试:

停掉server3的http服务,会发现调度器不会往server3上调度,开启server3,ipvsadm -l 发现,调度内容重新出现,server1的heartbeat服务停止,server2的heartbeat会继续接管。

与keepalived结合:

编译安装keepalived:

tar -xf keepalived-1.2.20.tar.gz

./configure --prefix=/usr/local/keepalived

yum install -y libnl-devel

./configure --prefix=/usr/local/keepalived

yum install -y libnl-devel

./configure --prefix=/usr/local/keepalived

yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm

./configure --prefix=/usr/local/keepalive

make&& make install

编译安装完成后,需要将/usr/local/keepalived下的配置文件,执行脚本(+x)

执行脚本

[[email protected] init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/

配置文件:

[[email protected] init.d]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

[[email protected] init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/

启动脚本:

[[email protected] init.d]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

[[email protected] init.d]# chmod +x /etc/init.d/keepalived

global_defs {

notification_email {

[email protected]//收到警报的email地址

}

notification_email_from [email protected]

smtp_server 127.0.0.1//使用本机转发email

smtp_connect_timeout 30

router_id LVS_DEVEL//load balancer 的表示地址ID,用于email警报

vrrp_skip_check_adv_addr

vrrp_strict

}

vrrp_instance VI_1 {

state MASTER备机改为backup,此状态是由priority的值来确定的,如果主机的priority的值小于备机,那么将会失去master的状态。

interface eth0

virtual_router_id 51

priority 100备机设为50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.25.33.100

}

}

virtual_server 172.25.33.100 80{

delay_loop 6

lb_algo rr

lb_kind DR

#persistence_timeout 50

protocol TCP

real_server 172.25.33.3 80{

weight 1

TCP_Check{

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 172.25.33.4 80{

weight 1

TCP_Check{

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

添加服务vsftpd为长连接,因为vsftpd是上传下载,所以要保持长连接,在操作时不断开。

persistence_timeout 50

重起keepalived

[[email protected] ha.d]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.33.100:http rr

-> server3.example.com:http     Route   1      0          0

TCP  172.25.33.200:http rr persistent 50

-> server3.example.com:ftp      Route   1      0          0

时间: 2024-11-03 21:11:05

LVS+heartbeat+ldriectord的相关文章

LVS+Heartbeat安装部署文档

LVS+Heartbeat安装部署文档 发表回复 所需软件: ipvsadm-1.24-10.x86_64.rpmheartbeat-2.1.3-3.el5.centos.x86_64.rpmheartbeat-pils-2.1.3-3.el5.centos.x86_64.rpmheartbeat-stonith-2.1.3-3.el5.centos.x86_64.rpmPyXML-0.8.4-4.x86_64.rpm 系统环境:CentOS 5.4 64-bit HA1            

手把手让你实现开源企业级web高并发解决方案(lvs+heartbeat+varnish+nginx+eAccelerator+memcached)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeze.blog.51cto.com/1846439/677348 此文凝聚笔者不少心血请尊重笔者劳动,转载请注明出处.违法直接人肉出电话 写大街上. http://freeze.blog.51cto.com/个人小站刚上线 http://www.linuxwind.com 有问题还可以来QQ群89342115交流. 今儿网友朋友说:freeze黔驴技穷了,博客也不更新,也

lvs+heartbeat+ldirectord实现Director的高可用

测试环境: OS:rhel6 Director1:192.168.1.121  heartbeat  heartbeat-ldirectord  ipvsadm  VIP  hb_gui Director2:192.168.1.122  heartbeat  heartbeat-ldirectord  ipvsadm  VIP RS1:192.168.1.111  httpd  VIP RS2:192.168.1.112  httpd  VIP VIP:192.168.1.160 LVS实现DR

Lvs+heartbeat高可用高性能web站点的搭建

这是我们公司在实际的生产环境当中使用的一套东西,希望对大家有所帮助(实际的公网ip,我已经做了相应的修改): 说明:每台服务器需要有两块网卡:eth0连接内网的交换机,用私网ip,实现服务器间内部访问:eth1连接公网交换机,供外网访问.如果想节约成本可以只用一个交换机,划分2个vlan分别连接内网和外网也可以,但这样有风险,一旦交换机出问题,内网和外网都不能访问,一定要权衡一下得失. 各个服务器ip配置如下: 主ha  eth1:1.1.1.14   eth0:192.168.1.8(心跳)

LVS+Heartbeat高可用负载均衡

一,环境配置 VIP:192.168.222.222 RIP:192.168.222.134 RIP:192.168.222.135 DR_MASTER:eth0 192.168.222.128 eth1 172.16.0.1 (单网卡也行) DR_SLAVE:eth0 192.168.222.129 eth1 172.16.0.2 (单网卡也行) 二,DR配置 1,安装软件 yum install epel-release -y yum install ipvsadm -y yum insta

LVS+Heartbeat 高可用集群方案操作记录

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能. Heartbeat的高可用集群采用的通信方式是udp协议和串口通信,而且heartbeat插件技术实现了集群间的串口.多播.广播和组播通信.它实现了HA 功能中的核心功能——心跳,将Heartbeat软件同时安装在两台服务器上,用于监视系统的状态,协调主从服务器的工作,维护系统的

lvs+heartbeat搭建负载均衡高可用集群

[172.25.48.1]vm1.example.com [172.25.48.4]vm4.example.com 集群依赖软件: 1.安装heartbeat集群软件 2.生成heartbeat配置文件. 3.配置heartbeat配置文件.

linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)

LVS/DR Realserver: 172.25.44.6 172.25.44.7 Virtualserver: VR3:172.25.44.3 VR5:172.25.44.5 Vip:172.25.44.100 Lvs和realserver必须在同一网段 ######################## Virtualserver: ip addr add 172.25.44.100/24 dev eth0   ##添加vip ip addr show yum install ipvsadm

linux高级技巧:heartbeat+lvs

linux高级技巧:heartbeat+lvs Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能…… AD:2014WOT全球软件技术峰会北京站 课程视频发布 11月21日-22日 与WOT技术大会相约深圳 现在抢票 1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用