http://blog.jobbole.com/87503/


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

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

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

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

LVS 路由器配置

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

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

 
 
 
 
 

Shell

 
1
2
3
yum groupinstall "Load Balancer"
chkconfig piranha-gui on
chkconfig pulse on

2.配置 WEB 管理的密码

 
 
 
 
 

Shell

 
1
/usr/sbin/piranha-passwd

3.在 iptables 中配置放行端口

 
 
 
 
 

Shell

 
1
2
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3636 -j ACCEPT

4.启动 WEB 管理

 
 
 
 
 

Shell

 
1
service piranha-gui start

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

5.打开报文转发

 
 
 
 
 

Shell

 
1
2
3
4
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
 
sysctl -p /etc/sysctl.conf

6.启动 WEB 服务器

 
 
 
 
 

Shell

 
1
[root@webservers ~] service nginx start

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 对每台服务器进行配置。

 
 
 
 
 

Shell

 
1
service pulse start

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

 
 
 
 
 

Shell

 
1
2
3
4
5
6
7
8
[root@lvsrouter ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.122.10:http wlc
-> 192.168.122.1:http Route 1   0 0
-> 192.168.122.2:http Route 1   0 0
-> 192.168.122.3:http Route 1   0 0

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

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

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

 
 
 
 
 

Shell

 
1
ip addr add 192.168.12.10 dev eth0:1

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

 
 
 
 
 

Shell

 
1
2
vim /etc/rc.local
ip addr add 192.168.12.10 dev eth0:1

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

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

 
 
 
 
 
 

Shell

 
1
2
3
yum -y install arptables_jf
arptables -A IN -d <cluster-ip-address> -j DROP
arptables -A OUT -s <cluster-ip-address> -j mangle --mangle-ip-s <realserver-ip-address>

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

 
 
 
 
 

Shell

 
1
2
service arptables_jf save
chkconfig --level 2345 arptables_jf on

4.测试

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

 
 
 
 
 

Shell

 
1
2
ping 192.168.122.10
arp | grep 192.168.122.10

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

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

 
 
 
 
 

Shell

 
1
2
[root@lvsrouter ~]# watch ipvsadm
[user@outside ~]$ curl http://192.168.122.10/test.txt

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

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

 
 
 
 
 

Shell

 
1
2
3
[root@loadnode1 ~] tsung start
Starting Tsung
"Log directory is: /root/.tsung/log/20120421-1004"

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

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

 
 
 
 
 

Shell

 
1
2
3
yum -y install htop cluster-ssh
cssh node1 node2 node3 ...
htop

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

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

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

 
 
 
 
 

Shell

 
1
2
3
cd /root/.tsung/log/20120421-1004
/usr/lib/tsung/bin/tsung_stats.pl
firefox report.html

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

用 LVS 搭建一个负载均衡集群(转)的更多相关文章

  1. 每秒处理3百万请求的Web集群搭建-用 LVS 搭建一个负载均衡集群

    这篇文章是<打造3百万次请求/秒的高性能服务器集群>系列的第3部分,有关于性能测试工具以及优化WEB服务器部分的内容请参看以前的文章. 本文基于你已经优化好服务器以及网络协议栈的基础之上, ...

  2. lvs搭建dr负载均衡集群

    一,查看本地centos的版本: [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) ...

  3. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  4. Nginx+Tomcat搭建高性能负载均衡集群

    一.       工具   nginx-1.8.0 apache-tomcat-6.0.33 二.    目标   实现高性能负载均衡的Tomcat集群: 三.    步骤   1.首先下载Nginx ...

  5. Nginx+Tomcat搭建高性能负载均衡集群(转)

    转载自:http://blog.csdn.net/wang379275614/article/details/47778201 一.       工具 nginx-1.8.0 apache-tomca ...

  6. Nginx+Tomcat搭建高性能负载均衡集群的实现方法

    一.    目标实现高性能负载均衡的Tomcat集群: 二.步骤 1.首先下载Nginx,要下载稳定版: 2.然后解压两个Tomcat,分别命名为apache-tomcat-6.0.33-1和apac ...

  7. 【转】Nginx+Tomcat搭建高性能负载均衡集群

    最近对负载均衡比较感兴趣,研究了公司的负载均衡的配置,用的是阿里的SLB,相当于不用运维,只需要在后台进行简单的配置就能完成Tomcat的负载均衡,索性在网上找了几篇文章去尝试搭建一个集群,然而很多都 ...

  8. Keepalived+LVS高可用负载均衡集群

    概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...

  9. Nginx+Tomcat搭建高性能负载均衡集群--Windows本地测试版

    链接:http://www.cnblogs.com/wbyp/p/6860744.html

随机推荐

  1. Python使用类

    #coding:utf8 from selenium import webdriverfrom time import sleep class urlpage(object): #创建浏览器对象 de ...

  2. Python函数(五)-高阶函数

    函数接收的参数可以是数字,字符串,列表,元组,字典,集合,也可以是另一个函数,那么这个接收一个函数作为参数的函数就称为高阶函数 # -*- coding:utf-8 -*- __author__ = ...

  3. 第九章 Servlet工作原理解析(待续)

    从 Servlet容器说起 创建 Servlet实例 Servlet体系结构 Servlet如何工作 Servlet中的Listener Filter如何工作 Servlet中的url-pattern

  4. java反射专题一

    一丶Class的理解 /* * Class类是反射的源头 * 创建一个类,通过编译(javac.exe),生成对应的.class文件,之后使用java.exe加载(JVM的类加载器完成的)此.clas ...

  5. CentOS和Ubuntu系统下安装vsftp(助推大数据部署搭建)

    不多说,直接上干货! 同时,声明,我这里安装的vsftp,仅仅只为我的大数据着想,关于网上的复杂安装,那是服务和运维那块.我不多牵扯,也不多赘述. 一.CentOS系统里安装vsftp 第一步:使用y ...

  6. Codeforces #505(div1+div2) D Recovering BST

    题意:给你一个升序的数组,元素之间如果gcd不为1可以建边,让你判断是否可以建成一颗二叉搜索树. 解法:dp,首先建图,然后进行状态转移.因为如果点k左端与i相连,右端与k相连,则i和k可以相连,同时 ...

  7. webfrom 做项目的注意事项

    1.展示细节 如男女显示问题 不能显示true   false  时间转换成中文  民族显示汉字  不能直接显示代码2.用户名重复验证 从数据库中查询验证4.日期判断 判断年份有点问题   var y ...

  8. latex公式怎么变成图片格式

    由于这几天正在复习高中的数学,想写一些博客记录一下,发现数学公式的输入是一个问题,后来知道了latex,去youtube学习了一点入门教程发现挺简单的,不过有一个问题,latex生成的是pdf格式啊, ...

  9. R: 关于 ggplot2 的初探

    生活还很长,别急,慢慢来.亲爱的 require(ggplot2)p1 <- ggplot(mpg, aes(displ, hwy)) + geom_point() ; p1p1 + scale ...

  10. noi.ac day6t3 color

    传送门 分析 将询问离线,枚举右端点.新加入一个右端点i时,假设离i第t近的同色位置为p,t+1近的是q,则当i是右端点时,(q,p]的点可以作为左端点. 注意对于一个点离它第t近的同色点可以用队列维 ...