您的位置:首页 > 运维架构 > Linux

linux下lvs搭建负载均衡集群

2015-06-08 11:19 661 查看

常用的负载均衡开源软件有: nginx、lvs、keepalived

商业的硬件负载设备: F5、Netscale

1、 LB、LVS介绍

LB集群是load balance 集群的简写,翻译成中文就是负载均衡集群;

LVS是一个实现负载均衡集群的开源软件项目;

LVS架构从逻辑上可分为调度层(Director)、server集群层(Real server)和共享存储层;


LVS可分为三种工作模式: 

NAT(调度器将请求的目标ip即vip地址改为Real server的ip, 返回的数据包也经过调度器,调度器再把源地址修改为vip)

TUN(调度器将请求来的数据包封装加密通过ip隧道转发到后端的real server上,而real server会直接把数据返回给客户端,而不再经过调度器)

DR(调度器将请求来的数据包的目标mac地址改为real server的mac地址,返回的时候也不经过调度器,直接返回给客户端)


LVS的调度算法:轮叫调度(Round Robin)(简称rr) ,加权轮叫(Weighted Round Robin)(简称wrr),最少链接(least connection)(LC),加权最少链接(Weighted Least Connections)(WLC) 等等;


2、LVS/NAT 配置

准备工作:

需要准备三台机器干净的centos6.6系统,Director机器需要安装两块网卡;

三台服务器一台作为director, 两台作为real server

Director 有一个外网ip:192.168.22.11 和一个内网ip:192.168.11.11

两台Real Server 只有内网ip为:192.168.11.100   和 192.168.11.101,并且需要设置内网网关为director的内网ip:192.168.11.11

# iptables -t nat -nvL
Chain POSTROUTING (policy ACCEPT 1 packets, 124 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      *      192.168.11.0/24      0.0.0.0/0
[p]        
/spanbr /

浏览器打开192.168.11.100、192.168.11.101显示nginx的欢迎页面br /

在rs1、rs2上面修改html文件,用来区分;[root@rs1 ~]# cat /usr/share/nginx/html/index.html  rs1rs1rs1 [root@rs2 ~]# cat /usr/share/nginx/html/index.html  rs2rs2rs2p通过浏览器测试两台机器上的内容

浏览器打开 192.168.22.11,会显示rs1或rs2的html内容;来回切换说明试验OK;

br /

更改轮询规则为wlc,权重为2,进行测试

用另一台linux机器curl测试,出现2次1,1次2,span style="line-height:1.5;"来回切换说明OK;/span

# curl 192.168.22.11
rs1rs1rs1
[root@localhost ~]# curl 192.168.22.11
rs1rs1rs1
[root@localhost ~]# curl 192.168.22.11
rs2rs2rs2

在dr机器上ipvsadm -ln可以查看,权重比,保持的链接比大概一样;  -> RemoteAddress:Port       Forward Weight ActiveConn InActConn TCP  192.168.22.11:80 wlc   -> 192.168.11.100:80            Masq   2      0          26           -> 192.168.11.101:80            Masq   1      0          13

3、LVS/DR 配置 

DR模式中,director只负责分发,只有进入的流量,吞吐量会非常大;real server直接给用户提供数据,安全性会降低;

DR中的机器都需要配置公网ip,虚拟的ip每台机器都需要配置,用户请求的时候请求虚拟ip,返回的时候为轮询rs提供;

三台机器,每台机器只需要配置1个ip,vip是用脚本执行后会出现的,不用手动设置;

director(eth1:192.168.11.11    vip eth1:0 192.168.11.110)

real server1(eth1:192.168.11.100     vip lo:0: 192.168.11.110)

real server1(eth1:192.168.11.101     vip lo:0: 192.168.11.110)


Director 上 vim /usr/local/sbin/lvs_dr.sh //增加下面的内容#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/sbin/ipvsadm vip=192.168.11.110 rs1=192.168.11.100 rs2=192.168.11.101 ifconfig eth1:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev eth1: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

[code=bash;toolbar:false">#! /bin/bash vip=192.168.11.110 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


然后director上执行: bash /usr/local/sbin/lvs_dr.sh

两台rs上执行: bash /usr/local/sbin/lvs_dr_rs.sh


[p]执行完成后ifconfig可以显示虚拟ip地址;dr显示eth1:0,rs1、rs2显示lo:0;eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:70:4E:58             inet addr:192.168.11.110  Bcast:192.168.11.110  Mask:255.255.255.255           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           Interrupt:18 Base address:0x2080             lo:0      Link encap:Local Loopback             inet addr:192.168.11.110  Mask:255.255.255.255           UP LOOPBACK RUNNING  MTU:65536  Metric:1[root@localhost ~]# curl 192.168.11.110 rs1rs1rs1 [root@localhost ~]# curl 192.168.11.110 rs2rs2rs2 [root@localhost ~]# curl 192.168.11.110 rs1rs1rs1 [root@localhost ~]# curl 192.168.11.110 rs2rs2rs2[p]更改轮询算法为wrr,权重为2;然后执行文件,[root@dr ~]# bash /usr/local/sbin/lvs_dr.sh SIOCADDRT: 文件已存在
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: