负载均衡集群

集群是什么

当系统遇到性能瓶颈时,通常可以采用Scale Up或Scale Out的方式对系统进行扩展。

  • Scale Up:向上扩展,是指用性能更好的设备替代旧设备
  • Scale Out:向外扩展,是指将多台主机组织成一个集群对外提供服务

集群类型

  1. LB Cluster 负载均衡集群
    LB Cluster由Director(调度器)+Real Servers(后端服务器)组成。Director将客户端请求按照某种调度算法分配给Real Servers进行响应。LB集群可以把压力平均分摊,但Director容易形成系统的SPOF(单点故障),需要对Director作高可用。
  2. HA Cluster 高可用集群
    HA Cluster由Active Server(活动服务器)和Standby Server(备用服务器)组成。同一时间一般只有一台服务器对外提供服务,通常的实现方式有keepalived和AIS。
  3. HP Cluster 高性能集群
  4. DS Cluster 分布式系统集群
    可以分为分布式存储系统,分布式计算系统,Hadoop就是典型的分布式系统。

LB Cluster的实现方式

LB集群的主要矛盾就是解决如何在Real Servers前添加一台主机作为调度器,从而将客户端请求按照某种算法调度给后端主机。按照调度器通过硬件实现还是软件实现。可以分为:
硬件实现调度器

  • F5 Big-IP
  • Citrix NetScaler
  • A10 A10
  • Radware
  • Array

软件实现调度器

  • LVS
  • HAProxy
  • Nginx
  • Apache Traffic Server
  • Perlbal

按照调度器工作在OSI协议的哪一层,可以分为:
传输层(内核空间,四层调度)

  • LVS
  • HAProxy(mode tcp)
  • Nginx

应用层(用户空间,七层调度)

  • HAProxy(mode http)
  • Nginx
  • ATS
  • Perbal

LVS基本概念

LVS是章文嵩博士于1998年创建的一款开源负载均衡软件。它的特点是工作在内核空间中,能够根据请求报文的目标IP和目标PORT将请求调度转发至后端服务器集群中的某节点。

LVS中的常用术语:

  1. 调度器,负载均衡器,Director,Virtual Server,VS
  2. 后端服务器,真实服务器,Real Server,Backend Server,RS
  3. 调度器一般配两个IP地址,VIP:向外提供服务的IP地址,DIP:与后端RS通信的IP地址
  4. RIP:RS的IP,CIP:客户端的IP

LVS由ipvsadm和ipvs组成:

  • ipvsadm:用户空间命令行工具,用于在Director上定义集群服务和添加集群上的Real Servers
  • ipvs:工作于内核上netfilter中INPUT钩子上的程序代码

要想将某台主机配置为LVS的Director,首选确保当前内核支持ipvs并安装ipvsadm。另外,由于Director要调度转发所有客户端的请求,负载压力较大,生产环境中Director不要使用虚拟机。

]# grep -i "IPVS" /boot/config-内核版本.x86_64
]# yum install -y ipvsadm

ipvsadm命令的具体用法可以参考man文档(太多了,我也记不住),下面就给出几个最常用的ipvsadm命令用法,基本上完全够用了。
在node1(25.15.16.122)上定义一个80端口调度规则,所有发往node1 80端口的请求,都会被调度给后端node2,node3节点的80端口Nginx服务:

node1 ]# ipvsadm -A -t node1:80 -s wrr
node1 ]# ipvsadm -a -t node1:80 -r node2 -m -w 3
node1 ]# ipvsadm -a -t node1:80 -r node3 -m -w 5
-A:规定发往本机哪个IP:PORT的报文是需要被调度的
-a:为某个调度规则添加Real Server
-t:tcp协议请求
-s:定义调度规则
-m:表示采用lvs-nat工作模式,默认为lvs-dr工作模式
-w:调度规则是wrr(带权重的轮询)用-w 定义Real Server的权重

查看当前Director上的所有调度规则:

node1 ]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
TCP  25.15.16.122:80 wrr
  -> 25.15.16.132:80              Masq    3      0          0         
  -> 25.15.16.142:80              Masq    4      0          0         

清空当前所有规则:

node1 ]# ipvsadm -C

设置服务器重启后自动恢复ipvsadm规则:

node1 ]# ipvsadm-save > /etc/sysconfig/ipvsadm
node1 ]# systemctl enable ipvsadm.service

LVS工作模式

LVS的常用工作模式有四种,分别是:

  • lvs-nat
  • lvs-dr(默认模式)
  • lvs-tun
  • lvs-fullnet

lvs-nat工作模式

工作方式:
多目标的DNAT:通过将请求报文的目标地址和目标端口修改为某RS的IP和PORT来实现报文转发;
特点:

  1. DIP和RIP必须在同一网段,且应该使用私网地址。RS的网关指向DIP,从而保证响应报文会经由Director响应给客户端;
  2. 请求和响应报文都经由director转发;高负载的场景中,Director可能会成为系统瓶颈;
  3. 支持端口映射;
  4. Director必须为Linux OS,RS可以是任意OS;

lvs-dr工作模式

工作方式:
通过为请求报文重新封装一个MAC首部进行报文转发;新Mac首部的源MAC是DIP所在网卡的MAC,目标MAC为某RS所在接口的MAC;整个过程源报文的IP首部不会发生变化(源IP为CIP,目标IP始终为VIP);
特点:

  1. RS的lo网卡配置一个IP地址(地址为VIP)。
  2. 确保路由器只会把目标IP为VIP的请求报文发往Director,即会忽略RS上的VIP;实现方案如下
  • 路由器静态绑定Director的VIP和MAC地址
  • 禁止RS响应VIP的ARP请求;
    (a) arptables;
    (b) 修改各RS的内核参数,并把VIP配置在特定的接口上实现禁止其响应;
  1. RS的RIP跟Director的DIP必须在同一物理网络中;RS的网关不能指向DIP
  2. RS的RIP可以使用私有地址,也可以使用公网地址;
  3. 请求报文必须由Director调度,但响应报文必须不能经由Director,RS直接用VIP作为源IP发送响应报文;
  4. 不支持端口映射;
  5. OS类型无限制

lvs-tun工作模式

工作模式:
转发方式:不修改请求报文的IP首部(源IP仍为CIP,目标IP仍为VIP),而是在原有的IP首部之外再封装一个IP首部(源IP为DIP,目标IP为RIP);
特点:

  1. RIP,DIP,VIP必须都是公网地址;
  2. RS的网关不能也不可能指向DIP;
  3. 请求报文经由Director调度,但响应报文将直接发给CIP;
  4. 不支持端口映射;
  5. RS的OS必须支持IP隧道功能;

lvs-fullnet工作模式

工作模式:
通过同时修改请求报文的源IP地址(cip-->dip)和目标IP地址(vip --> rip)实现转发;
特点:

  1. VIP是公网地址;RIP和DIP是私网地址,但可以不在同一网段,此时可通过路由器来通信;
  2. RS收到的请求报文的源IP为DIP,因此其响应报文将发送给DIP;
  3. 请求报文和响应报文都必须经由director;
  4. 支持端口映射;
  5. OS无限制;

LVS配置详解

由于LVS是工作在内核空间的程序,所以把一台服务器配置为LVS Director的步骤可以分为以下两步:1)根据lvs工种模式的要求,对网络,内核参数等做好基本环境配置。2)用ipvsadm命令在Director节点上定义调度规则并添加RS。

lvs-dr模式配置详解

Director:node1 VIP 192.168.1.177 DIP 25.15.16.122
RS1:node2 VIP192.168.1.177 RIP 25.15.16.132
RS2:node3 VIP192.168.1.177 RIP 25.15.16.142
注意:lvs-dr模式中Director,RS都只有1块物理网卡,但配了一个虚拟地址。Director物理地址配DIP,虚拟地址配VIP。RS物理地址配RIP,虚拟地址配VIP。

  1. 准备环境
配置虚拟网卡
node1 ]# ifconfig ens32:0 192.168.1.177 netmask 255.255.255.255 broadcast 192.168.1.177 up
配置虚拟网卡
node2 ]# ifconfig lo:0 192.168.1.177 netmask 255.255.255.255 broadcast 192.168.1.177 up
node2 ]# route add -host 192.168.1.177 dev lo:0
关闭arp接收响应
node2 ]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
node2 ]# echo 1 > /proc/sys/net/ipv4/conf/ens32/arp_ignore
node2 ]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
node2 ]# echo 2 > /proc/sys/net/ipv4/conf/ens32/arp_announce
配置虚拟网卡
node3 ]# ifconfig lo:0 192.168.1.177 netmask 255.255.255.255 broadcast 192.168.1.177 up
node3 ]# route add -host 192.168.1.177 dev lo:0
关闭aro接收相应
node3 ]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
node3 ]# echo 1 > /proc/sys/net/ipv4/conf/ens32/arp_ignore
node3 ]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
node3 ]# echo 2 > /proc/sys/net/ipv4/conf/ens32/arp_announce
注:ens32改成自己的物理网卡名称
  1. ipvsadm规则
node1 ]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.177:80 rr
  -> 25.15.16.132:80              Route   1      0          0         
  -> 25.15.16.142:80              Route   1      0          0 

lvs-nat模式配置详解

Director:node1 VIP 192.168.1.177 DIP 25.15.16.122
RS :node2 RIP 25.15.16.132
RS :node3 RIP 25.15.16.142
注意:lvs-nat模式中Director有2块物理网卡,配置一个虚拟地址。RS有1块物理网卡。

  1. 准备环境
开启网卡间核心转发功能
node1 ]# sysctl -w net.ipv4.ip_forward = 1
把node2、node3的网关配置成DIP。
  1. ipvsadm规则
    同lvs-dr的规则即可。

lvs-fwn模式配置详解

lvs-fwn是LVS集群的另一种实现方式。它的工作模式如下:在客户端报文到达Director时,Director的PREROUTING链上用iptables的mangle功能给定义成集群服务的报文,如tcp80端口的报文打上标记(MARK),然后当报文流进Director的INPUT链时,工作在INPUT链上的ipvs会识别出这些报文并调度给后端RS。

  1. 准备环境
    使用lvs-nat模式的环境配置
  2. ipvsadm规则
node1 ]# iptables  -t mangle -A PREROUTING -d 192.168.1.177 -p tcp --dport  80  -j  MARK --set-mark 1 
node1 ]# ipvsadm -A  -f 1 -s  rr
node1 ]# ipvsadm -a  -f 1 -r  25.15.16.132 -m 
node1 ]# ipvsadm -a  -f 1 -r  25.15.16.142 -m 

 



 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值