您的位置:首页 > 运维架构 > 网站架构

可扩展、高可用、负载均衡网站架构设计方案

2010-01-09 13:37 1136 查看
版权声明:
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处
、作者信息和本声明。否则将追究法律责任。/article/4226003.html

可扩展、高可用、负载均衡网站架构设计方案

作者:田逸
(sery@163.com
) 本作品已刊登在《IT实验室周报》第6期第6版



基本需求

:



1、

高可用性:将停止服务时间降低到最低甚至是不间断服务

2、

可扩展性:随着访问的增加,系统具备良好的伸缩能力

3、

可视性:系统、服务的状态处于一个实时的监控之下

4、

高性能高可靠性:经过优化的体系结构及合理的备份策略

5、

安全性:结构上的安全及主机的安全策略

基本思路


1

、对于访问频繁,用户量大的对象(
bbs,blog

)采用某种合理的方式负载到多个服务器上。把数据库独立出来,准备
2


mysql

数据库,以实现主从复制,即减轻负载,又提高了可靠性。更近一步,使用
mysql proxy

技术,实现主从服务器的读写分离,大大提高这个系统的性能和负载能力。

2

、数据库与外部网络隔离,只允许
web

服务器(
bbs,blog

等)通过私有地址方式访问。这样就提高了数据库的安全性,同时也节省了宝贵的带宽。

3

、部署监控系统,通过监控主机存活、服务、主机资源,实时把系统的健康状态置于可视状态,对系统的运营状态心中有数。

4

、备份是想都不用想的事情,使用单独的服务器集中备份,是一个比较不错的主意。

拓扑结构




业务逻辑






技术实现


1

、负载均衡。
2

台同样配置的
linux

服务器,内核支持
lvs,

配置
keepalived

工具,即可实现负载转发。一旦其后的真实服务器出现故障,
keepalived

会自动把故障机器从转发队列删除掉,等到故障修复,它又会自动把真实服务器的地址加入转发列表。由于
lvs

支持会话保持,因此对于
bbs

这样的应用,一点也不用担心其登录丢失。

2


mysql

主从复制。即保证数据的安全,又提高了访问性能。我们在前端的每个
web

服务器上加入
mysql proxy

这个工具,即可期待实现读写的自动分离,让写的操作发生在主数据库,让查询这类读操作发生在从数据库。

3


nagios

是一个开源的,受广泛欢迎的监控平台。它可对主机的存活、系统资源(磁盘空间、负载等)、网络服务进行实时监控。一旦探测到故障,将自动发送邮件(短信)通知故障。

4

、备份。包括
web

数据和数据库服务器的备份。对于
web

服务而言,
GNU tar

即可实现备份的一切愿望。简单的设置一下
crontab

就可以让系统在我们做梦的时刻老老实实的帮我们备份了。但是,由于空间的限制,不可能一直备份下去,所以要做一个合适的策略,以不断的用新的备份去替换陈旧的备份数据;多少天合适?看磁盘容量吧。对于数据库,先
mysqldump

一下,再
tar.

完成这些工作后把备份文件传输到备份服务器集中。一个比较省事的方法是把备份服务器以
NFS

方式挂接到
web

服务器及数据库服务器。

5


web

服务器。至少包括
apache


mysql proxy

这两个组件。
Apache


bbs


blog

的容器,以虚拟机方式把用户的请求转发到
bbs

目录或
blog

目录。

6

、安全措施。包含两层安全,一层是主机本身,另一层是结构(
mysql

从外部网络隔离)。实践证明,
iptables

是一个非常值得信赖的防火墙工具。在实际应用中,采取先关门后开窗的策略,大大增强系统的安全性。

组件


一、


硬件
:

负载均衡
2


(dell 1950),web

服务器
2-3


(dell1950),

数据库
2


(dell 2950),

存储
NAS(5T

格式化后容量
),

备份
4u

服务器
(

带磁盘阵列
5T

容量
),

监控服务器
1


(dell1850).

二、


软件:操作系统
centos 5(

定制安装
)

,负载均衡
ipvsadm


keepalived,

监控
nagios,web

服务
apache+php

等,数据库
mysql,

数据库代理
mysql proxy.

进度安排


1、

lvs

负载均衡配置及测试:
2-3



2、

web

服务器配置:
2-3



3、

mysql

主从服务器配置:
1-3



4、

web

数据迁移:
1



5、

数据库数据迁移:
2



6、

上线测试:
1-2



7、

正式上线:
2



keepalived.conf

! Configuration File for keepalived

global_defs {

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state
master

interface eth0

virtual_router_id 59

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

61.61.61.100

#61.61.61.101

}

}

virtual_server 61.61.61.100 80 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 50

protocol TCP

real_server 61.61.61.102 80 {

weight 100

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 61.61.61.103 80 {

weight 100

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

真实服务器虚拟ip设置脚本

#!/bin/bash

#description : start realserver

VIP=61.61.61.100

./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

本文出自 “sery
” 博客,请务必保留此出处/article/4226003.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐