LVS负载均衡群集

LVS技术简介
【1】技术简介
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
【2】集群采用三层结构
一般来说,LVS集群采用三层结构,其主要组成部分为:
A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
【3】调度器
调度器是服务器集群系统的唯一入口点(Single Entry Point),它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合。
在IP负载均衡技术中,需要服务器池拥有相同的内容提供相同的服务。当客户请求到达时,调度器只根据服务器负载情况和设定的调度算法从服务器池中选出一个服务器,将该请求转发到选出的服务器,并记录这个调度;当这个请求的其他报文到达,也会被转发到前面选出的服务器。在基于内容请求分发技术中,服务器可以提供不同的服务,当客户请求到达时,调度器可根据请求的内容选择服务器执行请求。因为所有的操作都是在Linux操作系统核心空间中完成的,它的调度开销很小,所以它具有很高的吞吐率。服务器池的结点数目是可变的。当整个系统收到的负载超过所有结点的处理能力时,可以在服务器池中增加服务器来满足不断增长的请求负载。
对大多数网络服务来说,请求间不存在很强的相关性,请求可以在不同的节点上并行执行,所以整个系统的性能基本上可以随着服务器池的结点数目增加而线性增长。 共享存储通常是数据库、网络文件系统或者分布式文件系统。服务器结点需要动态更新的数据一般存储在数据库系统中,同时数据库会保证并发访问时数据的一致性。静态的数据可以存储在网络文件系统(如NFS/CIFS)中,但网络文件系统的伸缩能力有限,一般来说,NFS/CIFS服务器只能支持3~6个繁忙的服务器结点。对于规模较大的集群系统,可以考虑用分布式文件系统,如AFS、GFS、Coda和Intermezzo等。分布式文件系统可为各服务器提供共享的存储区,它们访问分布式文件系统就像访问本地文件系统一样,同时分布式文件系统可提供良好的伸缩性和可用性。
【4】分布式锁管理器
此外,当不同服务器上的应用程序同时读写访问分布式文件系统上同一资源时,应用程序的访问冲突需要消解才能使得资源处于一致状态。这需要一个分布式锁管理器(Distributed Lock Manager),它可能是分布式文件系统内部提供的,也可能是外部的。开发者在写应用程序时,可以使用分布式锁管理器来保证应用程序在不同结点上并发访问的一致性。
负载调度器、服务器池和共享存储系统通过高速网络相连接,如100Mbps交换网络、Myrinet和Gigabit网络等。使用高速的网络,主要为避免当系统规模扩大时互联网络成为整个系统的瓶颈。
【5】监视器
Graphic Monitor是为系统管理员提供整个集群系统的监视器,它可以监视系统的状态。Graphic Monitor是基于浏览器的,所以无论管理员在本地还是异地都可以监测系统的状况。为了安全的原因,浏览器要通过HTTPS(Secure HTTP)协议和身份认证后,才能进行系统监测,并进行系统的配置和管理

一、LVS负载均衡群集
1、负载均衡群集的作用和特点
1)负载均衡群集的作用

针对前端服务实现高可用
2)LVS负载均衡群集的特点
针对apache、ftp、nginx、tomcat实现高可用
支持高并发
动态伸缩
安全稳定可靠
2、集群的类型
1)网络负载均衡群集

组成群集的计算机都对外提供服务
增强访问延迟
动态伸缩
2)故障转移群集
减低服务器停止服务的时间
增强可靠性
避免单点故障
双机热备多机热备
3)高性能群集
支持超高硬件超高性能
硬件动态扩展伸缩
监控硬件和服务的状态
一般数据中心都是高性能群集
3、负载均衡的结构
1)缓存层

缓存用户历史数据
加快访问速度
降低服务负载
2)调用层
用户访问资源的一个入口
通过调度层动态资源调度
增强服务器的稳定性
3)服务器池
运行的是服务或者应用程序
服务器池相应调度层分配的任务
4)存储层
存储服务器池的所有数据
存储层需要配置硬件高科可用PAID5、RAID1
使用共享存储NFS、ISCSI、分布式文件系统给服务器池提供存储服务
4、负载均衡的模式
1)NAT模式

客户端向负载均衡器发送请求
负载均衡器将客户端任务传输到指定服务器池中的主机进性相应
服务器将相应数据返回到调度,调度将数据返回到客户端
NAT模式调度服务器负载过搞容易出现瓶颈
NAT模式稳定性差
2)TUN模式
IP隧道模式
TUN模式被简称为开放模式
负载均衡器和服务器池全部部署在广域网
方便进行负载均衡服务
成本高
3)DR模式
路由模式
负载均衡器和服务器池在同一个网络中
DR模式属于半开放模式
客户端向负载均衡器发送请求
负载均衡器将任务转发指定的服务器,服务器直接响应客户端
成本低、稳定性强
5、LVS调度算法
1)RR轮询模式

使用比较广泛
属于负载均衡模式
2)WRR加权轮询模式
根据服务器性能动态调整负载情况
高性能硬件多分配负载任务
低性能硬件少分配负载任务
3)LC最少连接
负载均衡器统计服务器负载情况
选择低服务器服务器多承担用户访问请求
4)WLC加权最少连接
根据服务权重经行任务负载
权重高访问量搞权重低访问量少
二、配置LVS群集
1、安装LVS群集
1)安装LVS

[[email protected]~]#yum -y install ipvsadm
2)设置服务开机自启
[[email protected]~]#systemctl enbale ipvsadm
3)查看LVS规则
[[email protected]~]#ipvsadm -ln
4)清空规则保存规则
[[email protected]~]#ipvsadm -C
[[email protected]~]#ipvsadm-save
5)ipvsadm常见的命令选项
-A:添加虚拟服务器
-a:添加物理服务器
-d:删除某个节点
-t:指定VIP地址及TCP端口
-s:指定负载调度算法
-m:配置LVS模式为NAT
-g:配置LVS模式为DR
-i:配置LVS模式为tum模式
-w:权重,0表示暂停服务

三. 配置LVS群集

安装网站服务,写入测试文件,启动服务设置开机自动启动

[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo “www.benet.com” > /var/www/html/index.html
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd
网站二也是,安装网站服务,写入测试文件,启动服务设置开机自动启动

[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo “www.accp.com” > /var/www/html/index.html
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd
配置基本网络信息
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32

GATEWAY=192.168.100.40

重启网卡服务
[[email protected] ~]# systemctl restart network

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32

GATEWAY=192.168.100.40

重启网卡服务

[[email protected] ~]# systemctl restart network

存储服务器配置IP

[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32
/etc/sysconfig/network-scripts/ifcfg-ens34

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34

NAME=ens34

DEVICE=ens34

ONBOOT=yes

IPADDR=192.168.200.10

NETMASK=255.255.255.0

重启网卡服务

[[email protected] ~]# systemctl restart network

给外网客户机配置IP地址

192.168.200.20

开启路由转发功能
[[email protected] ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

检查配置是否正确
[[email protected] ~]# sysctl -p
net.ipv4.ip_forward = 1

清除默认防火墙规则
[[email protected] ~]# iptables -t nat -F

查看默认防火墙规则
[[email protected] ~]# iptables -t nat -L

配置iptables防火墙策略
[[email protected] ~]# iptables -t nat -I
POSTROUTING -s 192.168.100.0/24 -o ens34 -j SNAT --to-source 192.168.200.10

2.配置NAT模式的LVS
(1)配置调度服务器IP地址为192.168.200.10:80端口算法使用轮询

[[email protected] ~]# ipvsadm -A -t 192.168.200.10:80 -s rr

(2)调度服务器添加物理服务器100.10和20的80端口映射到VIP地址

[[email protected] ~]# ipvsadm -a -t 192.168.200.10:80 -r 192.168.100.10:80 -m -w 1

[[email protected] ~]# ipvsadm -a -t 192.168.200.10:80 -r 192.168.100.20:80 -m -w 1

查看配置

[[email protected] ~]# ipvsadm -ln

在这里插入图片描述

(3)保存配置
[[email protected] ~]# ipvsadm-save
-A -t centos04:http -s rr
-a -t centos04:http -r 192.168.100.10:http -m -w 1
-a -t centos04:http -r 192.168.100.20:http -m -w 1

动态监听日志信息客户端访问验证

[[email protected] ~]# tail -f /var/log/httpd/access_log
[[email protected] ~]# tail -f /var/log/httpd/access_log

在这里插入图片描述

在这里插入图片描述

(4)移除物理服务器
[[email protected] ~]# ipvsadm -d -r 192.168.200.10:80 -t 192.168.100.10:80

(5)删除调度服务器

[[email protected] ~]# ipvsadm -D -t 192.168.200.10:80

3.配置LVS的DK模式,做之前先清空之前配置的东西保存ipvsadm -C ipvsadm-save

(1)配置VIP地址网卡设置vip地址为192.168.100.253

[[email protected]~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens32:0

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32:0

在这里插入图片描述

重启网卡服务
[[email protected] ~]# systemctl restart network

(2)修改LVS服务器的内核配置文件支持DR模式
[[email protected] ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens32.send_redirects = 0
[[email protected] ~]# sysctl -p
(3)配置调度服务器IP地址
[[email protected] ~]# ipvsadm -A -t 192.168.100.253:80 -s rr

(4)添加物理服务器
[[email protected] ~]# ipvsadm -a -t 192.168.100.253:80 -r 192.168.100.10:80 -g -w 1
[[email protected] ~]# ipvsadm -a -t 192.168.100.253:80 -r 192.168.100.20:80 -g -w 1
4.配置DR模式的web服务器
(1)生成虚拟网卡监听地址为LVS服务器的VLP地址

[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-lo ifcfg-lo:0
[[email protected] network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.253
NETMASK=255.255.255.255
ONBOOT=yes
重启网卡服务
[[email protected]~]# systemctl restart network
(2)修改web服务器ARP相应
[[email protected] ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce =2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[email protected] ~]# sysctl -p

第二台这样配置!!!

[[email protected] ~]# scp /etc/sysctl.conf [email protected]:/etc/
[[email protected]~]# scp /etc/sysconfig/network-scripts/ifcfg-lo:0 [email protected]92.168.100.20:/etc/sysconfig/network-scripts/

重启网卡服务
[[email protected] ~]# systemctl restart network

内网客户机配置IP地址,访问验证
192.168.100.252
在这里插入图片描述
在这里插入图片描述

5.配置NFS
(1)安装NFS系统

[[email protected] ~]# yum -y install rpcbind nfs-utils
(2)创建共享网站根目录文件
[[email protected] ~]# mkdir /web
[[email protected] ~]# echo “www.nfs.com” > /web/index.html
(3)修改NFS主配置文件共享/web目录,允许100.10和20读取共享目录数据rw读取和写入
[[email protected] ~]# vim /etc/exports
/web 192.168.100.10(ro) 192.168.100.20(ro)

(4)启动NFS服务
[[email protected] ~]# systemctl start rpcbind
[[email protected] ~]# systemctl enable rpcbind
[[email protected] ~]# systemctl start nfs
[[email protected] ~]# systemctl enable nfs

(5)查看共享目录

[[email protected] ~]# showmount -e 192.168.100.30
Export list for 192.168.100.30:
/web 192.168.100.20,192.168.100.10
(6)挂载共享目录到网站服务器根

[[email protected] ~]# mount 192.168.100.30:/web /var/www/html/

(7)使用showmount -e 命令查看是否挂载

[[email protected] ~]# showmount -e 192.168.100.30
在这里插入图片描述

[[email protected] ~]# mount 192.168.100.30:/web /var/www/html/
[[email protected] ~]# cat /var/www/html/index.html
www.nfs.com
重启网站服务器
[[email protected] ~]# systemctl restart httpd
[[email protected] ~]# systemctl restart httpd
动态监听正确日志服务
tail -f /var/log/httpd/access_log

在这里插入图片描述

设置开机自动挂载
[[email protected] ~]# vim /etc/fstab
192.168.100.30:/web /var/www/html/ nfs defaults 0 0
查看挂载是否成功
[[email protected] ~]# cat /var/www/html/index.html www.nfs.com