公司网络web服务器负载均衡解决方案

简介:

公司网络web服务器负载均衡解决方案


    随着公司产品业务的推广发展壮大,对服务器的硬件性能、相应速度、服务稳定性、数据可靠性的要求越来越高。今后服务器的负载将难以承受所有的访问。
从公司的实际情况,运营成本网络安全性考虑,排除使用价格昂贵的大型服务器、
以及部署价格高昂的专用负载均衡设备。

    DNS轮询负载均衡解决方案虽然成本低廉但是安全性能不是很好,加上公司产品的特殊性需要用户验证的体系,在会话保持方面是一大缺陷,会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同 一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS不过期,而重新查询服务器并指向新的服务器,那么原服务器保存的用户信息 是无法被带到新服务器的,而且可能要求被重新认证身份,来回切换时间长了各台服务器都保存有用户不同的信息,对服务器资源也是一种浪费。
     企业还有另一种选择解决难题,构建集群服务器----通过整合多台相对低廉的普通服务器,以同一个地址对外提供相同的服务。LVS负载均衡集群解决方案是目前企业最常见运用范围最广的一种集群技术。

一、Web服务集群负载均衡理论思路

负载均衡的思路下多台服务器为对称方式,每台服务器都具备等价的地位,都可以单独对外提供服务而无须其它服务器的辅助。然后通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立响应客户机的请求。由于建立内容完全一致的Web服务器并不复杂,可以使用服务器同步更新或者共享存储空间等方法来完成,因此负载均衡技术就成为建立一个高负载Web站点的关键性技术。


二、公司外网服务器的网络环境及工作模式的选择
Lvs负载均衡的工作模式一共有三种,分别是 
1、network address translation地址转换模式 ; 
2、ip tunnel IP隧道模式 ;
3、direct routing直接路由模式。
这3种工作模式中,NAT模式只需要一个公网ip,成为最简易的负载均衡模式,安全性比较好,相对而言DR模式的负载能力更为强大、适用范围更广。下面我们对DR工作模式进行具体的研究;
DR工作模式采用半开放式的网络结构,各节点服务器与调度器处在同一个物理网络,负载均衡调度器与各节点服务器使用本地网络相连,客户端请求访问会请求调度器的虚拟IP地址,服务器响应不经过调度器,直接响应客户端。

        DirectRouting 工作模式客户端请求及服务器响应流程

基于DR模式的LVS负载均衡集群的网络架构

三、操作流程及实施步骤
针对公司部署的实际情况我们可以DR直接路由的工作模式为实施方案,
具体操作步骤流程如下:
    LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。以下操作可以手动加载ip_vs模块,并查看当前系统中ip_vs模块的版本信息

modprobe ip_vs

//加载ip_vs模块,

1
cat  /proc/net/ip_vs


//查看ip_vs版本信息

---安装管理软件------

1
2
rpm -ivh  /mnt/Packages/ipvsadm-1 .25-9.el6.i686.rpm
service ipvsadm start


//启动服务

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

———————————————————————————————————
-----常用命令的解释如下:------

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

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

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

2)添加服务器节点

1
2
ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.12:80 -m
ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.13:80 -m



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

4)删除服务器节点

1
ipvsadm -d -r 192.168.0.14:80 -t 192.168.0.12:80



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


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

1
2
3
4
5
6
7
8
ipvsadm -L
//
查看节点状态,加个
"-n"
将以数字形式显示地址、端口信息
ipvsadm-save  >  /etc/sysconfig/ipvsadm
//
保存策略



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

四、脚本化操作实施步骤

------DR模式调度器配置------(调度器与各服务器之间要用的都用脚本的形式)

1
2
3
4
5
6
7
8
vi  dr.sh
ifconfig  eth0:0 192.168.0.14 broadcast 192.168.0.14 netmask 255.255.255.255 up
route add -host 192.168.0.14 dev eth0:0
ipvsadm -C
ipvsadm -A -t 192.168.0.14:80 -s rr
ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.12:80 -g
ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.13:80 -g
ipvsadm


------DR模式各服务器配置------

1
2
3
4
5
6
7
8
9
10
11
vi  web.sh
ifconfig  lo:0 192.168.0.14 broadcast 192.168.0.14 netmask 255.255.255.255 up
route add -host 192.168.0.14 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
sh dr.sh start
sh web.sh start
sh web.sh start



五、Shared Storage(共享存储)
Shared Storage为所有Real Server提供共享存储空间和一致的数据内容
-------NFS服务器安装-----
yum install nfs-utils
//nfs在装的时候会有“rpcbind”这个依赖包的
service rpcbind start
//在启动nfs服务之前先要启动这个"rpcbind"服务
service nfs restart
//nfs"111"的端口

---编辑配置文件----
vi /etc/exports
//NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享)。
/usr/share *(ro,sync)
/opt/test 192.168.80.22(rw,sync)
//将文件夹/opt/test共享给192.168.80.22网段使用,允许读写操作。“sync”表示同步写入。

注:rw表示允许读写(ro表示为只读),sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)

--发布共享---
exportfs -rv

---客户端查看、挂载----

1
2
3
4
5
showmount -e 192.168.80.88
//
用showmount命令来查看NFS
服务器端共享了哪些目录
mount .nfs 192.168.80.33: /usr/share  /media/


//挂载

NFS协议的目标是提供一种网络文件系统,因此对NFS共享的访问也使用mount命令来进行挂载,对应的文件系统类型为nfs

若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动rpcbind系统服务;另外,为了使用showmount查询工具,建议将nfs-utils软件包也一并装上。

六、验证
1、负载均衡验证

192.168.0.12192.168.0.13  web服务器
192.168.0.11 为负载均衡调度器
192.168.0.14 VIP 是负载均衡调度器虚拟出来的ip地址

客户端用户即是通过访问192.168.0.14VIP这个虚拟地址获得整个由多个物理机服务器组成的服务器池提供的同一种web服务。

下面来模拟客户端用户访问web服务
第一次登陆192.168.0.14

关掉页面重新登陆192.168.0.14

由此发现lvs调度已经开始工作,把客户端的请求均匀的分发到各个服务器上。

2、共享存储数据同步一致性验证
  各节点服务器挂载共享存储的共享目录,修改的内容将在这个服务器集群中同步开。



本文转自 cs312779641 51CTO博客,原文链接:http://blog.51cto.com/chenhao6/1567117

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
5天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
22天前
|
弹性计算 运维 监控
slb后端服务器组(Backend Server Group)关联
阿里云SLB的后端服务器组提供逻辑分组、精细化路由、端口隔离、权重分配与会话保持等功能,便于资源管理、流量控制和故障隔离。通过监听规则、健康检查、标签和API关联,实现灵活的后端资源配置,适应多变的业务需求,确保服务稳定性和资源利用率。
15 1
|
26天前
|
弹性计算 负载均衡 容灾
slb配置后端服务器组
配置阿里云SLB后端服务器组涉及四个主要步骤:创建服务器组、添加ECS实例、关联监听规则和设定负载均衡策略。这使得流量根据业务需求和服务器特性进行转发,便于应用架构的灵活管理和扩展,支持蓝绿部署、灰度发布,并通过多可用区提升系统可用性和容灾能力。
25 3
|
1月前
|
弹性计算 监控 数据可视化
ECS网络流量监控
ECS网络流量监控
44 2
|
7天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
25 0
|
29天前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
161 0
|
25天前
|
Linux Shell 网络安全
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
40 1
|
22天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
37 0
|
25天前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
28 0
|
25天前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
154 1