通过建站学运维1901-42任务

LVS负载均衡介绍

几个专业术语:

  • DIR(分发器)
  • DIP(DIR的IP)
  • RS(真实服务器)
  • VIP(虚拟IP,也是提供服务的IP)

LVS三种模式

http://www.it165.net/admin/html/201401/2248.html)

  • NAT模式(Network address translation):
    用iptables的NAT表实现网络地址转换,
    数据包目标IP为DIP,DIR将目标IP地址转换为RS的IP,
    这样请求的包就到了RS上,
    而RS返回的数据包本来是到DIP的,也会经过DIR转换,
    把目标IP转换为客户端的IP
  • DR模式(direct routing):
    DIR会改请求报文中的MAC地址,
    本来请求的包中的MAC地址为DIR的MAC地址,
    但是却被修改成了RS的MAC地址,
    这样数据包就到了RS上。
    由于数据包的源IP为客户端IP,所以它在返回数据包的时候,
    可以直接发给客户端,而不再经过DIR。
  • Tunnel模式(ip tunneling): 客户端请求的数据包发给DIR,
    DIR会近一步把包封装,加上了一个新的目标IP(RS的IP),
    这样数据包到了RS后再将封装的包拆开,获得原始数据包。
    返回数据包的时候,也是直接发给了客户端。

LVS八种调度算法

  • 轮叫(round Robin):
    调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,
    它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
  • 加权轮叫(Weighted Round Robin):
    调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。
    这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • 最少链接(Least Connections):
    调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。
    如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。
  • 加权最少链接(Weighted Least Connections):
    在集群系统中的服务器性能差异较大的情况下,
    调度器采用"加权最少链接"调度算法优化负载均衡性能,
    具有较高权值的服务器将承受较大比例的活动连接负载。
    调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
  • 基于局部性的最少链接(Locality-Based Least Connections)
    "基于局部性的最少链接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。
    该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;
    若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载, 则用"最少链接"的原则选出一个可用的服务 器,将请求发送到该服务器。
  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication):
    "带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。
    它与LBLC算法的不同之处是它要维护从一个 目标IP地址到一组服务器的映射,
    而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址
    对应的服务 器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,
    将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一 台服务器,
    将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,
    将最忙的服务器从服务器组中删除,以降低复制的 程度。
  • 目标地址散列(Destination Hashing):
    "目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,
    若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
  • 源地址散列(Source Hashing):
    "源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,
    若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

搭建LVS负载均衡 - DR模式

1,准备

  • 三台机器:
    aming01(128) -> RS1
    aming03(130) -> RS2
    aming02(129) -> DIR

VIP: 100

2,在DIR上操作:

  • 安装ipvsadm:
    yum install -y ipvsadm
  • 编辑脚本
    vim /usr/local/sbin/lvs_dr.sh //内容如下
#! /bin/bash
ipv=/usr/sbin/ipvsadm
vip=192.168.222.100
rs1=192.168.222.128
rs2=192.168.222.130
#注意这里的网卡名字
#之所以要先重启ens33网卡,是为了防止脚本重复执行时和之前的配置冲突
ifdown ens33
ifup ens33
#增加ens33:1虚拟网卡,并把vip配置在ens33:1上
ifconfig ens33:1 $vip broadcast $vip netmask 255.255.255.255 up
#增加路由
route add -host $vip dev ens33:1
#-C表示清空之前的规则
$ipv -C
#-A表示增加规则,-t指定vip以及port,-s指定调度算法,这里还有一个-p选项,后面跟时间(单位s),表示保持长连接
$ipv -A -t $vip:80 -s wrr
#-a表示增加rs,-r指定具体的rsip和port,-g表示使用dr模式(-i表示ip tunnel模式,-m表示NAT模式),-w指定权重
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
# 脚本内容到此结束
  • 执行脚本
    sh /usr/local/sbin/lvs_dr.sh

  • 检查:ip add

  • 在两台RS上编辑脚本
    vim /usr/local/sbin/lvs_rs.sh //内容如下:

#! /bin/bash
ipv=/usr/sbin/ipvsadm
vip=192.168.222.100
rs1=192.168.222.128
rs2=192.168.222.130
#注意这里的网卡名字
#之所以要先重启ens33网卡,是为了防止脚本重复执行时和之前的配置冲突
ifdown ens33
ifup ens33
#增加ens33:1虚拟网卡,并把vip配置在ens33:1上
ifconfig ens33:1 $vip broadcast $vip netmask 255.255.255.255 up
#增加路由
route add -host $vip dev ens33:1
#-C表示清空之前的规则
$ipv -C
#-A表示增加规则,-t指定vip以及port,-s指定调度算法,这里还有一个-p选项,后面跟时间(单位s),表示保持长连接
$ipv -A -t $vip:80 -s wrr
#-a表示增加rs,-r指定具体的rsip和port,-g表示使用dr模式(-i表示ip tunnel模式,-m表示NAT模式),-w指定权重
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
# 脚本内容到此结束#!/bin/bash
vip=192.168.222.100
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档https://www.imooc.com/article/79661
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
  • 执行脚本
    sh /usr/local/sbin/lvs_rs.sh

  • 测试
    windows hosts 浏览器

  • linux curl vip

转载于:https://my.oschina.net/u/4067478/blog/3026547

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值