LVS负载均衡

一 理解负载均衡群集的原理

1.1 企业群集应用概述群集的含义

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

问题
●互联网应用中,随着站点对硬件性能、响应速度、服务稳
●定性、数据可靠性等要求越来越高,单台服务器力不从心

群集的含义
●Cluster,集群、群集
●由多台主机构成,但对外只表现为一个整体

解决方法
●使用价格昂贵的小型机、大型机
●使用普通服务器构建服务群集

1.2 企业群集分类

根据群集所针对的目标差异,可分为三种类型
●负载均衡群集
●高可用群集
●高性能运算群集

负载均衡群集(Load Balance Cluster)
●提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
●LB的负载分配依赖于主节点的分流算法

高可用群集(High Availability Cluster)
●提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果
●HA的工作方式包括双工和主从两种模式

高性能运算群集(High Performance Computer Cluster)
●提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标获得相当于大型、超级计算机的高性能运算(HPC)能力
●高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

1.3 负载均衡群集架构

负载均衡的结构
●第一层,负载调度器(Load Balancer或Director)
●第二层,服务器池(Server Pool)
●第三层,共享存储(Share Storage)

负载均衡的结构
在这里插入图片描述

1.4 负载均衡群集工作模式分析

负载均衡群集是目前企业用得最多的群集类型
群集的负载调度技术有三种工作模式
地址转换
IP隧道
直接路由

1.5 NAT模式

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

1.6 直接路由(Direct Routing)

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

1.7 关于LVS虚拟服务器

Linux Virtual Server
针对Linux内核的负载均衡解决方案
1998年5月,由我国的章文嵩博士创建
官方网站:http://www.linuxvirtualserver.org/

1.8 LVS的负载调度算法

1、轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
2.加权轮询(Weighted Round Robin)
根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重
3、最少连接(Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
4、加权最少连接(Weighted Least Connections)
在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重
权重较高的节点将承担更大比例的活动连接负载

1.9 NFS共享存储服务

1.Network File System,网络文件系统
依赖于RPC(远端过程调用)
需安装nfs-utils.rpcbind软件包
系统服务:nfs、rpcbind
共享配置文件:/etc/exports

2、使用NFS发布共享资源
安装nfs-utils.rpcbind软件包
设置共享目录
启动NFS服务程序
查看本机发布的NFS共享目录

3、在客户机中访问NFS共享资源
安装rpcbind软件包,并启动rpcbind服务
手动挂载NFS共享目录
fstab自动挂载设置

二 案列:LVS-NAT负载均衡集群搭建

2.1 部署配置

一台调度器:配置双网卡VM1: 192168.100.23桥接网卡:20.0.0.23
二台WEB服务器集群池:192.168.100:24、192.168.100:25 这边的网关必须指向192.168.100.23这个地址
一台NFS共享服务器:192.168.100:21

2.2 调度器上设置

#虚拟机添加网卡##
[root@localhost network-scripts]# nmcli connection
NAME              UUID                        TYPE            DEVICE
ens33             49511b41-e51a-41f0-a43e-d13274d3ce10 ethernet       ens33
virbr0             1816178ee-807e-3499-9d19-20507cbb8ad3 ethernet    ens36

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost ~]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost ~]#  vi ifcfg-ens36
UUID 改一下
ens33换成36
只需要下面两个就可以了
IPADDR=192.168.100.23
NETMASK=255.255.255.0

##查看一下三台的网关

yum -y install net-tools      最小安装需要

####192.168.100.23的主机:
route -n
Kernel IP routing table
Destination         Gateway         Genmask         Flags   Metric  Ref    Use Iface
20.0.0.0               0.0.0.0          255.255.255.0   U          102     0        0 ens33
192.168.100.0      0.0.0.0         255.255.255.0   U           101    0        0 ens36

###192.168.100.24的主机:
[root@localhost ~]# route -n
Kernel IP routing table
Destination            Gateway                Genmask             Flags   Metric   Ref     Use Iface
0.0.0.0                  192.168.100.23        0.0.0.0                 UG      100       0        0 ens33
192.168.100.0       0.0.0.0                     255.255.255.0     U         100       0        0 ens33
192.168.122.0       0.0.0.0                     255.255.255.0     U          0          0        0 virbr0

###192.168.100.25的主机:
[root@localhost ~]# route -n
Kernel IP routing table
Destination               Gateway                 Genmask            Flags   Metric   Ref    Use Iface
0.0.0.0                    192.168.100.23         0.0.0.0                UG      100        0        0 ens33
192.168.100.0         0.0.0.0                  255.255.255.0        U         100       0        0 ens33

###192.168.100.25的主机:
[root@localhost ~]# route -n
Kernel IP routing table
Destination           Gateway               Genmask         Flags    Metric   Ref    Use Iface
0.0.0.0                  192.168.100.23     0.0.0.0              UG      100        0        0 ens33
192.168.100.0      0.0.0.0                   255.255.255.0   U        100        0        0 ens33
这个网关可以不用配192.168.100.23的,配置你VM1网卡的就行

2.3 下面开始实验配置

###LVS主机192.168.100.23的配置
[root@localhost~ ]# yum  -y install ipvsadm

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
centos                                              | 3.6 kB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package ipvsadm.x86_64 0:1.27-7.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================
 Package         Arch           Version               Repository      Size
===========================================================================
Installing:
 ipvsadm         x86_64         1.27-7.el7            centos          45 k

Transaction Summary
===========================================================================
Install  1 Package

Total download size: 45 k
Installed size: 75 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : ipvsadm-1.27-7.el7.x86_64                               1/1 
  Verifying  : ipvsadm-1.27-7.el7.x86_64                               1/1 

Installed:
  ipvsadm.x86_64 0:1.27-7.el7                                              

Complete!

#########

[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# 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

1)创建虚拟服务器(注意:NAT模式要两块网卡,调度器的地址是外网口地址)
群集的VIP地址为192.168.100.23,针对TCP80端口提供负载分流服务,使用的轮询调度算法。对于负载均衡调度器来说,VIP必须是本机实际已启用的IP地址
[root@localhost ~]# ipvsadm -A -t 20.0.0.23:80 -s rr

2)添加服务器节点
[root@localhost ~]# ipvsadm -a -t 20.0.0.23:80 -r 192.168.100.24:80 -m
[root@localhost ~]# ipvsadm -a -t 20.0.0.23:80 -r 192.168.100.25:80 -m 


3)保存LVS策略并查看
[root@localhost ~]# ipvsadm-save > /opt/ipvsadm 
[root@localhost ~]# cat /opt/ipvsadm 
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.100.24:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.100.25:http -m -w 1


4)开启调度服务器路由转发功能
[root@localhost ~]# vi /etc/sysctl.conf 
net.ipv4.ip_forward = 1

##查看是否开启
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1


########存储服务器192.168.100.21 配置########

rpm -q nfs-utils  ###如果没装,yum -y install nfs-utils
rpm -q rpcbind  ###如果没装,yum  -y install rpcbind

[root@localhost~ ]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind

##创建挂载点内容
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "你好,我是51" > /opt/51xit/index.html
[root@localhost ~]# echo "你好,我是52" > /opt/51xit/index.html

##宣告挂载什么内容
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)

##查看一下
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24


[root@localhost~]# systemctl restart nfs
[root@localhost~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind

2.3 NAT轮询主机1:192.168.100.24的配置

[root@localhost~]# yum -y install nfs-utils rpcbind      ####必须要装nfs-untils否则mount不识别nfs格式,系统最小化安装带要装
[root@localhost~]# showmount -e 192.168.100.21      ####如果还没发布,请到存储服务器发布下. exportfs -rv
Export list for 192.168.100.21:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.21:/opt/51xit /var/www/html/

[root@localhost~]# vi /etc/fstab
192.168.100.21:/opt/51xit/   /var/www/html/  nfsdefaults,_netdev 0 0                ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl start httpd
[root@localhost~] systemctl enable httpd

###登录192.168.100.24测试网站是否正常####

2.4 NAT轮询主机2:192.168.100.25的配置

[root@localhost~]# yum -y install nfs-utils rpcbind      ####必须要装nfs-untils否则mount不识别nfs格式,系统最小化安装带要装
[root@localhost~]# showmount -e 192.168.100.21      ####如果还没发布,请到存储服务器发布下. exportfs -rv
Export list for 192.168.100.21:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.21:/opt/52xit /var/www/html/

[root@localhost~]# vi /etc/fstab
192.168.100.21:/opt/52xit/   /var/www/html/  nfsdefaults,_netdev 0 0                ###开机自动挂载,注意格式对齐

[root@localhost ~]# systemctl start httpd
[root@localhost~]#  systemctl enable httpd

###登录192.168.100.24测试网站是否正常####

三 常用命令的解释如下:

LVS的负载调度算法有四种最常用的:轮询算法(rr)、加权轮询(wrr)、最少轮询(Ic)、加权最少轮询(wlc)

1)创建虚拟服务器(注意: NAT模式要两块网卡,调度器的地址是外网口地址)
群集的VIP地址为192.168.100.23,针对TCP 80端口提供负载分流服务,使用的轮询调度算法。对于负载均衡调度器来说,VIP必须是本机实际已启用的IP地址
ipvsadm -A -t 192.168.100.23:80 -s rr

//选项"-A"表示添加虚拟服务器,"-t"用来指定VIP地址及TCP端口,"-s"用来指定负载调度算法——rr、wrr、lc、wlc

2添加服务器节点
ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.33:80 -m
ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.44:80 -m

/选项"-a"表示添加真实服务器,"-“用来指定VIP地址及TCP端口,“以"用来指定RIP地址及TCP端口,“m"表示使用NAT群集模式(“-g"是DR模式,”-“是TUN模式)
{-m参数后面还可以跟-w的参数,这里没有做的”-w“用来设置权重(权重为0时表示暂停节点)}

4)删除服务器节点
ipvsadm -d -r 192.168.90.22:80 -t 192.168.80.88:80
//需要从服务器池中删除某一个节点时,使用选项"-d”。执行删除操作必须指定目标对象,包括节点地址、虚拟IP地址。如上所示的操作将会删除LVS群集192.168.80.8中的节点
192.168.90.22

若需要删除整个虚拟服务器时,使用选项-D并指定虚拟IP地址即可,无需要指定节点。例如:“ipvsadm -D-t 192.168.80.11:80",则删除此虚拟服务器

ipvsadm -L 查看节点状态,加个”"-n“将以数字形式显示地址、端口信息
ipvsadm-save >/etc/sysconfig/ipvsadm//保存策略

使用导出/导入工具ipvsadm-save/ipvsadm-restore可以保存、恢复LVS策略,方法类似于iptables的规则的导出、导入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值