Linux, WEB, 应用部署

LVS负载均衡群集的搭建

一、集群的概念

Cluster,又称为集群、群集,由多台主机构成,但对外只表现为一个整体。

1、群集的类型

  • ​ 负载均衡(Load Balancer)群集

​ 简称为LB,以提高响应能力,尽可能处理更多的访问请求,减少延迟为目标。获得高并发,高负载的整体性能。

  • ​ 高可用(High Available)群集

简称为HA,尽可能的减少中断时间为目的,保证服务的连续性,达到高可用性的效果。故障切换,双机热备,多机热备都是高可用性群集

  • ​ 高性能运算(High Performance Computer)群集

2、负载均衡的工作模式

  • 地址转换(NAT)模式 调度器和web服务器们于同一个局域网,调度器即NAT服务器,有两块网卡,作为内网网关,转发用户请求和服务器响应。真正的服务器被NAT隐藏起来,安全性较高。
  • IP隧道(TUN)模式 调度器和web服务器分布在互联网上不同的位置,调度器和服务器通过IP隧道连接。客户端请求由调度器转发给服务器,服务器响应直接转发给客户端(不再经调度器)。为了IP地址一致,也需要服务器以调度器的IP地址来响应。
  • 直接路由(DR)模式 调度器和web服务器们于同一个局域网。客户端将请求发给调度器,调度器仅修改请求包的目标MAC地址(不修改IP),让后将请求发给web服务器,web服务器将响应直接发给客户机。要求服务器有多个IP,除了自己的局域网IP外,还要有与调度器共享 的集群IP。

以上工作模式中,安全性依次降低,但性能依次升高。

3、LVS虚拟服务器

概念

​ Linux Virtual Server,Linux虚拟服务器,是一个虚拟的服务器集群系统,是针对linux内核的负载均衡解决方案。

使用方法

​ modprobe ip_vs

​ 使用LVS功能需要加载ip_vs模块。默认情况下,linux自动加载该模块。ip_vs是LVS的核心模块,而ipvsadm是用户空间的ip_vs管理工具。

LVS负载调度算法

​ LVS负载调度算法即转发用户请求的方法。

  • ​ 轮询(Round Robin)
  • ​ 加权轮询(Weighted Round Robin)
  • ​ 最少连接(Least Connections)
  • ​ 加权最少连接(Weighted Least Connections)

4、配置LVS

1) 安装工具ipvsadm

安装,在调度器上安装用户空间工具。

​ yum -y install ipvsadm

2) 创建虚拟服务器

(1)增加虚拟服务器

​ ipvsadm -A -t 192.168.186.88:80 -s rr

创建一台虚拟服务器,-t后跟群集IP地址,-s(schedule)指定对于该服务器调度算法,rr(Round Robin)为论询调度。   ​-t,tcp,可以是-u 即udp,虚拟服务器支持的协议。
(2)将真实服务器加入到群集

​ ipvsadm -a -t 192.168.186.88:80 -r 192.168.71.128:80 -m -w 1

​ ipvsadm -a -t 192.168.186.88:80 -r 192.168.71.129:80 -m -w 1

​ -r (real)跟真实服务器IP地址,-m(masquerade)表示采用NAT模式(DR模式-g),-w 1 表示给的权重。

调度类型:

​ rr = 轮询 ​ wrr = 加权轮询 ​ lc = 最少链接 ​ wlc = 加权最少链接

集群访问模式:

​ -m=NAT模式 -g = DR模式 -i = TUN模式 -w = 设置权重(权重为0表示暂停节点)

(3)查看配置

​ ipvsadm -ln

  注:-l列出vs配置列表,n以数字方式 显示IP和端口号。
(4)删除群集中的真实服务器

​ ipvsadm -d -r 192.168.168.88:80 -t 192.168.71.129:80

(5)保存配置

​ ipvsadm-save >/etc/sysconfig/ipvsadm #将内存中的规则存盘

(6)删除群集

​ ipvsadm -D -t 192.168.168.88:80

(7)恢复配置

​ ipvsadm-restore</etc/sysconfig/ipvsadm

二、案例1—LVS—NAT群集配置

1、应用要求

​ LVS调度器作为Web服务器池的网关 ​ 使用轮询(rr)调度算法

2、环境说明

​ 1)、调度器两块网卡,外网网卡采用桥接模式与互联网用户主机相连接。互联网用户主机采用真机模拟。

​ 2)、调度器与内网交换机相连接内网网卡采用仅主机模式,与两台网卡也采用仅主机模式的web服务器相连接。

3、LVS—NAT群集配置

服务器名称IP备注
LB192.168.126.131
192.168.75.131
内外网双网卡
WEB1192.168.75.128
WEB2192.168.75.129
Store192.168.75.130
ip配置表

1)LVS调度器的配置

​ (1)配置两块网卡,并为内、外网网卡配置IP地址,保证其与内网两台服务器及互联网客户机的连通性。

​ (2)打开数据包转发功能

echo “net.ipv4.ip_forward = 1” >>/etc/sysctl.d/99-sysctl.conf

sysctl -p

(3)配置SNAT策略

​ iptables -t nat -A POSTROUTING -s 192.168.75.0/24 -j SNAT –to-source 192.168.126.131

​ (4)配置LVS-NAT策略

​ a.创建lvs虚拟服务器群集:

​ ipvsadm -A -t 192.168.126.131:80 -s rr #群集IP:192.168.126.131(外网口IP),调度类型:rr

​ b. 向服务器群集中添加真实服务器:

​ ipvsadm -a -t 192.168.126.131:80 -r 192.168.75.128:80 -m -w 1

​ ipvsadm -a -t 192.168.126.131:80 -r 192.168.75.129:80 -m -w 1

​ c.验证配置:

​ ipvsadm -ln

2)、Web服务器的配置

​ (1)配置IP和默认网关:route add default gw 192.168.75.131(默认网关指向调度器的内网IP:192.168.75.131)。

​ (2)安装httpd,并配置站点。为两台服务器创建首页,192.168.75.128服务器首页内容为192.168.75.128,192.168.75.129服务器首页内容为192.168.75.129。

3)、结果验证

​ 在宿主机上访问http://192.168.126.131,并验证群集分配情况。注意访问中及时清除浏览器缓存。

​ 访问结果说明:用户访问192.168.126.131时,网页内容交替显示192.168.75.128和192.168.75.129。

三、案例2—构建LVS—DR集群

服务器名称IP备注
LB192.168.75.131
VIP:192.168.75.88
所有服务器在同一个网络,无需多个网卡
WEB1192.168.75.128
VIP:192.168.75.88

WEB2192.168.75.129
VIP:192.168.75.88

Store192.168.75.130

ip配置表

1、调度器配置

1)配置IP地址:192.168.75.131。

2)创建、配置虚拟接口。

​ cd /etc/sysconfig/network-scripts/

​ cp ifcfg-ens33 ifcfg-ens33:0 #复制产生逻辑接口ens33:0。

​ vim ifcfg-ens33:0

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.75.88
NETMASK=255.255.255.0
DEVICE=ens33:0
ONBOOT=yes

​ ifup ens33:0 #激活逻辑接口配置

3)调整/proc内核参数,关闭重定向响应

​ vi /etc/sysctl.conf #linux可以在不关机不重启的情况下调整内核参数。

​ 文件最后添加以下内容:

    net.ipv4.conf.all.send_redirects=0      #关闭ICMP重定向
    net.ipv4.conf.default.send_redirects=0
    net.ipv4.conf.ens33.send_redirects=0

​ sysctl -p #配置立即生效。

4)配置LVS-DR群集策略

​ a.清除原有设置:

    查看原有设置:
    ipvsadm -ln
    清除原有设置:
    ipvsadm -D -t IP:80

​ b.创建新的群集:

    ipvsadm -A -t 192.168.75.88:80 -s rr        #创建虚拟服务器或群集
    ipvsadm -a -t 192.168.75.88:80 -r 192.168.75.128:80 -g -w  1 
    ipvsadm -a -t 192.168.75.88:80 -r 192.168.75.129:80 -g -w  1
    #将真实服务器加入到集群中,-g表示采用DR直接路由模式下。      

2、web服务器配置

1)配置外网接口ens32、群集接口lo:0(web服务器上的配置)

​ ens32:192.168.75.128

​ cp /etc/sysconfig/network-scripts/ifcfg-lo ifcfg-lo:0

​ vim ifcfg-lo:0

        DEVICE=lo:0
        IPADDR=192.168.75.88
        NETMASK=255.255.255.255      //重点,此处子网掩码为全255
        ONBOOT=yes

​ ifup lo:0

2)调整/proc内核参数,关闭ARP响应

​ vi /etc/sysctl.conf

​ 内容底部添加以下内容:

    net.ipv4.conf.all.arp_ignore=1 #只回答目标IP地址是来访网络接口本地地址的ARP查询请求
    net.ipv4.conf.all.arp_announce=2 #忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址。
    net.ipv4.conf.default.arp_ignore=1 #忽略arp
    net.ipv4.conf.default.arp_announce=2
    net.ipv4.conf.lo.arp_ignore=1 #忽略arp
    net.ipv4.conf.lo.arp_announce=2

​ sysctl -p

3)添加到群集IP地址的本地路由记录

​ vi /etc/rc.local #此文件启动时会自动执行

​ route add -host 192.168.75.88 dev lo:0 #添加一条到群集IP主机地址的路由,dev表示经过的接口。

4)配置并启用httpd服务

​ systemctl start httpd

​ echo “web1”>/var/www/html/index.html

5) web2配置参照web1:​

3、测试

​ 在宿主机上使用curl 测试

C:\Users\ASUS>curl 192.168.75.88
this is a share file 9999999999999

4、注意事项

1、DR模式LB不需要开启IP转发,所有服务池服务器与LB同一个网络。LB无需双网卡。

2、LB把VIP设置为第二地址即可,不需要魔改其他设置。

3、LB中开启ipvsadm后,无法通过netstat 查看系统监听转发的80端口。

4、DR模式中,LB无法ping通服务池的服务器,但服务池服务器可以ping通LB。

5、服务池所有服务器必须魔改IP。添加VIP并把子网掩码设置为255.255.255.255

Leave a Reply