服务器 频道

高可用负载均衡非常好的实践五:总体实现

  【IT168 专稿】架构规划和设计好以后(1234),就需要选择服务商,把设备放入idc机房,连接线缆,准备测试,无误后上线运行。

  一、选择服务商及硬件上架

  由于特殊的原因,中国的网络形成了划江而治的格局,这导致南北互联很大的问题,即网通和电信互访效果极差,要达到南北用户都能快速的访问网站,得使用第三方的idc机房。第三方的idc机房有两种可选,一种是双线机房,另一种是BGP机房。这两种机房相比较,BGP效果非常好的,但价格最贵,可根据自己的资金预算和性能要求来权衡使用哪一类机房。另外在选定前先测试一下机房的网络状况,同时了解其电力供应,空调设施已经服务器堆放密度,最好观察一下是否有知名的网站也放置在这里?

  托管上选定以后,就要放置设备,接上电源、网线等线缆进行物理连接,为开机运行做好准备,如果有必要,则需要对交换机作一些设置。原则上是不需设置则不设置,保持简单化总是对的。

  在本方案中,我们采用了短信报警的机制,监控服务器本身并不发送短信的能力,因此需要选择短信服务商,购买其服务,然后通过接口程序来实现发送报警短信的功能。

  二、安装操作系统及部署相关软件

  除了负载均衡器而外,其他两层的底层操作系统可以是任何一种类unix环境。理论上,负载均衡器也可以是其他类型的unix,如freebsd,但这些系统都不能linux来得方便,因为lvs已经集成在各个linux的发行版里了,不需要额外的处理,就可以实现lvs的转发(主要内核模块是ip_vs)。本方案以开源为宗旨,并且考虑以节省成本,因此所有服务器都安装和运行centos5。

  1、负载均衡层的软件部署

  负载均衡层要实现负载均衡、故障隔离、失败切换(负载均衡器之间failover)这3个功能,需要ipvsadm和keepalived这个两个工具紧密配合来实现。Ipvsadm是lvs的核心,由它完成负载均衡和包转发,但它本身没有故障隔离和失败切换的机制。在其他人实施的一些项目里,有采用heartbeat这样的工具来实现故障隔离和失败切换。但heartbeat太复杂了-要写ipvsadm脚本、要写资源文件、要安装ldirectord等等。现在我们采用keepalived这个工具,只需要一个配置文件,即可轻松实现故障隔离、失败切换。

  Lvs即可在安装系统是选择安装,也可在系统安装完成后下载ipvsadm源码进行安装。当按需求配置好 keepalived以后,运行keepalived 后,将能够查看到lvs的内核模块ip_vs已经被加载。

  负载均衡器采用DR(直接路由)模式进行包转发,这种方式可获得最大的网络吞吐能力。在DR模式下,负载均衡器与后面的真实服务器(即本方案中应用服务器层)使用一个公用的ip地址,称为vip(virtual ip)。

  2、 应用层软件部署

  应用层涉及的软件比较多,它主要包括apache、php、mysql 客户端、分布式文件系统客户端、lvs客户端等几个部分。看起来类别比较多,但只要配置好一个服务器以后,然后复制这个过程即可。这是因为负载均衡服务器之间存在配置一致性的特点。

  安装步骤:

  1、 安装apache,php,mysql客户端,并整合apache与php。

  2、 安装分布式文件系统moosefs,接着挂接共享存储。

  3、 编写lvs客户端脚本,并赋予执行权限。脚本的内容大致如下:

  [root@tj-pp3 conf]# more /usr/local/bin/lvs_real

  #!/bin/bash

  #description : start realserver

  VIP=61.135.22.101

  /etc/rc.d/init.d/functions

  case "$1" in

  start)

  echo " start LVS of REALServer"

  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  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

  ;;

  stop)

  /sbin/ifconfig lo:0 down

  echo "close LVS Directorserver"

  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

  echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

  echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

  ;;

  *)

  echo "Usage: $0 {start|stop}"

  exit 1

  esac

  4、 安装和配置Nagios 远程执行插件(Nagios Remote Plug Execute)。

  5、 复制程序开发人员编写的程序到apache设定的站点的根文档目录,检查apache语法,无误后启动apache。

  6、 执行lvs客户端脚本,运行 ip add检查其正确性。

  7、 启动NRPE,并测试其正确性。

  8、 总体检查其正确性。

  3、数据库及分布式文件系统部署

  数据库分主从两个部分,主从数据库的安装方法是相同的,只要稍微改一下从服务器的选项文件,就能实现主从服务器之间的数据同步。为了更进一步保证数据安全性,可以写一个脚本,自动执行一个全数据备份。

  分布式文件系统moosefs的原数据服务器和数据存储服务器的安装方法也是相同的,不同的地方在于启动命令和其关联的配置文件。存储服务器之间的配置(只软件及配置文件)是相同的,因此只要配置好其中的一个后,把这个配置文件复制到其它服务器相同的路径即可。

  为了实现nagios的有效监控,需要在数据库系统和分布式文件系统安装和配置nrpe。

  三、测试

  测试过程包括功能测试和性能测试。

  功能测试是逐个测试3层结构中各部分的功能是否正常,然后再模拟用户行为访问站点,看总体功能是否实现。例如,在浏览器中输入网站域名(通过dns把网站域名指向LVS的vip地址),然后注册用户,成功后用这个功能登陆,看一切是否正常。

  性能测试就是进行一些破坏性测试或者模拟大量用户进行访问。在这里,最主要的是破坏性测试。在3层结构中,通过逐层逐个启停服务甚至服务器,看用户访问是否正常。如停掉主负载均衡器,观察辅助负载均衡器能否自动接管转发服务;主负载均衡器恢复,转发能不能再回到原来的状态。

  性能测试过程:

  1、 负载均衡器启停测试,主要目的在于其失败切换failover功能。前文描述过,不再说明。

  2、 应用服务器启停测试,主要目的在于其故障隔离功能。当停掉一个web服务时,用户访问是否正常,再停掉一个web服务,情况有怎样?

  3、 分布式文件系统测试。停止其中的一个数据存储服务,观察从浏览器访问网站是否受影响。再停止一个数据存储服务器,情况又会如何?

  4、 数据库测试。关闭从数据库,观察从浏览器访问网站是否受影响。再启动辅助服务器,看数据同步是否能再进行。

  5、 做上述测试时,监控系统是否发送报警信息?

  四、加固和平台运行

  加固主要是在系统安全性方面考虑。目前出于商业利益方面的原因,ddos攻击相当的流行。要防范ddos攻击,单靠主机本身的防火墙如iptables或传统的硬件防火墙,基本没效果。如果预算充足一点(其实前面的设计已经节省了大笔费用),买个防ddos流量攻击的硬件设备部署在网络的前端,可以有效地抵挡大部分非法访问和攻击。

  当一切准备就绪,就可以正式上线,通知用户可以使用本网站了。

  附录

  主要参考资料

  1. 开源监控利器nagios实战,田逸,http://net.it168.com/a2009/0309/267/000000267878.shtml

  2.基于LVS的互联网应用架设攻略,田逸,http://server.it168.com/server/2007-12-11/200712110855723.shtml

  3.Nagios远程监控软件的安装与配置详解,田逸,http://netsecurity.51cto.com/art/200706/48728.htm

  4.分布式文件系统MFS(moosefs)实现存储共享,田逸,http://net.it168.com/a2009/0403/270/000000270867.shtml

  总体拓扑图:

 

0
相关文章