服务器 频道

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

  【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。

0
相关文章