用 LVS 搭建一个负载均衡集群


这篇文章是《打造3百万次请求/秒的高性能服务器集群》系列的第3部分,有关于性能测试工具以及优化WEB服务器部分的内容请参看以前的文章。

本文基于你已经优化好服务器以及网络协议栈的基础之上,并使用 iperfnetperf 工具测试将服务器已优化到支持 500,000 次/秒的静态WEB页面的性能。

现在你已经做好足够准备进行安装服务器集群。

Redhat 官网已经有一些不错的文章,所以我建议你在遇到不明白的问题时查看一下这些文章。不过你先别担心,我接下会一步步地讲解群集搭建的所有操作。

LVS 路由器配置

这里需要一台设备作为路由器,它负责将 TCP 流量均衡到 LVS 集群中的每一台服务器。因此你需要拿出一台设备按以下操作进行配置。如果你的 IP 路由的流量非常小的话,你可拿一台性能最比较弱服务器做为路由器。

1.在 LVS 路由器上安装 LVS 软件

2.配置 WEB 管理的密码

3.在 iptables 中配置放行端口

4.启动 WEB 管理

-> 一定要等到 Piranha 配置结束之后再开启 pulse 。

5.打开报文转发

6.启动 WEB 服务器

Direct Routing 模式配置

1.在 LVS 路由器上登录 Piranha WEB 管理界面进行配置。

在 GLOBAL SETTINGS 页中查看,默认采用是 Direct Routing 模式,我们需要通过这个页面下的功能进行配置 LVS WEB 集群服务器的虚拟 IP 地址(Virtual IP)。

2.选择 VIRTUAL SERVERS 标签页,创建虚拟 WEB 服务器, 这里的服务器就是你的 WEB 服务器集群。通过这个配置可以让你有多台服务器对外像是一台服务器,因此又被称作虚拟服务器(virtual server)。

点击 ADD,然后点 EDIT。

3.编辑虚拟服务器,首先选择一个 IP 地址作为 Virtual IP(IP 不作为真实服务器使用),然后选择一个设备接口(Device)进行绑定。

点击 ACCEPT 完成配置,这个时候 WEB 页面并不会刷新,不过此时配置已经保存完毕。

点击 REAL SERVER 进行下一步真实服务器配置。

4.配置真实服务器,REAL SERVER 页面用于配置 WEB 集群所对应的真实服务器。

用 ADD 将所有的 HTTP 服务器添加进来,然后用 EDIT 进行服务器的详细配置,之后点 ACCEPT 进行保存。

如果需要重新配置集群,先点 VIRTUAL SERVER 之后重新配置 REAL SERVER。

在 REAL SERVER 页配置完所有的真实服务器之后,依次选择每一行后点击 (DE)ACTIVATE 进行激活。

5.至此,所有的真实服务器配置并激活完毕,下接下来回到 VIRTUAL SERVERS 页

点 (DE)ACTIVATE 激活虚拟服务器。

到此为止路由器配置完毕,现在你可以关闭并退出浏览器,接下来要打开 pulse 对每台服务器进行配置。

输入 ipvsadm 可以看到集群已经正常启动。

Direct Routing – 配置每台真实服务器节点

在集群中的每台服务器上按以下步骤进行配置。

1.为真实服务器配置虚拟 IP 地址。

由于我们希望 IP 地址配置在服务器重启之后也能生效,因此需要将配置写入 /etc/rc.local 文件中。

2.在真实服务器上为虚拟 IP 配置 ARP 表项。

这里要关闭所有真实服务器对虚拟 IP 地址的 ARP 请求的响应,这些服务器只响应物理 IP 地址的ARP请求,在整个集群系统中,仅有 LVS 路由器才能响应虚拟 IP 地址的ARP请求。

3.在真实服务器上配置完毕之后,保存 ARP 表项配置。

4.测试

如果 arptables 命令配置正确,只有 LVS 路由器才会应答 Ping 请求。首先确保 pulse 已关闭,之后从群集的任一真实服务器上 ping 虚拟 IP 地址,如果有真实服务器回应这个请求,你可以通过查看 ARP 表项看到它。

这里可以看到解析到服务器的 MAC 地址,然后在这台服务器上关闭 ARP 响应。

还有一个简单而有效测试方法就是使用 curl 向集群请求 WEB 页面,你可以在 LVS 路由器上通过命令 ipvsadm 查看到数据流量。

使用 Tsung 对集群进行性能测试

到此为此集群服务器已经配置完毕并工作正常,这时你可以通过压力测试看到它的性能是多么的强大。参考一下这篇文章对 Tsung 进行配置并生成有效的数据流对集群进行测试。

建议测试至少进行 2 个小时以上,因为测试需要经过比较长的时间才能看到 HTTP 的峰值请求速率。在整个测试过程中你可以在集群服务器上通过 htop 命令看到每个 CPU 核的率用率。

这里假设你已经安装好了 EPEL 和 RPMforge 源。

你可以看到 HTTP 服务器在高速地接收并回应 WEB 请求,整个过程 LVS 路由器实际没有多少负载。

在实际使用中请确保服务器的 CPU 占所有核的总负责的平均值小于 CPU 的总核数(比如:我的 24 核系统中,我始终保持负载小于等于 23 个核的能力。),这样所有 CPU 即能够充分发挥能力,同时系统又能够具备单一失效时的冗余能力。

在 Tsung 执行结束之后,可以查看集群服务器压力测试的详细测试报告。

译者注:LVS 主创人为阿里云 CTO 章文嵩博士,是我朝人民长脸作之一,其在服务器群集中应用广泛,相比于 M$ 的 NLB 群集技术而言更为强大,文中的 DR 模式使用通用服务器做为流量均衡设备,性能相对较弱,在实际高性能群集应用中,通常采用具备三层 ECMP 路由硬件能力的交换机或专用负载均衡硬件设备,在不需要复杂流量均衡策略(如:基于应用的均衡)的群集中,使用交换机性价比较高。


1 8 收藏 评论

关于作者:Alick

这个码农很懒,啥也没有留下. 个人主页 · 我的文章 · 29 ·  

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部