• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

LVS负载均衡集群——NAT

武飞扬头像
ZFX20001123
帮助1

目录

一、集群与分布式

1.1.集群的含义

1.2.lvs模型

1.3.系统性能扩展方式

1.4.集群的三种类型

1.5.LVS的负载调度算法

1.6.集群设计原则

1.7.负载均衡集群架构

二、Linux Virtual Server简介

2.1.LVS介绍

2.2.LVS工作原理

2.3LVS 功能及组织架构

2.3.1应用于高访问量的业务

2.3.2扩展应用程序

2.3.3消除单点故障

2.3.4同城容灾 (多可用区容灾)

2.4 LVS集群类型中的术语

三、LVS工作模式和相关命令

3.1 LVS集群的工作模式

 3.2LVS工作模式总结和比较

四、ipvsadm 工具

五、NAT模式——LVS负载均衡部署

 5.1部署共享存储(NFS服务器:192.168.250.20)

5.2节点Web服务器

第二台(192.168.250.60)

5.3 负载服务器

5.4Windows客户机验证

一、集群与分布式

1.1.集群的含义

  • Cluster,集群、群集,为解决某个特定问题将多台计算机组合起来形成的单个系统。

  • 由多台主机构成,但对外只表现为一个整体。

1.2.lvs模型

学新通

学新通

1.3.系统性能扩展方式

  • Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务

  • Scale Out:水平扩展,向外扩展,增加设备,并行地运行多个服务调度分配问题,Cluster

垂直扩展不再提及:

随着计算机性能的增长,其价格会成倍增长

单台计算机的性能是有上限的,不可能无限制地垂直扩展,多核CPU意味着即使是单台计算机也可以并行的。那么,为什么不一开始就并行化技术?

1.4.集群的三种类型

  • 负载均衡群集

①、提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能。

②、LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载。

  • 高可用群集

①、提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果。

②、HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。
例如:“故障切换”、“双机热备” 等。

  • 高性能运算群集

①、以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。

②、高性能依赖于"分布式运算”、“并行计算” , 通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。

1.5.LVS的负载调度算法

轮询(Round Robin)

  • 将收到的访问请求按照顺序轮流分配给群集中的各节点 (真实服务器)。
  • 均等地对待每台服务器,而不管服务器实际的连接数和系统负载。

加权轮询(Weighted Round Robin)

  • 根据调度器设置的权重值来分发请求。
  • 权重值高的节点优先获得任务并且分配的请求越多
  • 这样可以保证性能高的节点承担更 多请求。

最小连接(Least Connections)

  • 根据真实服务器已建立的连接数进行分配。
  • 将收到的访问请求优先分配给连接数最少的节点。
  • 如果所有的服务器节点性能相近,采用这种方式可以更好的均衡负载。

加权最小连接(Weighted Least Connections)

  • 在服务器节点的性能差异较大的 情况下,调度器可以根据节点服务器负载自动调整权重。
  • 权重较高的节点将承担更 大比例的活动连接负载。

⑤IP_Hash

  • 根据请求来源的IP地址进行Hash计算,得到后端服务器。
  • 这样来自同一个IP的请求总是会落到同一台服务器上处理,以致于可以将请求上下文信息存储在这个服务器上。

⑥url_hash

  • 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。
  • 后端服务器为缓存时比较有效。

⑦fair

  • 采用的不是内建负载均衡使用的轮换的均衡算法。
  • 而是可以根据页面大小、加载时间长短智能的进行负载均衡。
  • 也就是根据后端服务器时间来分配用户请求,响应时间短的优先分配。

1.6.集群设计原则

  • 可扩展性—集群的横向扩展能力
  • 可用性—无故障时间 (SLA service level agreement)
  • 性能—访问响应时间
  • 容量—单位时间内的最大并发吞吐量(C10K 并发问题)

1.7.负载均衡集群架构

  • 第一层,负载调度器(Load Balancer或Director)

访问整个群集系统的唯一入口, 对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。

  • 第二层,服务器池(Server Pool)

群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。

  • 第三层,共享存储(Share Storage)

为服务器池中的所有节点提供稳定、一致的文件存取服务, 确保整个群集的统一性共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

学新通

二、Linux Virtual Server简介

2.1.LVS介绍

LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名正明), 阿里的四层SLB(Server Load Balance)是基于LVS keepalived实现。

  1.  
    LVS 官网:http://www.linuxvirtualserver.org/
  2.  
    阿里SLB和LVS:
  3.  
    https://yq.aliyun.com/articles/1803
  4.  
    https://github.com/alibaba/LVS

整个SLB系统由3部分构成:四层负载均衡,七层负载均衡和控制系统

  •  四层负载均衡 ,采用开源软件LVS (linux virtual server),并根据云计算需求对其进行了定制化;该技术已经在阿里巴巴内部业务全面上线应用2年;
  • 七层负载均衡,采用开源软件Tengine;该技术已经在阿里巴巴内部业务全面上线应用3年多;·控制系统,用于配置和监控负载均衡系统;

2.2.LVS工作原理

LVS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理”。

2.3LVS 功能及组织架构

负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性。

2.3.1应用于高访问量的业务

如果您的应用访问量很高,可以通过配置监听规则将流量分发到不同的云服务器 ECS(Elastic Compute Service 弹性计算服务)实例上。此外,可以使用会话保持功能将同一客户端的请求转发到同一台后端ECS。

2.3.2扩展应用程序

可以根据业务发展的需要,随时添加和移除ECS实例来扩展应用系统的服务能力,适用于各种Web服务器和App服务器。

2.3.3消除单点故障

可以在负载均衡实例下添加多台ECS实例。当其中一部分ECS实例发生故障后,负载均衡会自动屏蔽故障的ECS实例,将请求分发给正常运行的ECS实例,保证应用系统仍能正常工作。

2.3.4同城容灾 (多可用区容灾)

为了提供更加稳定可靠的负载均衡服务,阿里云负载均衡已在各地域部署了多可用区以实现同地域容灾。当主可用区出现机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(如:大约30s中断)切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区提供服务。使用负载均衡时,您可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾。此外,建议您结合自身的应用需要,综合考虑后端服务器的部署。如果您的每个可用区均至少添加了一台ECS实例,那么此种部署模式下的负载均衡服务的效率是最高的。

2.4 LVS集群类型中的术语

  • VS:Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器)
  • RS:Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)
  • CIP:Client IP(客户机IP)
  • VIP:Virtual serve IP VS外网的IP
  • DIP:Director IP VS内网的IP
  • RIP:Real server IP (真实IP)

学新通

三、LVS工作模式和相关命令

3.1 LVS集群的工作模式

  • 负载均衡群集是目前企业用得最多的群集类型

  • 群集的负载调度技术有三种工作模式

    • lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

    • lvs-dr:操纵封装新的MAC地址(直接路由)

    • lvs-tun:隧道模式

1、NAT模式
①、地址转换
● Network Address Translation,简称NAT模式
● 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
● 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

2、TUN模式
②、IP隧道
● IP Tunnel,简称TUN模式
● 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
● 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

3、DR模式
①、直接路由
● Direct Routing,简称DR模式
● 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
● 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

NAT模式和DR模式的区别: NAT和DR都会将调度器作为客户机访问入口,但是NAT模式进行回应客户机请求时候的出口,也是调度器作为出口。而DR则不经过调度器,直接回应客户机。

NAT的安全性也要比DR高,因为NAT会进行一次SNAT转换,而DR是直接回应客户机,服务器地址直接暴露给客户端,所以安全性低一点。

 3.2LVS工作模式总结和比较

学新通

四、ipvsadm 工具

ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。

常用参数:

学新通

 五、NAT模式——LVS负载均衡部署

  1.  
    负载调度器:配置双网卡 内网:192.168.250.70(ens33) 外网卡:12.0.0.1(ens37)
  2.  
    二台WEB服务器集群池:192.168.250.12192.168.250.60
  3.  
    一台NFS共享服务器:192.168.250.20
  4.  
    客户端:12.0.0.100

学新通

 5.1部署共享存储(NFS服务器:192.168.250.20)

  • NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡 群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS 也是 NAS 存储设备必然支 持的一种协议。
  • NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程 到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。
  1.  
    1. #关闭防火墙
  2.  
    systemctl stop firewalld
  3.  
    setenforce 0
  4.  
     
  5.  
    2. #安装nfs服务
  6.  
    yum install nfs-utils rpcbind -y
  7.  
     
  8.  
    3. #新建目录,并创建站点文件
  9.  
    cd /opt/
  10.  
    mkdir kgc benet
  11.  
    echo "this is kgc" >yxp/index.html
  12.  
    echo "this is benet" >dhc/index.html
  13.  
     
  14.  
    4. #开启服务
  15.  
    systemctl start rpcbind
  16.  
    systemctl start nfs
  17.  
     
  18.  
    5. #授权
  19.  
    chmod 777 kgc/ benet/
  20.  
     
  21.  
    6. #设置共享策略
  22.  
    vim /etc/exports
  23.  
    /opt/kgc 192.168.250.0/24(rw,sync)
  24.  
    /opt/benet 192.168.250.0/24(rw,sync)
  25.  
     
  26.  
     
  27.  
    7. #发布服务
  28.  
    systemctl restart nfs
  29.  
    exportfs -rv
  30.  
     
学新通

5.2节点Web服务器

第一台(192.168.250.12)

  1.  
    1. #关闭防火墙
  2.  
    systemctl stop firewalld
  3.  
    setenforce 0
  4.  
     
  5.  
    2. #安装httpd
  6.  
    yum install -y httpd
  7.  
     
  8.  
    3. #查看nfs服务
  9.  
    showmount -e 192.168.250.20
  10.  
     
  11.  
    4. #挂载站点
  12.  
     
  13.  
    #法一:临时挂载
  14.  
    df -Th
  15.  
    cat /var/www/html/index.html
  16.  
    mount 192.168.250.20:/opt/kgc /var/www/html/
  17.  
     
  18.  
    #法二:永久挂载
  19.  
    vim /etc/fstab
  20.  
    192.168.250.20:/opt/kgc/ /var/www/html/ nfs defaults,_netdev 0 0
  21.  
    mount -a
  22.  
     
  23.  
     
  24.  
    5. #开启httpd服务
  25.  
    systemctl start httpd
  26.  
     
  27.  
    6. #指定网关
  28.  
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
  29.  
    GATEWAY=192.168.250.70
  30.  
    #DNS1=8.8.8.8
  31.  
     
  32.  
    7. #重启网络服务
  33.  
    systemctl restart network
学新通

第二台(192.168.250.60)

  1.  
    1. #关闭防火墙
  2.  
    systemctl stop firewalld
  3.  
    setenforce 0
  4.  
     
  5.  
    2. #安装httpd
  6.  
    yum install -y httpd
  7.  
     
  8.  
    3. #查看nfs服务
  9.  
    showmount -e 192.168.250.20
  10.  
     
  11.  
    4. #挂载站点
  12.  
     
  13.  
    #法一:临时挂载
  14.  
    mount 192.168.250.20:/opt/benet /var/www/html/
  15.  
    df -Th
  16.  
    cat /var/www/html/index.html
  17.  
     
  18.  
    #法二:永久挂载
  19.  
    vim /etc/fstab
  20.  
    192.168.250.20:/opt/benet/ /var/www/html/ nfs defaults,_netdev 0 0
  21.  
    mount -a
  22.  
     
  23.  
    5. #开启httpd服务
  24.  
    systemctl start httpd
  25.  
     
  26.  
    6. #指定网关
  27.  
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
  28.  
    GATEWAY=192.168.250.70
  29.  
    #DNS1=8.8.8.8
  30.  
     
  31.  
    7. #重启网络服务
  32.  
    systemctl restart network
学新通

5.3 负载服务器

内网:192.168.250.70(ens33)

外网:12.0.0.1(ens37)

  1.  
    1. #关闭防火墙
  2.  
    systemctl stop firewalld
  3.  
    setenforce 0
  4.  
     
  5.  
    2. #安装ipvsadm
  6.  
    yum install -y ipvsadm*
  7.  
     
  8.  
     
  9.  
    3. #添加一块网卡,我这里是ens37,配置网卡,重启网络
  10.  
    cd /etc/sysconfig/network-scripts/
  11.  
    cp ifcfg-ens33 ifcfg-ens37
  12.  
    vim ifcfg-ens37
  13.  
    去掉UUID、修改IP、修改网卡名
  14.  
     
  15.  
     
  16.  
    systemctl restart network
  17.  
     
  18.  
    4. #打开路由转发功能
  19.  
    vim /etc/sysctl.conf
  20.  
    net.ipv4.ip_forward = 1
  21.  
    sysctl -p
  22.  
     
  23.  
    5. #防火墙做策略
  24.  
    #查看策略
  25.  
    iptables -nL -t nat
  26.  
    #清空策略
  27.  
    iptables -F
  28.  
    #添加策略
  29.  
    iptables -t nat -A POSTROUTING -s 192.168.250.0/24 -o ens37 -j SNAT --to 12.0.0.1
  30.  
    #查看策略
  31.  
    iptables -nL -t nat
  32.  
     
  33.  
    6. #加载LVS内核模块
  34.  
    modprobe ip_vs
  35.  
    cat /proc/net/ip_vs
  36.  
     
  37.  
    7. #开启ipvsadm服务
  38.  
    ipvsadm-save >/etc/sysconfig/ipvsadm
  39.  
    systemctl start ipvsadm.service
  40.  
     
  41.  
    8. #清空策略
  42.  
    ipvsadm -C
  43.  
     
  44.  
    9. #制定策略
  45.  
    #指定IP地址 外网的入口 -s rr 轮询
  46.  
    ipvsadm -A -t 12.0.0.1:80 -s rr
  47.  
    #先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
  48.  
    ipvsadm -a -t 12.0.0.1:80 -r 192.168.250.12:80 -m
  49.  
    ipvsadm -a -t 12.0.0.1:80 -r 192.168.250.60:80 -m
  50.  
    #开启服务
  51.  
    ipvsadm
  52.  
     
  53.  
    10. 查看策略
  54.  
    ipvsadm -ln
学新通

5.4Windows客户机验证

修改网卡信息

学新通

 网页测试:

学新通

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhkbkhj
系列文章
更多 icon
同类精品
更多 icon
继续加载