赞
踩
简介:
LVS,全称 Linux Virtual Server,即Linux虚拟服务器。是一个虚拟的服务器集群系统,使用负载均衡技术将多台服务器组成一个虚拟的服务器集群。在众多解决高并发问题的方案中,这是一个易于扩展并且价格相对低廉的方案。本项目是在1998年时,由章文嵩博士成立的,是中国最早出现的自由软件项目之一。
LVS工作模式分为NAT模式、TUN模式、以及DR模式。
一,群集的类型
负载均衡群集:以提高应用系统的响应能力,因可能处理更多的访问请求,减少延迟为目标,获得高并发,高负载的整体性能。
高可用群集:以提高应用系统的可靠性,尽可能的减少中断时间为目标,确保服务的连续性,达到高可用群集技术。
高性能运算群集:以提高应用系统的CUP运算速度,扩展硬件资源和分析能力为目标,获得相当于大型,超级计算机的高性能运算能力。
二,负载均衡的分层结构
第一层:负载调度器,这是访问整个群集系统的唯一入口,对外使用服务器共有的VIP地址,也称为群集IP地址。通常会配置主,备两台调度器实现热备份,当主调度器失效以后平滑替代至备用调度器,确保高可用性。
第二层:服务器池,群集所提供的应用服务由服务器池承担,其中每个节点具有独立的RIP地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
第三层:共享存储,为服务器池中的所有节点提供稳定,一致的文件存取服务,确保整个群集的统一性。
三,负载均衡的工作模式
地址转换(NAT):简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,以作为客户机的访问入口,也是个节点回应客户机的访问出口。服务器节点使用私有IP地址,与负载调度器位于同一物理网络,安全性要优于,其他两种方式。
IP隧道(IP Tunnel):简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的internet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
直接路由(Direct Routing):简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的ip隧道
四,LVS的负载调度算法
轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各个节点
加权轮询(Weighted Round Robin):根据真实服务器的处理能力轮流分配收到的访问器请求,调度器可以自动查询各节点的负载情况,并动态调整其权重
最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接最少的节点。
加权最少连接(Werghted Least Connections):在服务器节点的性能差异较大的情况下,可认为真实服务器自动调整权重,权重较高的节点将承受更大比例的活动连接负载。
1.LVS的负载调度算法
针对不同的网络服务和配置需要,LVS调度器提供多种不同的负载调度器算法,其中最常用的四种算法包括轮询,加权轮询,最少连接,加权最少连接
2.使用ipvsadm管理工具
注:ipvsadm是在负载调度器上使用的LVS群集管理工具,通过调用ip_vs模块来添加,删除服务器节点,以及查看群集的运行状态。
- modprobe ip_vs #加载ip_vs模块
- yum -y install ipvsadm #安装ipvsadm
- ipvsadm -v #查看ipvsadm版本
创建虚拟机服务器
注:若群集的VIP地址为192.168.1.1,针对TCP 80 端口提供负载分流服务,使用的调度算法为,轮询,则对应的ipvsadm命令操作如下。对于负载均衡调度器来说,VIP必须是本机实际已启用的IP地址
ipvsadm -A -t 192.168.1.1:80 -s rr
选项-A表示添加虚拟机服务器,-t用来指定VIP地址及TCP端口,-s用来指定负载调度算法——轮询(rr),加权轮询(wrr),最少连接(lc),加权最少连接(wlc)。
添加服务器节点
为虚拟服务器192.168.1.1添加两个节点服务器,若希望使用保持连接,还应该添加“-p 60” 选项,其中60为保持时间(单位为s)
- ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.1:80 -m -w 1
- ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.2:80 -m -w 1
选项:-a表示添加真实服务器,-t用来指定VIP地址及TCP端口,-r用来指定RIP地址及TCP端口,-m表示使用NAT群集模式(-g DR模式和-i TUN模式),-w用来设置权重(权重为0时表示暂停节点)
查看群集节点状态
ipvsadm -ln
选项:-l可以列表查看LVS虚拟服务器,可以指定查看某一个VIP地址,结合选项-n将以数字形式显示地址,端口信息。
删除服务器节点
ipvsadm -d -r 192.168.1.1:80 -t 192.168.2.1:80
选项:-d 执行删除操作必须指定目标对象,包括节点地址,虚拟IP地址。使用-D并指定虚拟IP地址即可,无须指定节点。
保存负载分配策略
注:将配置添加到配置文件中
ipvsadm-save > /etc/sysconfig/ipvsadm
1.使用NFS发布共享资源
安装nfs-utils,rpcbind软件包
- yum -y install nfs-utils rpcbind
- systemctl enable nfs
- systemctl enable rpcbind
设置共享目录
- mkdir -p /opt/wwwroot
- vim /etc/exports
- /opt/wwwroot 192.168.1.1/24(rw,sync,no_root_squash)
注:客户机地址可以是主机名,IP地址,网段地址,允许使用*,?通配符;权限选项中的rw表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)。
启动NFS服务程序
- systemctl start rpcbind
- systemctl start nfs
- netstat -napt | grep rpcbind
查看本机发布的NFS共享目录
showmount -e
2.在客户机中访问NFS共享资源
安装rpcbind软件包,并启动rpcbind服务
- yum -y install rpcbind nfs-utils
- systemctl enable rpcbind
- systemclt start rpcbind
查询NFS服务器共享了那些目录
showmount -e 192.168.2.1
手动挂载NFS共享目录
- mount 192.168.2.1:/opt/wwwroot /var/www/html
- tail -l /etc/mtab
fatab自动挂载设置
- vim /etc/fstab
- 192.168.2.1:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0
环境:
1.配置负载调度器
注:如果不是同一网段,记得配置网关,和开启路由转发
- [root@localhost ~]# vim /etc/sysctl.conf
- net.ipv4.ip_forward = 1
- [root@localhost ~]# sysctl -p
- net.ipv4.ip_forward = 1
配置负载分配策略
- [root@localhost ~]# ipvsadm -C
- [root@localhost ~]# ipvsadm -A -t 192.168.2.1:80 -s rr
- [root@localhost ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.2:80 -m -w 1
- [root@localhost ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.3:80 -m -w 1
- [root@localhost ~]# ipvsadm-save
- -A -t localhost.localdomain:http -s rr
- -a -t localhost.localdomain:http -r 192.168.2.2:http -m -w 1
- -a -t localhost.localdomain:http -r 192.168.2.3:http -m -w 1
- [root@localhost ~]# systemctl enable ipvsadm
- Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
- [root@localhost ~]#
配置2.2和2.3节点服务器,配置相同
- [root@localhost ~]# yum -y install httpd
- [root@localhost ~]# echo "2.2" > /var/www/html/index.html
- [root@localhost ~]# systemctl start httpd
- [root@localhost ~]# systemctl enable httpd
- Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
测试LVS群集,使用多台测试机,直接访问http://192.168.2.1,将能看到真实机提供的网页内容,如果节点网页不同,多刷新几次可以看到不同
- [root@localhost ~]# 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.2.1:80 rr
- -> 192.168.2.2:80 Masq 1 0 2
- -> 192.168.2.3:80 Masq 1 0 1
挂载NFS共享存储
mount 192.168.2.4:/opt/wwwroot /var/www/html
环境:
配置负载调度器虚拟IP地址(VIP)
- [root@localhost ~]# cd /etc/sysconfig/network-scripts/
- [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
- [root@localhost network-scripts]# vim ifcfg-ens33:0
- NAME=ens33:0
- DEVICE=ens33:0
- ONBOOT=yes
- IPADDR=192.168.2.254
- NETWASK=255.255.255.0
- [root@localhost network-scripts]# ifup ens33:0
- [root@localhost network-scripts]# ip a
- ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
- link/ether 00:0c:29:83:b0:2e brd ff:ff:ff:ff:ff:ff
- inet 192.168.2.1/24 brd 192.168.2.255 scope global ens33
- valid_lft forever preferred_lft forever
- inet 192.168.2.254/24 brd 192.168.2.255 scope global secondary ens33:0
- valid_lft forever preferred_lft forever
- inet6 fe80::f14d:4ec5:d7b2:c6c1/64 scope link
- valid_lft forever preferred_lft forever

调整/proc响应参数
- [root@localhost network-scripts]# vim /etc/sysctl.conf
- net.ipv4.conf.all.send_redirects = 0
- net.ipv4.conf.default.send_redirects = 0
- net.ipv4.conf.ens33.send_redirects = 0
- [root@localhost network-scripts]# sysctl -p
- net.ipv4.conf.all.send_redirects = 0
- net.ipv4.conf.default.send_redirects = 0
- net.ipv4.conf.ens33.send_redirects = 0
配置负载分配策略
- [root@localhost network-scripts]# ipvsadm -C
- [root@localhost network-scripts]# ipvsadm -A -t 192.168.2.254:80 -s rr
- [root@localhost network-scripts]# ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.2:80 -g -w 1
- [root@localhost network-scripts]# ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.3:80 -g -w 1
- [root@localhost network-scripts]# ipvsadm-save
- -A -t localhost.localdomain:http -s rr
- -a -t localhost.localdomain:http -r 192.168.2.2:http -g -w 1
- -a -t localhost.localdomain:http -r 192.168.2.3:http -g -w 1
- [root@localhost network-scripts]# systemctl enable ipvsadm
配置节点服务器
- [root@localhost ~]# cd /etc/sysconfig/network-scripts/
- [root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
- [root@localhost network-scripts]# vim ifcfg-lo:0
- [root@localhost network-scripts]# ifup lo:0
- [root@localhost network-scripts]# ifconfig lo:0
- lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
- inet 192.168.2.254 netmask 255.255.255.255
- loop txqueuelen 1 (Local Loopback)
调整/proc相应参数
- [root@localhost network-scripts]# 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
-
- [root@localhost network-scripts]# sysctl -p
- 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
挂载NFS存储服务器
mount 192.168.2.4:/opt/wwwroot /var/www/html
测试LVS测试
- [root@localhost network-scripts]# 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.2.254:80 rr
- -> 192.168.2.2:80 Route 1 0 0
- -> 192.168.2.3:80 Route 1 0 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。