设为首页 收藏本站
查看: 1179|回复: 0

[经验分享] 用 LVS 搭建一个负载均衡集群

[复制链接]

尚未签到

发表于 2019-1-5 07:48:19 | 显示全部楼层 |阅读模式
  这篇文章是《打造3百万次请求/秒的高性能服务器集群》系列的第3部分,有关于性能测试工具以及优化WEB服务器部分的内容请参看以前的文章。
  本文基于你已经优化好服务器以及网络协议栈的基础之上,并使用 iperf 与 netperf 工具测试将服务器已优化到支持 500,000 次/秒的静态WEB页面的性能。
  现在你已经做好足够准备进行安装服务器集群。
  Redhat 官网已经有一些不错的文章,所以我建议你在遇到不明白的问题时查看一下这些文章。不过你先别担心,我接下会一步步地讲解群集搭建的所有操作。
  LVS 路由器配置
  这里需要一台设备作为路由器,它负责将 TCP 流量均衡到 LVS 集群中的每一台服务器。因此你需要拿出一台设备按以下操作进行配置。如果你的 IP 路由的流量非常小的话,你可拿一台性能最比较弱服务器做为路由器。
  1.在 LVS 路由器上安装 LVS 软件
  

yum groupinstall "Load Balancer"  
chkconfig piranha-gui on
  
chkconfig pulse on
  

  2.配置 WEB 管理的密码
  

/usr/sbin/piranha-passwd  

  3.在 iptables 中配置放行端口
  

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

  4.启动 WEB 管理
  

service piranha-gui start  

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

  5.打开报文转发
  

vim /etc/sysctl.conf  
net.ipv4.ip_forward = 1
  

  
sysctl -p /etc/sysctl.conf
  

  6.启动 WEB 服务器
  

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

service pulse start  

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

[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 地址。
  

ip addr add 192.168.12.10 dev eth0:1  

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

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

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

yum -y install arptables_jf  
arptables -A IN -d  -j DROP
  
arptables -A OUT -s  -j mangle --mangle-ip-s
  

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

service arptables_jf save  
chkconfig --level 2345 arptables_jf on
  

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

ping 192.168.122.10  
arp | grep 192.168.122.10
  

  这里可以看到解析到服务器的 MAC 地址,然后在这台服务器上关闭 ARP 响应。
  还有一个简单而有效测试方法就是使用 curl 向集群请求 WEB 页面,你可以在 LVS 路由器上通过命令 ipvsadm 查看到数据流量。
  

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

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

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

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

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


  你可以看到 HTTP 服务器在高速地接收并回应 WEB 请求,整个过程 LVS 路由器实际没有多少负载。
  在实际使用中请确保服务器的 CPU 占所有核的总负责的平均值小于 CPU 的总核数(比如:我的 24 核系统中,我始终保持负载小于等于 23 个核的能力。),这样所有 CPU 即能够充分发挥能力,同时系统又能够具备单一失效时的冗余能力。
  在 Tsung 执行结束之后,可以查看集群服务器压力测试的详细测试报告。
  

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

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




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659466-1-1.html 上篇帖子: Linux集群简介以及lvs 下篇帖子: lvs+keepalive构建负载均衡及服务器集群之三测试高可用LVS负载均衡集群系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表