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

[经验分享] 虚拟机搭建LVS负载均衡DR直接路由模式

[复制链接]

尚未签到

发表于 2015-11-20 14:51:46 | 显示全部楼层 |阅读模式
  在公司闲了,研究研究自己喜欢的东西,哈哈,这两天安装部署了LVS负载均衡环境,搞了很久才配置成功,不容易啊。下面是我的环境:

虚拟机A:
IP:192.168.213.129
操作系统:CentOS 6.3
虚拟机B:
IP:192.168.213.128
操作系统:Ubuntu 12.04
虚拟IP设置为:192.168.213.130

  
  上面两个虚拟机我这里已经安装了Nginx1.0+PHP5.3+MYSQL5.5(测试效果的时候用到),还没安装的请自行安装。
  由于只装了两个虚拟机,我这里将虚拟机A作为Directorserver,同时也作为realServer,将虚拟机B作为realServer,具体安装步骤如下:
  1:安装依赖类库:

>yum -y install popt-static kernel-devel lftp  libnl*   popt*

  
  2:在虚拟机A中安装LVS,即ipvsadm:

>wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
>tar -zxf ipvsadm-1.26.tar.gz
>cd ipvsadm-1.26
>make && make install

  
  3:在虚拟机A创建lvsServer启动脚本:

>cd /etc/rc.d/init.d/
>vi lvsServer
#添加如下内容:
#!/bin/sh
# description: start LVS   of  Directorserver
VIP=192.168.213.130
RIP1=192.168.213.128
RIP2=192.168.213.129
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS  of DirectorServer"
# set the Virtual  IP Address and sysctl parameter
#虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的 eth0:0 、 eth0:1、eth0:2
#其实用ifconfig 为一个网卡配置多个IP地址
/sbin/ifconfig eth1:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth1:0
#echo "1" >/proc/sys/net/ipv4/ip_forward,通过该参数来启用包转发功能,从而使系统充当路由器。
#参数值为1时启用ip转发,为0时禁止ip转发。注意,我们可以在单网卡或双网卡的主机上实现ip转发
echo "1" >/proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
/sbin/iptables -F
# Reset iptables counters.
/sbin/iptables -Z
# Clear all ipvsadm rules/services.
#清除内核虚拟服务器表中的所有记录
/sbin/ipvsadm -C

#set LVS
#-A 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器
#-t 说明虚拟服务器提供的是tcp 的服务
#-s 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是:wlc
#-p 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒
/sbin/ipvsadm -A -t $VIP:80 -s rr -p 30
#-a 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
#-r 真实的服务器[Real-Server:port]
#-g 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth1:0 down
;;
*)
echo "Usage: $0 {start|stop}"  
exit 1
esac


  

4:在虚拟机A创建realServer启动脚本:

>cd /etc/rc.d/init.d/
>vi realServer
#内容如下:
#!/bin/bash
#description : start realserver
VIP=192.168.213.130
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS  of  REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
  


  5:在虚拟机A中设置ip地址转发功能:

>vi /etc/sysctl.conf    #修改net.ipv4.ip_forward = 1
  
  6:在虚拟机B中设置如下:



>vi /etc/sysctl.conf#修改如下net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
  

7:在虚拟机A启动lvsServer:

>cd /etc/rc.d/init.d/
>./lvsServer start
  

8:在虚拟机A启动realServer

>cd /etc/rc.d/init.d/
>./realServer start
  
  9:在虚拟机B创建realServer启动脚本:

>cd /etc/init.d/
>vi realServer
#内容如下:
#!/bin/bash
#description : start realserver
VIP=192.168.213.130
case "$1" in
start)
echo " start LVS  of  REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

  10:在虚拟机B启动realServer:

>cd /etc/init.d/
>./realServer start
  

11:分别在虚拟机A和B创建测试文件,在真实电脑里用浏览器访问192.168.213.130即可看到负载均衡效果。
  12:在虚拟机A中查看负载状态:

>ipvsadm -lcn
#显示如下:
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:56  FIN_WAIT    192.168.213.1:60118 192.168.213.130:80 192.168.213.129:80
TCP 14:56  ESTABLISHED 192.168.213.1:60119 192.168.213.130:80 192.168.213.128:80
  

运维网声明 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-141575-1-1.html 上篇帖子: LVS DR模式中arp_ignore和arp_announce的作用解释 下篇帖子: [转]LVS高可用方案汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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