标签:算法 usr tin rip rect end 封装 hash ali
一:LVS介绍和LVS调度算法LB 集群的架构如下图,原理也很简答,就是当用户的请求过来时,会直接发到分发器
(Director Server)上,然后它把用户的请求根据预先设置好的算法,智能均衡地分发到后
端的真正服务器(real server)上。如果不同的机器,可能用户请求到的数据不一样,为了
避免这样的情况发生,所以用到了共享存储,这样保证所有用户请求的数据是一样的。
LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为调度层
(Director)、server集群层(Real server)和共享存储。LVS 从实现上分为下面三种模式。
(1)NAT(调度器将请求的目标 ip 即 vip地址改为Real server的ip, 返回的数据包也
经过调度器,调度器再把源地址修改为vip)。
(2)TUN(调度器将请求来的数据包封装加密通过 ip 隧道转发到后端的 real server上,
而real server会直接把数据返回给客户端,而不再经过调度器)。
(3)DR(调度器将请求来的数据包的目标mac地址改为real server的mac 地址,返回
的时候也不经过调度器,直接返回给客户端)。
参考资料 http://www.it165.net/admin/html/201401/2248.html
其中DIP(driector ip)为分发器的 IP,NAT模式下它必须为公网IP,要对外服务。VIP(virtual ip)为虚拟IP,用在TUN 和DR 模式中,需
要同时配置在分发器和后端真实服务器上。RIP(Real IP)为后端真实服务器的IP,在TUN和DR 模式中,RIP 为公网 IP。
要想把用户的请求调度给后端的 RS,是需要经过调度算法来实现的,那么关于 LVS 的调度算法,都有哪些?
轮询 Round-Robin rr
加权轮询 Weight Round-Robin wrr
最小连接 Least-Connection lc
加权最小连接 Weight Least-Connection wlc
基于局部性的最小连接 Locality-Based Least Connections lblc
带复制的基于局部性最小连接 Locality-Based Least Connections with Replication lblcr
目标地址散列调度 Destination Hashing dh
源地址散列调度 Source Hashing sh
(1)环境说明
三台服务器一台作为 director, 两台作为real server,Director 有一个外网 ip
(192.168.31.166) 和一个内网 ip(192.168.21.166), 两个real server上只有内网
ip(192.168.21.100)和(192.168.21.101) 并且需要把两个 real server的内网网关设置为 director
的内网ip(192.168.21.166)。
(2)安装和配置
两个real server 上都安装 nginx服务
#yum install -y nginx
Director上安装ipvsadm
#yum install -y ipvsadm
Direcotr 上编辑nat实现脚本
#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
iptables -t nat –X
iptables -t nat -A POSTROUTING -s 192.168.21.0/24 -j MASQUERADE
#director设置ipvsadm
IPVSADM=‘/sbin/ipvsadm‘
$IPVSADM –C
$IPVSADM -A -t 192.168.31.166:80 -s lc -p 300
$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.100:80 -m -w 1
$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.101:80 -m -w 1
保存后,在Director上直接运行这个脚本就可以完成lvs/nat的配置了。
#/bin/bash /usr/local/sbin/lvs_nat.sh
(3)测试
通过浏览器测试两台机器上的 web内容http://192.168.31.166。为了区分开,我们可以
把nginx的默认页修改一下:
在 RS1 上执行
#echo "rs1rs1" >/usr/share/nginx/html/index.html
在 rs2 上执行
#echo "rs2rs2" >/usr/share/nginx/html/index.html
注意,切记一定要在两台RS上设置网关的IP 为 director的内网IP。
标签:算法 usr tin rip rect end 封装 hash ali
原文地址:http://blog.51cto.com/10941098/2171430