LVS负载均衡------NAT模式 (原理加案例)

前言

一:负载均衡群集原理

1.1:企业群集应用概述

群集的含义

Cluster,群集,集群
由多台主机构成,但对外只表现为一个整体
在互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器力不从心

解决方法

使用价格昂贵的小型机、大型机
使用普通服务器构建服务群集
阿里云中的SLB是典型的负载均衡调度器,ECS是云主机(虚拟机)

SLB调度ECS,多个ECS组成资源池,构成云计算的基础

1.2:企业群集分类

根据群集所针对的目标差异,可分为三种类型
负载均衡群集
高可用群集
高性能运算群集
1.2.1:负载均衡群集(Load Balance Cluster)
以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
LB的负载分配依赖于主节点的分流算法,分流算法即调度
1.2.2:高可用群集(High Availability Cluster)
以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
HA的工作方式包括双工和主从两种模式
双工,两个平级状态的协同工作,随时顶替对方
带有主从模式的,一台主,多台从,称为中心化群集
去中心化机制:没有真正的主,如果有,也是象征意义的,所有节点都干活(Redis的群集就是典型去中心化机制)
1.2.3:高性能运算群集(High Performance Computer Cluster)
以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
高性能运算群集的髙性能依赖于“分布式运算″、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
1.3:负载均衡群集工作模式分析
负载均衡群集是目前企业用得最多的群集类型
群集的负载调度技术有三种工作模式
地址转换
IP隧道
直接路由(DR)

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

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

1.3.3:DR模式
直接路由(Direct Routing)

简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
在这里插入图片描述

1.3.4:三种工作模式的区别
在这里插入图片描述

二:群集架构与虚拟服务器

2.1:负载均衡群集的架构

负载均衡的架构
第一层,负载调度器(Load Balancer或Director)
第二层,服务器池(Server Pool)
第三层,共享存储(Share Storage)
在这里插入图片描述

2.2:LVS虚拟服务器概述

Linux Virtual Server

针对 Linux内核的负载均衡解决方案

1998年5月,由我国的章文嵩博士创建

[root@localhost~]# modprobe ip_vs ‘//确认内核对LVS的支持’
[root@localhost~]# cat /proc/net/ip_vs

LVS的负载调度算法

轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
加权轮询(Weighted Round Robin)
根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重
保证处理能力强的服务器承担更多的访问流量
最少连接(Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
加权最少连接(Weighted Least Connections)
在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重
权重较高的节点将承担更大比例的活动连接负载
2.3:LVS群集创建与管理工具
使用ipvsadm工具
创建虚拟服务器
添加,删除服务器节点
查看群集及节点情况
报错负载分配策略

三. 案例 LVS-NAT 部署

在这里插入图片描述
准备了五台虚拟机 centos7,一台服务器作为LVS(两张网卡),两台web服务器做Apache,一台作为服务器的 NFS 存储;一台测试机(window系统)。
所有主机设置成仅主机模式;
除了LVS服务器外所有的服务器防火墙关闭。
在 LVS服务器上设置两个网卡,一个作为私网地址,一个作为公网地址,并作NAT地址映射;

3.1 搭建环境

3.1.1 在pc2 上配置LVS模块的调用管理

查看LVS 负载均衡模块,linux 系统自带此模块

[root@pc-2 ~]# modprobe ip_vs
[root@pc-2 ~]# cat /proc/net/ip_
ip_mr_cache         ip_tables_names     ip_vs_app           ip_vs_stats
ip_mr_vif           ip_tables_targets   ip_vs_conn          ip_vs_stats_percpu
ip_tables_matches   ip_vs               ip_vs_conn_sync
[root@pc-2 ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@pc-2 ~]#

安装相关软件:

[root@pc-2 ~]# yum install ipvsadm -y   管理LVS模块工具

3.1.2 在PC-5 上 安装NFS软件,设置文件夹共享

setenforce: SELinux is disabled
[root@pc-5 ~]#
[root@pc-5 ~]# yum install rpcbind -y
[root@pc-5 ~]# yum install nfs-utils -y

创建共享文件夹

[root@pc-5 ~]# cd /opt
[root@pc-5 opt]# mkdir dog
[root@pc-5 opt]# mkdir pig
[root@pc-5 opt]# ls
dog  pig  rh
[root@pc-5 opt]# 
[root@pc-5 opt]# chmod 777 dog
[root@pc-5 opt]# chmod 777 pig
[root@pc-5 opt]# ll
总用量 0
drwxrwxrwx  2 root root 6 831 16:33 dog
drwxrwxrwx  2 root root 6 831 16:33 pig
drwxr-xr-x. 2 root root 6 1031 2018 rh

设置共享目录

[root@pc-5 ~]# vi /etc/exports
/opt/dog 192.168.100.0/24(rw,sync)

/opt/pig 192.168.100.0/24(rw,sync)
~                                                              

~ 发布

[root@pc-5 ~]# systemctl start rpcbind
[root@pc-5 ~]# systemctl start nfs
[root@pc-5 ~]# exportfs -rv
exporting 192.168.100.0/24:/opt/pig
exporting 192.168.100.0/24:/opt/dog


3.1.3 在PC3,PC4上安装APACHE ,查看挂载点,并挂载使用

安装httpd

[root@pc-3 ~]# yum install httpd -y
[root@pc-4 ~]# yum install httpd -y
            

查看共享目录

[root@pc-3 ~]# showmount -e 192.168.100.5
Export list for 192.168.100.5:
/opt/pig 192.168.100.0/24
/opt/dog 192.168.100.0/24
设置挂载参数
vim /etc/fstsb

在这里插入图片描述

df-h
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda5                91G  4.1G   87G    5% /
devtmpfs                895M     0  895M    0% /dev
tmpfs                   910M     0  910M    0% /dev/shm
tmpfs                   910M   11M  900M    2% /run
tmpfs                   910M     0  910M    0% /sys/fs/cgroup
/dev/sda2               5.9G   33M  5.9G    1% /home
/dev/sda1              1014M  174M  841M   18% /boot
tmpfs                   182M   12K  182M    1% /run/user/42
tmpfs                   182M     0  182M    0% /run/user/0
192.168.100.5:/opt/dog   91G  4.1G   87G    5% /var/www/html

在这里插入图片描述

 [root@pc-4 ~]# mount -a  //检查挂载
[root@pc-4 ~]# df -h
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda5                91G  4.1G   87G    5% /
devtmpfs                895M     0  895M    0% /dev
tmpfs                   910M     0  910M    0% /dev/shm
tmpfs                   910M   11M  900M    2% /run
tmpfs                   910M     0  910M    0% /sys/fs/cgroup
/dev/sda2               5.9G   33M  5.9G    1% /home
/dev/sda1              1014M  174M  841M   18% /boot
tmpfs                   182M   12K  182M    1% /run/user/42
tmpfs                   182M     0  182M    0% /run/user/0
192.168.100.5:/opt/pig   91G  4.1G   87G    5% /var/www/html

在这里插入图片描述

3.1.4 在PC-2 上创建脚本,写入开启路由,以及配置nat 参数

Vim nat.sh
在这里插入图片描述
加权限执行
在这里插入图片描述

3.1.5 在win7 浏览器访问 12.0.0.1 ,刷新测试,发现一直在轮询

在这里插入图片描述

四. ipvsadm 命令参数简介(扩展)

简介:
ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。在笔者使用的fedora14系统中,已经集成了LVS相关模块,但是ipvsadm命令仍然需要使用yum单独安装。

基本用法:

ipvsadm COMMAND [protocol] service-address
               [scheduling-method] [persistence options]
ipvsadm command [protocol] service-address
               server-address [packet-forwarding-method]
               [weight options]

    第一条命令用于向LVS系统中添加一个用于负载均衡的virtual server(VS);第二条命令用来修改已经存在的VS的配置,service address用来指定涉及的虚拟服务即虚拟地址,server-address指定涉及的真实地址。

命令:
    -A, --add-service:为ipvs虚拟服务器添加一个虚拟服务,即添加一个需要被负载均衡的虚拟地址。虚拟地址需要是ip地址,端口号,协议的形式。
    -E, --edit-service:修改一个虚拟服务。
    -D, --delete-service:删除一个虚拟服务。
    -C, --clear:清除所有虚拟服务。
    -R, --restore:从标准输入获取ipvsadm命令。一般结合下边的-S使用。
    -S, --save:从标准输出输出虚拟服务器的规则。可以将虚拟服务器的规则保存,在以后通过-R直接读入,以实现自动化配置。
    -a, --add-server:为虚拟服务添加一个real server(RS)
    -e, --edit-server:修改RS
    -d, --delete-server:删除
    -L, -l, --list:列出虚拟服务表中的所有虚拟服务。可以指定地址。添加-c显示连接表。
    -Z, --zero:将所有数据相关的记录清零。这些记录一般用于调度策略。
    --set tcp tcpfin udp:修改协议的超时时间。
    --start-daemon state:设置虚拟服务器的备服务器,用来实现主备服务器冗余。(注:该功能只支持ipv4)
    --stop-daemon:停止备服务器。
    -h, --help:帮助。

参数:
    以下参数可以接在上边的命令后边。
    -t, --tcp-service service-address:指定虚拟服务为tcp服务。service-address要是host[:port]的形式。端口是0表示任意端口。如果需要将端口设置为0,还需要加上-p选项(持久连接)。
    -u, --udp-service service-address:使用udp服务,其他同上。
    -f, --fwmark-service integer:用firewall mark取代虚拟地址来指定要被负载均衡的数据包,可以通过这个命令实现把不同地址、端口的虚拟地址整合成一个虚拟服务,可以让虚拟服务器同时截获处理去往多个不同地址的数据包。fwmark可以通过iptables命令指定。如果用在ipv6需要加上-6-s, --scheduler scheduling-method:指定调度算法。调度算法可以指定以下8种:rr(轮询),wrr(权重),lc(最后连接),wlc(权重),lblc(本地最后连接),lblcr(带复制的本地最后连接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延迟),nq(永不排队)
    -p, --persistent [timeout]:设置持久连接,这个模式可以使来自客户的多个请求被送到同一个真实服务器,通常用于ftp或者ssl中。
    -M, --netmask netmask:指定客户地址的子网掩码。用于将同属一个子网的客户的请求转发到相同服务器。
    -r, --real-server server-address:为虚拟服务指定数据可以转发到的真实服务器的地址。可以添加端口号。如果没有指定端口号,则等效于使用虚拟地址的端口号。
    [packet-forwarding-method]:此选项指定某个真实服务器所使用的数据转发模式。需要对每个真实服务器分别指定模式。
        -g, --gatewaying:使用网关(即直接路由),此模式是默认模式。
        -i, --ipip:使用ipip隧道模式。
        -m, --masquerading:使用NAT模式。
    -w, --weight weight:设置权重。权重是0~65535的整数。如果将某个真实服务器的权重设置为0,那么它不会收到新的连接,但是已有连接还会继续维持(这点和直接把某个真实服务器删除时不同的)。
    -x, --u-threshold uthreshold:设置一个服务器可以维持的连接上限。0~65535。设置为0表示没有上限。
    -y, --l-threshold lthreshold:设置一个服务器的连接下限。当服务器的连接数低于此值的时候服务器才可以重新接收连接。如果此值未设置,则当服务器的连接数连续三次低于uthreshold时服务器才可以接收到新的连接。(PS:笔者以为此设定可能是为了防止服务器在能否接收连接这两个状态上频繁变换)
    --mcast-interface interface:指定使用备服务器时候的广播接口。
    --syncid syncid:指定syncid,同样用于主备服务器的同步。
    以下选项用于list命令:
    -c, --connection:列出当前的IPVS连接。
    --timeout:列出超时
    --daemon:
    --stats:状态信息
    --rate:传输速率
    --thresholds:列出阈值
    --persistent-conn:坚持连接
    --sor:把列表排序。
    --nosort:不排序
    -n, --numeric:不对ip地址进行dns查询
    --exact:单位
    -6:如果fwmark用的是ipv6地址需要指定此选项。    
    

猜你喜欢

转载自blog.csdn.net/BIGmustang/article/details/108327306