设为首页 收藏本站
查看: 1444|回复: 0

[经验分享] RedHat5实现负载均衡(LVS--DR方法实现)

[复制链接]

尚未签到

发表于 2015-9-5 10:09:21 | 显示全部楼层 |阅读模式
一、Linux Virtual Server概述
  Linux Virtual Server (LVS)是一套完整的基于IP的负载均衡的集群软件。LVS运行在一对有相似配置的计算机上:一个作为活动LVS Router(Active LVS Router),一个作为备份LVS Router(Backup LVS Router)。活动LVS Router服务有两个角色:
* 均衡负载到真实服务器上。
* 检查真实服务器提供的服务是否正常。
备份LVS Router用来监控活动的LVS Router,以备活动的LVSRouter失败时由备份LVS Router接管。
DSC0000.jpg

  
Pulse进程运行在活动LVS Router和备份LVS Router上。在备份LVSRouter上,pulse发送一个心跳(heartbeat)到活动LVSRouter的公网接口上以检查活动LVS Router是否正常。在活动LVSRouter上,pulse启动lvs进程并响应来自于备份LVS Router的心跳。
lvs进程调用ipvsadm工具去配置和维护IPVS路由表,并为每一个在真实服务器上的虚拟服务启动一个nanny进程。每一个nanny进程去检查真实服务器上的虚拟服务状态,并将故障情况通知lvs进程。假如一个故障被发现,lvs进程通知ipvsadm在IPVS路由表中将此节点删除。
如果备份LVS Router未收到来自于活动LVSRouter的响应,它将调用send_arp将虚拟IP地址再分配到备份LVSRouter的公网接口上。并在公网接口和局域网接口上分别发送一个命令去关掉活动LVSRouter上的lvs进程。同时启动自己的lvs进程来调度客户端请求。
  下面是一个两层结构的LVS架构:
DSC0001.jpg

  
  下面是一个三层结构的LVS架构:
DSC0002.jpg

  
  两层结构的LVS架构适合于RealServer上的数据变化不是很频繁的情况,如果RealServer上的数据变化很频繁应该考虑使用三层结构的LVS架构,将数据放到一个共享文件系统(GFS)上供所有的RealServer同时读写。
你可以使用VS/NAT、VS/TUN和VS/DR来实现IP负载均衡:
* 使用VS/NAT方法:客户通过Virtual IPAddress(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址VirtualIPAddress改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接Hash表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为VirtualIPAddress和相应的端口,再把报文发给用户。当使用VS/NAT方法时,如果有大量的响应数据经过调度器,调度器将成为整个集群的瓶颈。
DSC0003.jpg

  
  *使用VS/TUN方法:VS/TUN的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为VIP的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。
DSC0004.jpg

  
  *使用VS/DR方法:调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB相连。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。
DSC0005.jpg

  
二、本实验拓扑图
DSC0006.jpg

  
  在实际环境中可修改192.168.0.200、192.168.0.10、192.168.0.11为真IP。
  
三、LVS在RedHat 5上的安装
  1、需要的安装包:
操作系统:RedHat 5
LVS安装包:
  php-common-5.1.6-5.el5.i386.rpm
  php-cli-5.1.6-5.el5.i386.rpm
  php-5.1.6-5.el5.i386.rpm
  ipvsadm-1.24-8.1-i386.rpm
  piranha-0.8.4-7.el5.i386.rpm
  如果系统中没有安装Apache还需要Apache的安装包。
  
  2、在Active LVS Router上安装PHP
Shell # rpm -ivh php-common-5.1.6-5.el5.i386.rpm
Shell # rpm -ivh php-cli-5.1.6-5.el5.i386.rpm
Shell # rpm -ivh php-5.1.6-5.el5.i386.rpm
Shell # vi /etc/httpd/conf/httpd.conf
查找AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在其下加入:
AddType application/x-tar .tgz
AddType application/x-httpd-php .php
AddType image/x-icon .ico
修改DirectoryIndex 行,添加index.php
修改为DirectoryIndex index.php index.html index.html.var
# vi /var/www/html/test.php
添加以下行:
//php标记(用<代替[)
[?php      
phpinfo();
?]
wq保存退出。
Shell # /etc/init.d/httpd restart //重新启动Apache
打开浏览器进行测试,输入http://localhost/test.php,如果能够成功显示PHP变量则说明PHP安装成功。
  
  3、在Active LVS Router上安装LVS所需要的包
Shell # rpm -ivh ipvsadm-1.24-8.1-i386.rpm
Shell # rpm -ivh piranha-0.8.4-7.el5.i386.rpm
  
  4、在Active LVS Router上打开数据转发
Shell # vi /etc/sysctl.conf
找到下面行:
net.ipv4.ip_forward = 0
将0 改成1,
net.ipv4.ip_forward = 1
执行如下命令来应用:
sysctl -p
  
  5、在Backup LVS Router上重复2、3、4步。
  
  6、在Active LVS Router上初始化piranha的密码
Shell # piranha-passwd
输入两遍密码即可。
  在Active LVS Router上启动需要的服务
Shell # /etc/init.d/piranha-gui start
  在Active LVS Router上配置LVS
首先在浏览器中输入http://localhost:3636打开piranha,输入用户名:piranha,密码:上面设置的密码。
DSC0007.jpg
  
  登录后将看到监视屏幕。
DSC0008.jpg   
  配置Global Settings(是对Active LVS Router的配置),点击DirectRouting,然后输入公网IP,和局域网IP。点击ACCEPT按钮保存设置。
DSC0009.jpg   
  配置Redundancy(是对Backup LVSRouter的配置),输入公网IP,和局域网IP。点击ACCEPT按钮保存设置。
DSC00010.jpg   
  点击ADD按钮添加一个服务。
DSC00011.jpg   
  按下面配置添加的服务。配置完成后不要忘记点击ACCEPT按钮保存设置。
DSC00012.jpg   
  点击REAL SERVER连接,配置Real Server。
DSC00013.jpg 点击ADD按钮添加一个节点,点击EDIT按钮编辑节点,点击(DE)ACTIVATE按钮激活节点。
  
点击MONITORING SCRIPTS连接修改监控设置,在此保持默认。
DSC00014.jpg
  点击VIRTUALSERVERS连接,然后点击(DE)ACTIVATE按钮激活上面设置的服务。
  
  7、在Active LVS Router上启动pulse进程
Shell # /etc/init.d/pulse start
Shell # chkconfig --level 2345 piranha-gui on
Shell # chkconfig --level 2345 pulse on
拷贝配置文件到Backup LVS Router。
Shell # scp /etc/sysconfig/ha/lvs.cfgroot@192.168.0.21:/etc/sysconfig/ha/
  
8、在Backup LVS Router上启动pulse进程
Shell # /etc/init.d/pulse start
Shell # chkconfig --level 2345 pulse on
  
  9、配置Real Server
在Real Server上创建一个脚本:
Shell # vi /root/lvsRealServer.sh
#!/bin/bash
#Description : RealServer Start!
#Write by:iStone
#Last Modefiy:2007.12.15
  VIP=192.168.0.200
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255up
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
#end
保存退出,并给执行权限。
Shell # chmod u+x /root/lvsRealServer.sh
Shell # ./root/lvsRealServer.sh
将脚本加入/etc/rc.d/rc.local
Shell # vi /etc/rc.d/rc.local
/root/lvsRealServer.sh
在每个Real Server上重复本步。
  
  10、测试,在其它机器上访问虚拟IP
DSC00015.jpg

  
DSC00016.jpg

  
  回到Active LVS Router上,输入ipvsadm命令

  
  如果看到以上输出,说明LVS配置成功。
  
  原文地址:http://blog.sina.com.cn/s/blog_4e424e2101007rie.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109632-1-1.html 上篇帖子: LVS FULLNAT 内核调试输出 下篇帖子: 负载均衡LVS集群详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表