淘先锋技术网

首页 1 2 3 4 5 6 7

目录

前言

一、集群概述

(一)、负载均衡技术类型

(二)、负载均衡实现方式

二、LVS结构

(一)、三层结构

(二)、架构对象

(三)、LVS工作模式

三、LVS负载均衡算法

(一)、静态负载均衡

(二)、动态负载均衡

(三)、ipvsadm命令详解

四、LVS配置案例

(一)、实现NAT模型搭建

负载调度器配置

192.168.238.138

 开启路由转发功能

192.168.238.139

192.168.238.140

配置负载分配策略

测试

(二)、实现DR模型搭建

 配置虚拟IP地址

调整ARP参数

 配置负载分配策略

 调整web节点配置ARP参数

 配置虚拟IP地址

测试

总结



前言

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。
 


一、集群概述

(一)、负载均衡技术类型


    四层负载均衡器 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
    七层负载均衡器 也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。

(二)、负载均衡实现方式

    硬件负载均衡产品:F5 、深信服 、Radware
    软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
 

二、LVS结构

(一)、三层结构

    负载调度器
    服务器池
    共享存储

(二)、架构对象

    VS        Virtual Server,也称为 Director,负载均衡服务器
    RS        Real Server,真正的服务器,集群中各节点
    VIP        Director 向外部提供服务的 IP
    DIP        Director 向内部与 RS 通信的 IP
    RIP        真实服务器的 IP
    CIP        客户端的 IP

(三)、LVS工作模式

    LVS-NAT                 (NAT模式)
    LVS-DR                  (直接路由模式)(应用最广泛)
    LVS-TUN                (IP隧道(Tunnel)模式,不常用)
    FULL-NAT模式       (双向转换模式,不常用)

三、LVS负载均衡算法

(一)、静态负载均衡

        rr           (round robin,轮询 )
        wrr        (weight round robin,加权轮询)
        sh         (source hashing,源地址散列算法(HASH))
        dh         (destination hashing,目标地址 HASH)

(二)、动态负载均衡

    lc                  (leash-connection,最少连接 )
       
    wlc               (加权最少连接)
       
    sed              (最少期望延迟)
       
    nq                (never queue,永不排队)
    LBLC           (基于局部性的最少连接 )
    LBLCR        (基于局部性的带复制功能的最少连接)

(三)、ipvsadm命令详解

    -A
                添加虚拟服务节点
    -D
                删除虚拟服务节点
    -L
                查看虚拟服务节点列表
    -a
                添加真实服务节点
    -d
                删除真实服务节点
    -l
                查看真实服务节点列表
    -t
                指定虚拟服务器IP地址
    -s
                指定调度算法
    -r
                指定真实服务器节点IP地址
    -w
                指定权重值
    -g
                直接路由模式(默认)
    -i
                隧道模式(不常用)
    -m
                NAT模式
 

四、LVS配置案例

配置好基础环境

防火墙设置,宽容模式,图形化设置,网卡配置

192.168.238.138

192.168.238.139

192.168.238.140

(一)、实现NAT模型搭建

负载调度器配置

192.168.238.138

配置本地yum源                yum install -y epel-release

安装ipvsadm                    yum  install -y ipvsadm

增加一块网卡对应电脑主机段

ens33

 ens37

systemctl restart network

主机上试通

 开启路由转发功能

 vim /etc/sysctl.d/route.conf 中插入net.ipv4.ip_forward=1

sysctl -p /etc/sysctl.d/route.conf

192.168.238.139

vim /etc/sysconfig/network-scripts/ifcfg-ens33

配置本地yum源                yum install -y epel-release

yum install -y nginx

cd /usr/share/nginx/html

echo who > index.html

systemctl start nginx

验证是否启动成功netstat -anptu |grep 80

网关是否正确route -n

192.168.238.140

vim /etc/sysconfig/network-scripts/ifcfg-ens33

配置本地yum源                yum install -y epel-release

yum install -y nginx

cd /usr/share/nginx/html

echo I AM > index.html

systemctl start nginx

验证是否启动成功netstat -anptu |grep 80

网关是否正确route -n

配置负载分配策略

192.168.238.138

modprobe ip_vs

lsmod |grep ip_vs

systemctl start ipvsadm

前期未创建目录或文件会报错,建议创建文件,方便存储数据,重启不会异常

cd /etc/sysconfig/ipvsadm

touch ipvsadm

systemctl start ipvsadm

ipvsadm -A -t 192.168.22.100:80 -s rr

ipvsadm -a -t 192.168.22.100:80 -r 192.168.238.139:80 -m

ipvsadm -a -t 192.168.22.100:80 -r 192.168.238.140:80 -m

ipvsadm-save > /etc/sysconfig/ipvsadm

ipvsadm-Ln查看状态

测试

Ctrl F5深度刷新

(二)、实现DR模型搭建

192.168.238.138

将ipvsadm还原

ipvsadm-Ln查看状态

删除路由设置

 配置虚拟IP地址

cd /etc/sysconfig/network-scripts/

mv ifcfg-ens37 ifcfg-ens33:0

 192.168.238.139192.168.238.140网卡配置删除网关(也可以配置静态IP)

调整ARP参数

 vim /etc/sysctl.conf中插入

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

 配置负载分配策略

ipvsadm -A -t 192.168.238.200:80 -s rr

 ipvsadm -a -t 192.168.238.200:80 -r 192.168.238.139:80 -g

ipvsadm -a -t 192.168.238.200:80 -r 192.168.238.140:80 -g

ipvsadm-save > /etc/sysconfig/ipvsadm

ipvsadm -Ln

 调整web节点配置ARP参数

192.168.238.139

vim /etc/sysctl.conf中插入

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2

sysctl -p

 配置虚拟IP地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

 systemctl restart network

route add -host 192.168.238.200/32 dev lo:0 

route -n

 192.168.238.140同上操作

测试


总结

本篇文章介绍了LVS的两者工作模式,NAT和DR。总体不难,需要注意添加网卡前将用网络的地方先下载或者停掉第二段网卡进行下载,DR模式需要现将环境构建,不能在原来的NAT模式上进行操作,否则会出错。