linux笔记40-LVS负载均衡集群

LVS负载均衡集群

1、LB、LVS

LB集群式load balance集群的简写,也就是负载均衡集群

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

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

 

LVS是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层(Director)、server集群层(Real server)和共享存储层。

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

 

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

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

 

三种IP:DIP(director ip)、VIP(virtual ip)、RIP(real ip),其中DIP、RIP为同一个网段,并且为内网IP,vip为对外提供服务的ip,Director,Real server上都要设置vip

LVS的调度算法:轮叫调度(Round Robin)(简称rr),加权轮叫(Weighted Round Robin)(简称wrr),最少连接(least connection)(简称lc),加权最少连接(Weighted Least Connections)(简称wlc)等待。

2LVS/NAT配置

三台服务器A、B、C,HostA作为director,HostB、HostC两台作为real server,Director 有一个外网ip(192.168.1.119)和一个内网ip(192.168.153.119),两个real server只有内网ip(192.168.153.120)和(192.168.153.121),并且把两个real server的内网网关设置为director的内网ip(192.168.153.119)

    两个real server都要安装nginxyum install -y nginx

    Director上安装ipvsadm: yum install -y ipvsadm

    Director上vim /usr/local/sbin/lvs_nat.sh //增加:

#!/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    //清空nat规则
iptables -t nat -X   //删除nat规则链
iptables -t nat -A POSTROUTING -s 192.168.153.0/24 -j MASQUERADE
#director设置ipvsadm
IPVSADM='/sbin/ipvsadm'
$IPVSADM -C   //清空规则
$IPVSADM -A -t 192.168.1.119:80 -s wrr -p 300  //-A增加director,-s指定调度算法,-p长连接维持时间
$IPVSADM -a -t 192.168.1.119:80 -r 192.168.153.120:80 -m -w 1  //-a增加real server,-r表示real server,-w表示权重
$IPVSADM -a -t 192.168.1.119:80 -r 192.168.153.121:80 -m -w 1

直接运行该脚本完成lvs/nat的配置

sh /usr/local/sbin/lvs_nat.sh

iptables -nvL -t nat

ipvsadm -l

 

通过浏览器测试两台机器上的nginx内容:

启动HostB、HostC上的nginx,首先在浏览器直接访问对应的IP,可以正常浏览nginx的默认欢迎页。

为了方便测试和区分,我们将两台real server访问默认页分别改为显示bbbbbb和 cccccc

     此时HostA上,没有开启80端口,但在浏览器里输入HostA的外网IP(192.168.1.119),可以访问HostB或者HostC的页面:

 

      为更加直观的观察,将lvs_nat.sh中长连接“-p 300”去掉,重新执行脚本,在第四台linux机器上使用curl访问,就可以直观的观察到负载均衡的效果:

    

     

3、LVS/DR配置

三台机器:

director(eth0 192.168.1.119,vip eth0:0 192.168.1.125)

real server1(eth1 rip:192.168.1.120,vip lo:0: 192.168.1.125)

real server2(eth0 rip:192.168.1.123,vip lo:0: 192.168.1.125)

 

Director 上:vim /usr/local/sbin/lvs_dr.sh //增加

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=192.168.1.125
rs1=192.168.1.120
rs2=192.168.1.123
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up //绑定vip
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1  //-g表示dr模式
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

两台rs上:vim /usr/local/sbin/lvs_dr_rs.sh

#!/bin/bash
vip=192.168.1.125
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

分别执行三个脚本,执行后可以查看网络状况如下:

 

此时,在第四台机器上使用curl做测试:curl 192.168.1.125

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值