分类: 系统运维
2010-02-09 13:09:28
【IT168 专稿】架构规划和设计好以后(,,,),就需要选择服务商,把设备放入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实战,田逸,
2.基于LVS的互联网应用架设攻略,田逸,
3.Nagios远程监控的安装与配置详解,田逸,http://netsecurity.51cto.com/art/200706/48728.htm
4.分布式文件系统MFS(moosefs)实现存储共享,田逸,
总体拓扑图: