负载均衡集群指使用多台提供相同服务的服务器组成集群系统,提高服务的并发处理能力。负载均衡集群的前端使用一个调度器,将客户端请求平均分配到后端的服务器中,同时调度器可能还具有后端服务器状态检测的功能,将故障的服务器自动下线,使得集群具有一定的容错能力。集群拥有三种类型,负载均衡群集、高可用集群、高性能运算群集。

在典型的负载均衡群集中,包括三个层次的组件。

  • 第一层,负载调度器:访问整个群集系统的唯一入口,对外使用所有的服务器共有的VIP(Virtual IP 虚拟IP)地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后平滑替换至备用调度器,确保高可用性。
  • 第二层,服务器池:群集所提供的应用服务由服务器池承担,例如HTTP、FTP。其中每个节点具有独立的RIP(Real IP,真实IP)地址,只处理调度器分发过来的客户请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
  • 第三层,共享存储:为服务器池中的所有节点提供稳定、一致的稳点存储服务,确保整个群集的统一性。
    关于群集的负载调度技术,可以基于IP、端口、内容等进行分发,其中基于IP的负载调度是效率最高的。基于负载均衡模式中,常见的有地址转换(NAT)、IP隧道(TUN)、直接路由(DR)三种工作模式。NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也较好。

构建LVS负载均衡群集,拥有两种工作模式——LVS-NAT和LVS-DR。本篇主要讲解LVS-NAT模式。

地址转换模式(LVS-NAT)

环境准备

网卡模式为仅主机模式,在centos7中,软件的安装方式多为在线安装,这里我们可以事先将所需的软件安装好之后再更改网卡模式及IP地址。

主机 操作系统 IP地址 主要软件
调度器,网关 CentOS-7-x86_64 192.168.100.1/12.0.0.1 ipvsadm
Apache网站服务器 CentOS-7-x86_64 192.168.100.110 httpd
Apache网站服务器 CentOS-7-x86_64 192.168.100.120 httpd
NFS共享存储服务 CentOS-7-x86_64 192.168.100.130 nfs-utils、rpcbind

LVS负载均衡群集(LVS-NAT)

配置NFS

  • 安装两个软件包nfs-utils、rpcbind,在centos7系统中一般都默认安装有,如果没有使用yum安装即可。
  • 关闭防火墙及selinux防火墙
    systemctl stop firewalld
    setenforce 0
  • 开启服务,编辑访问规则(/etc/exports)
    systemctl start nfs
    systemctl start rpcbind
    /usr/share *(ro,sync)
    /opt/benet 192.168.100.0/24(rw,sync)
    /opt/accp 192.168.100.0/24(rw,sync)

    LVS负载均衡群集(LVS-NAT)
    LVS负载均衡群集(LVS-NAT)
    LVS负载均衡群集(LVS-NAT)
    在创建完成站点目录之后,文件夹的权限也要可读写
    LVS负载均衡群集(LVS-NAT)

  • 发布共享
    exportfs -rv

    LVS负载均衡群集(LVS-NAT)

    配置节点服务器

  • 安装httpd软件,启动服务
    systemctl start httpd
  • 查看共享存储,并挂载到/var/www/html/下
    LVS负载均衡群集(LVS-NAT)
  • 创建测试网页(/var/www/html/)
  • 关闭防火墙及selinux防火墙
    systemctl stop firewalld
    setenforce 0

    节点2服务器的创建方式和节点1大同小异,区别在于挂载的共享存储路径,首页网站内容也要有所区别,便于实验分析。

    配置负载调度器

  • 配置双网卡内网ens33:192.168.100.1 外网ens36:12.0.0.1
    LVS负载均衡群集(LVS-NAT)
  • 开启路由转发功能,在(/etc/sysctl.conf)配置文件中添加开启路由转发的命令
    net.ipv4.ip_forward = 1
    sysctl -p      //加载,立即生效

    LVS负载均衡群集(LVS-NAT)

  • 配置SNAT转发规则
    在配置规则之前,首先清空防火墙规则,然后再添加新的规则
    iptables -t nat -F  //清空nat表规则
    iptables -F         //清空转发表规则
    iptables -t nat -A POSTROUTING -o ens36 -s 192.168.100/24 -j SNAT --to-source 12.0.0.1   //添加新的规则

    由于是在防火墙内添加规则,所以防火墙不需要关闭,但是selinux防火墙仍需关闭

  • 配置负载分配策略
    1. 加载LVS内核模块
      modprobe ip_vs
      cat /proc/net/ip_vs

      LVS负载均衡群集(LVS-NAT)

    2. 安装ipvsadm管理软件,同时启动服务,服务的启动和以往的版本有所不同,在服务启动前需将管理规则进行保存,然后再启动服务
      ipvsadm --save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm

      LVS负载均衡群集(LVS-NAT)
      3.编写一个脚本文件(脚本可在任意目录编写),实现负载策略分配

      ipvsadm -C                                          //清楚缓存
      ipvsadm -A -t 12.0.0.1:80 -s rr                     //添加虚拟服务器
      ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.110:80 -m
      ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.120:80 -m
      ipvsadm                                             //启用

      LVS负载均衡群集(LVS-NAT)

      测试LVS群集

      使用客户机访问http://12.0.0.1/,可以看到由真实服务器提供的网页内容——如果个节点的网页不同,则多次刷新的网页也会不同。
      LVS负载均衡群集(LVS-NAT)
      LVS负载均衡群集(LVS-NAT)