LVS负载均衡群集

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

宗旨:
使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
很好的可伸缩性(Scalability)
很好的可靠性(Reliability)
很好的可管理性(Manageability)。


优点:
1、开源,免费
2、在网上能找到一些相关技术资源
3、具有软件负载均衡的一些优点
缺点:
1、最核心的就是没有可靠的支持服务,没有人对其结果负责;
2、功能比较简单,支持复杂应用的负载均衡能力较差,如算法较少等;
3、开启隧道方式需重编译内核;
4、配置复杂;
5、主要应用于LINUX,目前没有专门用于WINDOWS的版本,不过可以通过配置,使windows成为LVS集群中的real server(win2003、win2008中)。

 

------------------------------------------------------------------------------

企业群集应用概述

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


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

■解决方法
              ●使用价格昂贵的小型机、大型机

               ●使用普通服务器构建服务群集

 

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


■负载均衡群集( Load Balance Cluster )
●以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载( LB )的整体性能

●LB的负载分配依赖于主节点的调度算法

 

 

■高可用群集( High Availability Cluster )
●以提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的
连续性,达到高可用( HA)的容错效果●HA的工作方式包括双工和主从两种模式
■高性能运算群集( High Performance Computer Cluster )
●以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算( HPC )能力
●高性能运算群集的高性能依赖于”分布式运算”、、“并行计算”,通过
专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

 

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

NAT模式

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

 

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

 

DR模式
■直接路由(Direct Routing)
●简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地 ,而是与调度器
位于同一个物理网络
●负载调度器与各节点服务器通过本地
网络连接,不需要建立专用的IP隧道

 

 

负载均衡群集架构
■负载均衡的结构
●第一层,负载调度器( Load Balancer或Director )

●第二层,服务器池( Server Pool )

●第三层,共享存储( Share Storage )

 

 

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

 


■LVS的负载调度算法
●轮询( Round Robin )
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器) ,均等地对待每一台服务器 ,而不管服务器实际的连接数和系统负载
●加权轮询( Weighted Round Robin )
根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重保证处理能力强的服务器承担更多的访问流量


●最少连接( Least Connections )
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
●加权最少连接( Weighted Least Connections )
在服务器节,点的性能差异较大的情况下,可以为真实服务器自动调
整权重
权重较高的节点将承担更大比例的活动连接负载

---------------------------------------------------------------------------------

                                             安装LVS

 


LVS現在已成为Linux内核的一部分,默认編降的ip_ vs模抉,必要时能够自动凋用。以下操作可以手动加載ip_ vs模抉,并査看当前系統中ip_ vs模抉的版本信息


1、加载LVS内核模块

modprobe ip_vs     //加载ip_vs模块

cat /proc/net/ip_vs    //查看ip_vs版本信息

2、安装LVS管理工具
rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm
或者
yum install  ipvsadm -y

ipvsadm   -v     //查看版本

以上这些操作在调度服务器上做一下就好了,节点服务器不用安装这些的
——————————————————————————————————


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

VIP(virtual  ip)

ipvsadm -A -t 192.168.80.11:80 -s rr

 

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

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

注:
"-a"表示添加真实服务器
"-t"用来指定VIP地址及TCP端口
"-r"用来指定RIP地址及TCP端口
"-m"表示使用NAT群集模式
"-g"是DR模式
"-i"是TUN模式

3、删除服务器节点
ipvsadm -d -r 192.168.80.33:80 -t 192.168.80.11:80

需要从服务器池中删除某一个节点时,使用选项"-d"。执行删除操作必须指定目标对象,包括节点地址、虚拟IP地址

删除

LVS群集192.168.80.11中的节点192.168.80.33

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

4、查看节点状态
ipvsadm -L       加个"-n"将以数字形式显示地址、端口信息

5、保存策略
ipvsadm-save  > /etc/sysconfig/ipvsadm
service ipvsadm save

6、恢复策略
ipvsadm-restore < /etc/sysconfig/ipvsadm
注意:真实服务器需要指网关

永久开启路由转发功能
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p   //生效

注意:如果不配置课本上的iptables规则会导致内网主机无法主动上网,其它不受影响

 

 

 


LVS调度器——NAT模式
LVS负载均衡群集—地址转换模式(LVS-NAT)
环境:
调度服务器一台:Linux—CentOS7.4
        IP地址:192.168.80.100(内网)
                192.168.90.100(外网)
Web服务器两台:Linux—CentOS7.4
        IP地址:192.168.80.101(SERVER AA)
    IP地址:192.168.80.102(SERVER BB)
客户端一台:以win7为例,用于测试验证
        IP地址:192.168.90.10(外网)

第一步:配置调度服务器

加载LVS内核模块
modprobe ip_vs
cat /proc/net/ip_vs
yum install ipvsadm -y

vi nat.sh

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
ipvsadm -C
ipvsadm -A -t 192.168.90.100:80 -s rr 
ipvsadm -a -t 192.168.90.100:80 -r 192.168.80.105:80 -m
ipvsadm -a -t 192.168.90.100:80 -r 192.168.80.106:80 -m
ipvsadm -Ln

chmod  +x nat.sh

./nat.sh

注:
第一行:开启路由地址转换
第二行:清除内核虚拟服务器表中的所有记录
第三行:创建虚拟服务器
第四行和第五行:添加服务器节点
第六行:查看节点状态

第二步:配置Web服务器(两台相同配置)
yum install -y httpd
vi /etc/httpd/conf/httpd.conf
ServerName localhost       //将“#”号去掉,修改主机名
cd /var/www/html/
echo "<h1>SERVER AA</h1>" > index.html

systemctl start httpd

vi /etc/sysconfig/network-scripts/ifcfg-ens32
GATEWAY=192.168.80.100

systemctl restart network   (一定要重启网卡)

 

测试:
Win7访问http://192.168.90.100

刷新以下会变成

如果未改变则失败。

 

LVS调度器——DR模式

调度器与各服务器在同个网段内


环境:
调度服务器一台:Linux—CentOS7.4
        IP地址:192.168.80.180
Web服务器两台:Linux—CentOS7.4
        IP地址:192.168.80.105(SERVER AA)
    IP地址:192.168.80.106(SERVER BB)
客户端一台:以win7为例,用于测试验证
        IP地址:192.168.80.2
        
modprobe ip_vs

cat /proc/net/ip_vs

yum install  ipvsadm -y

vi dr.sh
#!/bin/bash
#
ifconfig ens33:0 192.168.80.188 broadcast 192.168.80.188 netmask 255.255.255.255 up
route add -host 192.168.80.188 dev ens33:0
ipvsadm -C
ipvsadm -A -t 192.168.80.188:80 -s rr
ipvsadm -a -t 192.168.80.188:80 -r 192.168.80.105:80 -g
ipvsadm -a -t 192.168.80.188:80 -r 192.168.80.106:80 -g
ipvsadm -Ln

 

ifconfig后 出现上面这个才是执行成功

 

注:192.168.80.188是调度器和各真实服务器要共同虚拟出的一个地址

第一行:添加虚拟地址的虚接口,此虚接口的ip地址为虚拟ip地址。
第二行:给ens33:0添加路由
以下跟nat模式一样

chmod  +x dr.sh

./dr.sh

配置Web服务器:
 vi web.sh
#!/bin/bash
#haha
ifconfig lo:0 192.168.80.188 broadcast 192.168.80.188 netmask 255.255.255.255 up
route add -host 192.168.80.188 dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &>/dev/null

注:
arp_ignore:控制系统在收到外部的arp请求时,是否要返回arp响应。
1:只响应目的IP地址为接收网卡上的本地地址的arp请求。
2:只响应目的IP地址为接收网卡上的本地地址的arp请求,并且arp请求的源IP必须和接收网卡同网段。

arp_announce:控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址。 
1:尽量避免使用不属于该发送网卡子网的本地地址作为发送arp请求的源IP地址。
2:忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址。

chmod +x web.sh

./web.sh

测试:win7浏览器中输入http://192.168.80.188

 

 

 

 

 

LVS调度器之IP隧道模式

在调度器上
vi tun.sh
ifconfig tunl0 192.168.80.188 broadcast 192.168.80.188 netmask 255.255.255.255 up
route add -host 192.168.80.188 dev tunl0
ipvsadm -C
ipvsadm -A -t 192.168.80.188:80 -s rr
ipvsadm -a -t 192.168.80.188:80 -r 192.168.80.101:80 -g
ipvsadm -a -t 192.168.80.188:80 -r 192.168.80.102:80 -g
ipvsadm -Ln

在Web服务器上:
vi web.sh
ifconfig tunl0 192.168.80.188 broadcast 192.168.80.188 netmask 255.255.255.255 up
route add -host 192.168.80.188 dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &>/dev/null

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值