本文共 3120 字,大约阅读时间需要 10 分钟。
前言:我们在学习路由交换的时候讲过hsrp热备份路由协议,今天要给大家介绍的是lvs群集,为了实现负载均衡,提高服务器的工作效率,当其中有服务器发生故障的时候也不会影响客户的访问。群集在企业中应用非常广泛,今天我们来学习企业中常用的一种群集技术lvs。
一、群集技术概述1、群集的类型1)负载均衡群集:主要的功能将来自客户机的访问请求分流给多台服务器,从而缓单台服务器的负载压力,例如京东淘宝的购物节的时候,当天的并发量是分常大的,单台服务器是无法承载的。2)高可用群集:高可用群集和hsrp原理基本一样,服务器有主从之分,实现故障切换,当一台服务器发生故障的时候,另一台服务器马上提供工作。3)高性能运算群集:这种群集主要用在“云计算”中,就是将多台服务器的硬件整合到一起,实现高性能运算能力。2、负载均衡的分层结构
第一层:负载调度器,是群集系统的唯一入口,对外使用所有服务器共有的虚拟ip地址,通常会配置主从两台调度器实现热备份,确保高可用性。第二层:服务器池,也就是提供各种服务的服务器,例如web服务器,ftp服务器,数据库服务器等,处理调度器发来的请求。第三层:共享存储,主要存储服务器池中应用程序的数据,一般会采用nas或者san设备,我们今天就使用NFS搭建一台nas服务器,工作中也可以购买硬件nas和san。3、负载均衡的工作模式
1)地址转换,简称nat模式,负载均衡调度器作为网关,服务器和负载调度器在同一个私有网络,安全性较好。2)Ip隧道,简称tun模式,负载调度器仅作为客户机的访问入口,各节点通过各自的internet连接直接回应客户机,不在经过负载调度器,服务器的节点分散在互联网的不同位置,具有独立的共有ip地址,通过专用的ip隧道与负载调度器相互通信。3)直接路由,简称DR模式,与TUN模式类似,但各节点不是分散在各地,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的ip隧道。以上三种模式中,nat方式只需要一个公网地址,从而成为最容易的一种负载均衡模式,安全性也比较好,许多硬件负载均衡设备就是采用这种方式,性比较而言,DR模式和TUN模式的负载能力更强大,使用范围更广,但节点的安全性要稍差一些。1、lvs的负载调度算法1)轮询:将受到的访问请求按顺序轮流分配给群集中的各节点,不管服务器的连接数和系统负载。2)加权轮询:也是轮流分配,但是可以调整权重,让处理性能强的服务器承担更多的访问流量。3)最少连接:根据连接数分配,分配给连接数少的节点。4)加权最少连接:权重高的节点将承担更大比例的负载二、路由模式的负载均衡群集这种模式的群集中,lvs负载调度器作为群集的入口,但不做网关使用了,web服务器节点都各自接入internet,发送给客户机的web相应数据包不经过lvs负载调度器实验步骤:
这里我们IP地址都使用共有地址网段来体现,服务器节点采用双网卡,一块用于应答客户端请求,一块连接共享存储。在实验中使简化为下面的环境:注意web节点A有两块网卡,一块192.168.7.21,另一块172.16.16.177,web节点B有两块网卡,一块192.168.7.22,另一块172.16.16.178,调度器一块网卡172.16.16.173,NFS一块网卡192.168.7.1、搭建NFS服务器1)安装nfs-utils(用来发布共享和访问)和rpcbind(用于RPC支持)yum -y install nfs-utils rpcbindchkconfig nfs onchkconfig rpcbind on2)设置共享目录
将文件夹/opt/wwwroot共享给内部的web服务器节点使用,命令如下:mkdir -p /opt/wwwrootvim /etc/exports /opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)注释:rw:读写,sync:允许同步写入,no_root_squash:客户机以root身份访问时赋予本地root权限。3)启动NFS服务程序service rpcbind startservice nfs startnetstat -anpt | grep rpcbind4)查看本机发布的NFS共享目录showmount -e 本机地址5)在web节点A上访问NFS共享资源若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动服务器,如果想使用showmount查询共享,也需要安装nfs-utils软件包,总之和服务器一样都装上吧。然后在NFS上面关闭防火墙service iptables stop在web节点A上连接可以看到/opt/wwwroot就说明连接成功了。在两台节点服务器上安装nginx,并开启nginx服务 7)在web节点A上挂载共享目录到本地的nginx网站主目录8)在NFS服务器的/opt/wwwroot里面制作网页index.html,然后到web节点A的/usr/local/nginx/html中查看,如果有index.html就说明挂载成功。9)设置自动挂载vim /etc/fstab注意:在web节点B上做和web节点A相同的操作,这里就不截图说明了。2、配置负载调度器1)在调度器上安装ipvsadm软件包yum -y install ipvsadm 1、配置调度器1)配置虚拟ip地址(vip)执行:ifup eth0:0service network restart 2)调整/proc响应参数因为lvs负载调度器和各节点需要共用vip地址,应该关闭linux内核重定向参数响应,打开vi /etc/sysctl.conf,增加三行。执行sysctl -p3)配置负载分配策略chkconfig ipvsadm on2、配置节点服务器使用DR模式时,节点服务器也需要配置VIP地址,因为客户端请求的是群集IP地址,目标MAC地址是LVS的,节点服务器回应时应该以群集IP回应,否则客户端不能成功接收。还需要调整内核的ARP响应参数阻止更新VIP的MAC地址,因为客户端在发送ARP请求的时候IP地址是群集地址,这是所有的节点都配置了VIP,这时客户端的ARP缓存内就会出现多条重复的IP地址对应的MAC地址确不相同,这回导致客户端无法正确找到调度器。1)在节点B上配置虚拟ip地址
Vi /etc/sysconfig/network-scripts/ifcfg-lo:0 添加vip本地访问路由[root@centos]# vim /etc/rc.local/sbin/route add -host 172.16.16.172 dev lo:0 //永久生效2)调整/proc响应参数vim /etc/sysctl.conf,添加6行执行:sysctl -p
然后再另一台节点A上做相同的操作,这里就不再截屏了,大家参考上面,如果不想去打一遍,可以使用scp命令拷贝节点B上面的文件。
3、在客户端上测试,每次打开浏览器访问的页面在两台web服务器之间切换就对了。在实际工作中两个web节点上的网页要保持一致,这样就能始终访问一个相同的网站,从而能实现负载均衡。
转载于:https://blog.51cto.com/13556019/2066586