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

[经验分享] LVS实现负载均衡(nat,dr,tun)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-21 08:40:06 | 显示全部楼层 |阅读模式
                      

案例1:基于NAT的负载均衡

网卡配置这里就不在具体描述,在网络环境调通的情况下操作,具体的拓扑如图:

Director:10.10.10.133

                  |                                |
RS1: 10.10.10.131           RS2: 10.10.10.132

我在做实验的时候是采用yum的方式进行安装的LVS管理工具ipvsadm,yum安装非常简单这里也不在赘述,这里写一下源码的方式安装


#解压源码包,在下载源码包时注意内核版本,下载对应的配置工具。

[iyunv@CentOSsoft]# tar xvf ipvsadm-1.26.tar.gz

#可直接编译

[root@CentOSipvsadm-1.26]# make

#安装

[root@CentOSipvsadm-1.26]# make install

#确认ipvsadm安装成功

[root@CentOSipvsadm-1.26]#  /sbin/ipvsadm -v

ipvsadm v1.262008/5/15 (compiled with popt and IPVS v1.2.1)

调度器配置

#启用路由转发功能

[iyunv@ Director ~]# vim /etc/sysctl.conf

将net.ipv4.ip_forward 数值由0改成1,开启路由转发功能

退出文件执行[iyunv@director ~]# sysctl –p 使内核参数生效

#清除ipvsadm 表

[iyunv@ Director ~]# ipvsadm  -C

#使用ipvsadm 安装LVS 服务

[iyunv@ Director ~]# /sbin/ipvsadm   -A   –t 10.10.10.133:80

#增加第1台realserver

[iyunv@ Director ~]# /sbin/ipvsadm -a -t 10.10.10.133:80-r 10.10.10.131:80 -m -w 1

#增加第2台realserver

[iyunv@ Director ~]# /sbin/ipvsadm -a –t 10.10.10.133:80-r 10.10.10.132:80 -m -w 1

[iyunv@ Director ~]# service ipvsadm save

[iyunv@ Director ~]# service ipvsadm start

真实服务器的设置 (两台服务器配置相同)

设置IP转发  echo "0">/proc/sys/net/ipv4/ip_forward

避免arp广播问题

  echo 1 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/tunl0/arp_announce

echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

在两台服务器上都安装上http服务,分别在他们的index.html文件中写入各自的IP地址

最后在Director主机上进行测试

curlhttp:// 10.10.10.131

curlhttp:// 10.10.10.132

附:(一个Director端的配置脚本,可以直接使用)

#! /bin/bash
# director 服务器上开启路由转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 10.10.10.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 10.10.10.133:80 -s lc -p 300 (-p 代表的是超时时间)
$IPVSADM -a -t 10.10.10.133:80 -r 10.10.10.131:80 -m -w 1
$IPVSADM -a -t 10.10.10.133:80 -r 10.10.10.132:80 -m -w 1


案例2:基于DR的负载均衡


三台机器:
director(eth0 10.10.10.133, vip eth0:0: 10.10.10.100)
real server1(eth0 rip: 10.10.10.131, vip lo:0: 10.10.10.100)
real server2(eth0 rip: 10.10.10.135, vip lo:0: 10.10.10.100)
Director 上 vim/usr/local/sbin/lvs_dr.sh //增加

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=10.10.10.100
rs1=10.10.10.131
rs2=10.10.10.135
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1


两台rs上:vim /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=10.10.10.100
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip 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


关于arp_ignore和 arp_announce 参考:http://www.iyunv.com/lgfeng/archive/2012/10/16/2726308.html

然后director上执行: bash /usr/local/sbin/lvs_dr.sh
两台rs上执行: bash /usr/local/sbin/lvs_dr_rs.sh
Windows下浏览器测试访问


案例3:基于tun的负载均衡

VIP=10.10.10.100

Director配置

[iyunv@director ~]#  ipvsadm -C

[iyunv@director ~]#  ipvsadm -A -t 10.10.10.100:80 -s rr

[iyunv@director ~]#  ipvsadm -a -t 10.10.10.100:80 -r10.10.10.131:80 -i -w 1

[iyunv@director ~]#  ipvsadm -a -t 10.10.10.100:80 -r10.10.10.135:80 -i -w 1

[iyunv@director ~]#  service ipvsadm save

[iyunv@director ~]#  service ipvsadm start

[iyunv@director ~]#  echo "1" >/proc/sys/net/ipv4/ip_forward

[iyunv@director ~]#  ifconfig eth1:0 10.10.10.100 netmask255.255.255.0 up

RealServer配置

Vim   /usr/local/sbin/tun.sh

#!/bin/bash

if [ $# -ne1  ];

then

        echo "usage: $0 virtualIP"

        exit 0

fi


VIP=$1      


echo"0" >/proc/sys/net/ipv4/ip_forward


/sbin/ifconfigeth0 mtu 1440


/sbin/ifconfigtunl0 up

/sbin/ifconfigtunl0 ${VIP} broadcast ${VIP} netmask 0xffffffff up

/sbin/route add-host ${VIP} dev tunl0


echo 1 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/tunl0/arp_announce

echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce


echo 0 >/proc/sys/net/ipv4/conf/tunl0/rp_filter

echo 0 >/proc/sys/net/ipv4/conf/all/rp_filter

[iyunv@slave ~]#   bash /usr/local/sbin/tun.sh 10.10.10.100

[iyunv@master ~]#   bash /usr/local/sbin/tun.sh 10.10.10.100

配置完成后通过IE浏览器访问http://10.10.10.100 刷新页面查看轮询效果


                   


运维网声明 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-59048-1-1.html 上篇帖子: lvs后端realserver的vip管理脚本lvs-realsvr.sh 下篇帖子: LVS主要的调度算法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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