一、负载均衡介绍

1、简单说就是让多台服务器均衡的去承载压力。实现负载均衡的开源软件有LVS,keepalived,haproxy,Nginx等,商业的有F5,NetScaler.

二、LVS介绍

1、LVS是一款四层的负载均衡软件,是针对TCP/IP做的转发和路由,所以稳定性和效率相当高。核心角色是调度器,用来分发用户的请求,还有处理用户服务的服务器

2、LVS根据实现方式不同:有NAT模式,IP Tunnel 模式 ,DR模式。

3、NAT模式:调度器把用户的请求通过预设的iptables规则转发给后端真实服务器。调度器会有一个公网IP,一个内网IP,真实服务器只有内网IP,用户访问的时候请求的是调度器的公网IP,会把用户的请求转到真实服务器的内网IP上,该模式节省公网IP,但是调度会成为一个瓶颈。

4、IP Tunnel 模式:需要一个公共的IP配置在分发器和所有realserver上,称之为vip.,客户请求数据包,目标地址VIP发送到LB上。LB接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后发送出去。RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。响应处理完毕之后,RS服务器使用自己的出公网的线路,将这个响应数据包发送给客户端。源IP地址还是VIP地址.

5、DR模式:和IP Tunnel 模式方法相同,用户的请求被调度器动态的分配到真实服务器上,真实服务器响应请求把结果直接返回给用户,在这种模式下不会封装IP,而是将数据帧的MAC地址改为真实服务器的MAC地址。

三、LVS的调度算法

1、轮询调度(Round Robin)

2、带权重的轮询调度(Weighted Round Robin)

3、最小连接调度(Least Connections)

4、带权重最小连接(Weighted Least Connections)

5、基于局部性的最小链接(Locality-Based Least Connections)

6、带复制的基于局部性最小链接(Locality-Based Least Connections with Replication)

7、目标地址散列调度(Destination Hashing)

8、源地址散列调度(Source Hashing)

四、LVS NAT 模式搭建

1、设置调度器(dir) 192.168.134.130(内网IP)   192.168.150.128(公网IP),需要设置为仅主机模式。

     RS1:192.168.134.150    RS2:192.168.134.131

2、三台机器上都关闭防火墙  首先安装 iptables-service

systemctl stop firewalld
systemctl disable firewalld

iptables -F 

service iptables save

3、设置RS1 和RS2 的网关 192.168.134.130  编辑  vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改 :GATEWAY=192.168.134.130 

然后: service network restart

 

4、在dir上安装 ipvsadm

yum install -y ipvsadm

5、在dir编写配置脚本  vim /usr/local/sbin/lvs_nat.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
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/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.134.0/24 -j MASQUERADE
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.150.128:80 -s wlc -p 300
$IPVSADM -a -t 192.168.150.128:80 -r 192.168.134.150:80 -m -w 1
$IPVSADM -a -t 192.168.150.128:80 -r 192.168.134.131:80 -m -w 1
6、为了方便区分RS1和RS2,给131和150设置不同的主页。编辑  vim /usr/share/nginx/html/index.html 
设置为 rs1 和 rs2 ,然后启动nginx :  systemctl start nginx
 
 7、测试,先运行lvs_nat.sh
发现一直请求到rs1上,这是因为脚本中设置了-p 参数,理论上300秒内都会访问到同一个服务上。

$IPVSADM -A -t 192.168.150.128:80 -s wlc -p 300  修改为  $IPVSADM -A -t 192.168.150.128:80 -s wlc

 

可以发现在rs1 和 rs2 之间来回访问,做到了负载均衡。

posted on 2018-04-10 23:22  天梭  阅读(131)  评论(0编辑  收藏  举报