一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer)。
负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,
客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。
客户程序不受服务器集群的影响不需作任何修改。
系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性。
由于我们的负载调度技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)。
在1998年5月,章博士成立了Linux Virtual Server的自由软件项目,进行Linux服务器集群的开发工作。同时,Linux Virtual Server项目是国内最早出现的自由软件项目之一。
Linux Virtual Server项目的目标
:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
LVS术语:
|
|
注意:这里的RIP,可不是R.I.P
–> 安息吧的意思哦~
在调度器的实现技术中,IP负载均衡技术是效率最高的。
其中关于IP负载均衡技术有三种最关键的技术:VS/NAT
,VS/DR
,VS/TUN
VS/NAT详解
概念:通过网络地址转化的功能,调度器(Director)重写请求报文的目标地址,根据预设的调度算法
,将请求分派给后端的真实服务器(Real Server);真实服务器的响应报文通过调度器时,报文的源地址又被重写,再通过调度器返回给用户,完成整个负载调度过程。
其中Real Server
在发送响应报文之前,需要将Director
的IP地址作为自己的网关,否则可能会出现能接收请求报文,而无法返回响应报文;
拓扑图:
总结:
|
|
配置VS/NAT
准备工作
|
|
1、VS主机操作如下:
[1] 安装ipvsadm管理工具
|
|
[2] 开启核心转发功能(永久生效)
|
|
2、RS两台主机操作如下:(除网页内容不同,其余操作均相同)
[1] 安装nginx
|
|
[2] 添加测试页内容
|
|
[3] 通过VS主机对测试页进行测试检查
|
|
3、VS主机上添加负载均衡集群规则
|
|
4、客户端进行测试
|
|
测试成功,VS/NAT配置完成
VS/DR详解
概念:VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器直接响应返回给客户端。这样大大提高了集群系统的伸缩性,这种方法要求调度器和真实服务器都有一块网卡连在同一物理网段上。
拓扑图:
总结:
|
|
配置VS/DR
实验目标:
|
|
实验准备:
|
|
1、在VS、RS主机上配置网卡别名
[1] VS配置网卡别名:
|
|
[2] 编写脚本、配置RS的网卡别名并不接受arp广播
|
|
2、RS1、2安装nginx以及php-fpm、在VS上配置ipvsadm的dr负载均衡技术,使用rr调度算法
[1] RS操作如下:
|
|
[2] VS操作如下:
|
|
3、RS1与RS2配置nginx对于php-fpm的代理:(两台同样的步骤)
[1] 编辑php-fpm的配置文件:
|
|
[2] 编辑nginx配置文件:
这里最好删除主配置文件内的server
块的配置信息,防止干扰
RS1配置
:
|
|
RS2配置
:
|
|
[3] 创建目录以及php测试页:
|
|
[4] 重启服务,测试Php的测试页是否正常访问:
|
|
4、拷贝wordpress以及discuzx到NFS
的共享目录下并开启NFS
共享
[1] 拷贝程序包到NFS
|
|
[2] 创建单独目录、解压、修改权限:
|
|
[3] 创建共享目录,并启动NFS
服务:
|
|
5、回到RS上挂载NFS
共享的目录(两台RS都要做)
|
|
6、修改RS上nginx虚拟主机配置文件
|
|
7、打开各RS的wordpress以及discuzx的访问网址测试
|
|
8、在任意一台RS上进行对wordpress
配置文件进行修改
|
|
9、在MySQL
主机上创建WordPress和Discuzx的数据库以及用户
[1] 修改MySQL配置文件
|
|
[2] 创建数据库以及用户信息
|
|
现在打开WordPress
和Discuzx
就可以进行设置了
10、配置完成之后,我们对各RS
主机上的php-fpm
的配置文件要进行一下修改
|
|
11、测试
[1] 对于wordpress
上传图片的问题,其实在之前我们修改wordpress和discuzx目录的属主属组就已经实现了,如果还是上传不到的话,执行如下指令:
|
|
[2] 输入网址打开测试:
为了节约时间,实现此次目标就在上一个VS/DR
的实验的基础之上进行操作
实现会话持久连接
1、重新定义负载均衡规则
|
|
2、也可以使用ldirectord
实现,下面我们演示如何配置
使用 ldirectord 实现健康状态检查
1、下载ldirectord
的rpm包并安装
|
|
2、使lvs本机作为sorry server并配置
|
|
3、拷贝ldriectord配置文件模板并修改配置
|
|
4、启动ldirectord
服务,会自动生成ipvsadm
规则
|
|
5、RS1、RS2进行关闭或者启动Nginx服务,在VS上查看ipvsadm -ln 查看状态检查是否应用
|
|
根据其调度时是否考虑各RS当前的负载状态,可分为静态方法和动态方法两种
长连接(开启会话保持)应该考虑负载不均衡的情况,短连接无需考虑
静态方法
- 轮叫(Round Robin)
|
|
- 加权轮叫(Weighted Round Robin)
|
|
- 源地址散列(Source Hashing)
|
|
- 目标地址散列(Destination Hashing)
|
|
动态方法
- 最少链接(Least Connections)
|
|
- 加权最少链接(Weighted Least Connections)
|
|
- 最短预期延时调度(Shortest Expection Delay)
|
|
- 不排队调度(Never Queue)
|
|
注意:SED、NQ会增加调度器的负载
经常使用的调度算法:rr
、wlc
、wrr
本文出自Maxie’s Notes博客,转载请务必保留此出处。