lvs

lvs调度算法
lvs的调度算法决定了如何在集群点之间分布工作负荷。当director调度器收到来自客户端访问vip的上的集群服务的入站请求时,director调度器必须决定哪个集群节点应该处理请求。director调度器用的调度方法基本分为两类:
固定调度算法:rr 、 wrr 、dh 、 sh
动态调度算法:wlc 、lc 、lblc 、lblcr
rr:轮询算法,它将请求依次分配给不同的rs节点,也就是rs节点中均摊分配。这种算法简单,但只适合rs节点处理性能差不多的情况
wrr :加权轮训调度,它将依据不同rs的权值分配任务。权值较高的rs将优先获得任务,并且分配到的连接数就爱哪个比权值低的rs更多。相同权值的rs得到相同数目的连接数
wlc :加权最小连接数调度,假设各台rs的全职依次为wi,当前tcp连接数依次为ti。依次yi/wi为最小的rs作为下一个分配的rs
dh :目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得需要的rs
sh :源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的rs
lc :最小连接数调度(least-connerction),lpvs表存储了所有活动的连接。lb会比较将连接请求
lblc :基于地址的最小连接数调度(locality-based least-connection):将来自同一个 目的地址的请求分配给同一台rs,此时这台服务器是尚未满负荷的。否则就将这个请求cality-based least-connection):将来自同一个 目的地址的请求分配给同一台rs,此时这台服务器是尚未满负荷的。否则就将这个请求 配给连接数最小的rs,并以它作为 下一次分配的首先考虑

lvs有三种模式:nat模式(LVS/NAT),直接路由模式( LVS/DR),ip隧道模式(LVS/TUN)
以及二度开发的第四种模式(FULL NAT)
DR直接路由模式

原理:负载均衡器和RS都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域,也可以简单的理解为在同一台交换机上

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客

三台服务器,一台作为 director,两台作为 real server,director 有一个外网网卡(172.16.254.200) 和一个内网ip(192.168.0.8),两个 real server 上只有内网 ip (192.168.0.18) 和 (192.168.0.28),并且需要把两个 real server 的内网网关设置为 director 的内网 ip(192.168.0.8)

2、安装和配置

两个 real server 上都安装 nginx 服务

yum install -y nginx

Director 上安装 ipvsadm

yum install -y ipvsadm

Director 上编辑 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.0.0/24 -j MASQUERADE

director设置 ipvsadm

IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 172.16.254.200:80 -s wrr
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.18:80 -m -w 1
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.28:80 -m -w 1

复制代码

保存后,在 Director 上直接运行这个脚本就可以完成 lvs/nat 的配置

/bin/bash /usr/local/sbin/lvs_nat.sh

查看ipvsadm设置的规则

ipvsadm -ln

3、测试LVS的效果

通过浏览器测试2台机器上的web内容 http://172.16.254.200 。为了区分开,我们可以把 nginx 的默认页修改一下:

在 RS1 上执行

echo "rs1rs1" >/usr/share/nginx/html/index.html

在 RS2 上执行

echo "rs2rs2" >/usr/share/nginx/html/index.html

NAT模式

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。
在之前的DR模式下接着操作


三台服务器,一台作为 director,两台作为 real server,director 有一个外网网卡(172.16.254.200) 和一个内网ip(192.168.0.8),两个 real server 上只有内网 ip (192.168.0.18) 和 (192.168.0.28),并且需要把两个 real server 的内网网关设置为 director 的内网 ip(192.168.0.8)

2、安装和配置

两个 real server 上都安装 nginx 服务

yum install -y nginx

Director 上安装 ipvsadm

yum install -y ipvsadm

Director 上编辑 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.0.0/24 -j MASQUERADE

director设置 ipvsadm

IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 172.16.254.200:80 -s wrr
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.18:80 -m -w 1
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.28:80 -m -w 1

复制代码

保存后,在 Director 上直接运行这个脚本就可以完成 lvs/nat 的配置

/bin/bash /usr/local/sbin/lvs_nat.sh

查看ipvsadm设置的规则

ipvsadm -ln

3、测试LVS的效果

通过浏览器测试2台机器上的web内容 http://172.16.254.200 。为了区分开,我们可以把 nginx 的默认页修改一下:

在 RS1 上执行

echo "rs1rs1" >/usr/share/nginx/html/index.html

在 RS2 上执行

echo "rs2rs2" >/usr/share/nginx/html/index.html

注意,切记一定要在两台 RS 上设置网关的 IP 为 director 的内网 IP。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值