多站点web应用平台搭建

Document and test By zhang qing hua,xanderzhang@live.com
qq group:4733369

说明
多站点是高并发情况下,负载均衡的一种实现方案。通过将静态文件和动态请求, 各种资源的有效分离,实现均衡的目的 。从而达到提升网站性能的目的。

实现方案:

DNS 服务器负责网内的域管理。

当请求到来时,web服务器解析请求格式,请静态文件【image,css,pdf等】直接转到静态文件服务器。

动态的资源请求有其他服务器处理。

当创建静态资源时 ,动态请求域内的主机,将静态资源通过nfs挂载的目录,存至静态文件服务器 。静态文件服务器对处理动态请求域的主机是透明的 。

具体平台搭建方法
以下应用服务器均基于 ubuntu sever 8.10

DNS server 的搭建
Bind9简介

BIND(Berkeley Internet Name Domain) 是Domain Name System协议的一个实现 ,提供了dns主要功能的开放实现 ,包括:

域名服务器

Dns解析库函数

Dns服务器运行调试所用的工具

主页: www.isc.org


安装方法:


首先 更新系统 sudo apt-get update [也可以不更新]

安装 bind9 sudo apt-get install bind9

执行以上命令 , apt包管理器会 将bind9相关的工具包安装 ,包括dnsutils

假设以上均成功 ,测试 dns server 默认的53号端口:

telnet localhost 53


bind 的配置文件 在 ubuntu上的位置是 :/etc/bind



执行 ls –al /etc/bind ,会有一些 named.conf db 开头的文件 。

其中首要文件 是named.conf ,这个是bind9 的配置文件,其中包含了 named.conf.local 文件。 named.conf.local 是就是我们使用的文件:

Sudo vim named.conf.local

将下面的字串输入 named.conf.local :

zone “enjoytalk.org” {

type master ;

file “/etc/bind/db.enjoytalk.org”;

}


zone “0.168.192.in-addr.arpa” {

type master; // 定义此区为主服务器

file “/etc/bind/db.0.168.192”; //指定资源文件的位置

}


以上字段的详细含义请查看isc.org上的文档。


下面 实现 以上定义的两个区的 正向资源文件 和 反向资源文件 。正向资源文件用于解析 从域名 到 ip的映射 。反向文件 用户 ip到域名的映射。


在 /etc/bind 下 创建两个文件如下:

Sudo touch db.enjoytalk.org db.0.168.192

执行以下命令 ,编辑 db.enjoytalk.org

Sudo vim db.enjoytalk.org

输入以下内容【括号里面的数据不要改动】:

; db.enjoytalk.org

;

$TTL 604800

@ IN SOA enjoytalk.org. root.enjoytalk.org. (

2009070701;Seril

604800;Refresh

86400;Retry

2419200;Expire

604800

); Negative Catche TTL

//DNS 主机配置在14号主机上

@ IN NS ns

@ IN A 192.168.0.14

ns IN A 192.168.0.14


//添加 A 记录

www IN A 192.168.0.2

images IN A 192.168.0.14

course IN A 192.168.0.2

user IN A 192.168.0.2


【对 192.168.0.2 和 192.168.0.14 主机的说明:

192.168.0.2 存放动态请求, course.enjoytalk.org ,user.enjoytalk.org等

192.168.0.14 存放静态文件 images.enjoytalk.org】


下面编辑反向文件 :sudo vim db.0.168.192


@ IN SOA enjoytalk.org. root.enjoytalk.org. (

2009070701;Seril

604800;Refresh

86400;Retry

2419200;Expire

604800

);Negative Catche TTL


// 添加对应的反向记录 【A记录 ,ns记录,mx记录等】


@ IN ns enjoytalk.org.

2 IN PTR www.enjoytalk.org.

14 IN PTR images.enjoytalk.org.

2 IN PTR course.enjoytalk.org.

2 IN PTR user.enjoytalk.org


推出保存 并测试


需要注意的地方:

如果不知道 dns里面的一些专业术语,请网上查看 。

指向 根 的域名 后面有个 “.” ,也就是 enjoytalk.org. 这个点号 代码域内的当前目录

@ 等价于 enjoytalk.org. 也就是指向域内的顶级目录

如果需要添加 user.enjoytalk.org 仅需修改以上两个文件 添加其对应的记录即可。


测试:

输入 nslookup

进入 输入状态 , 输入 www.enjoytalk.org 查看返回结果




Lighttpd的搭建
详细搭建过程 请参考 之前发的web server 配置文档。

下面只写 与 多站点相关的 lighttpd的配置。

配置 主要配置文件:

执行命令: cd /etc/lighttpd

找到以下行, 并修改为:

server.document-root = "/var/www/enjoytalk_index/public/"

以上配置会 将/var/www/enjoytalk_index/public/ 工程配置为 lighttpd 的文档根目录


确保端口为80

server.port = 80


其他的配置 按之前的配置即可 。


配置运行rails 应用的 fastcgi:

执行 命令 : cd /etc/lighttpd

进入 目录 : cd conf-enabled , 此目录下 包含 正在使用的 lighttpd 的模块 ,包括fastcgi .


执行 命令: sudo vim 10-fastcgi.conf


添加以下内容 【经过测试】


$HTTP["host"] == "www.enjoytalk.org" {

server.document-root = "/var/www/enjoytalk_index/public/"

server.error-handler-404 = "/dispatch.fcgi"

fastcgi.server = (

".fcgi" =>(

"www.enjoytalk.org" => (

"min-procs" => 1,

"max-procs" => 5,

"socket" => "/var/www/enjoytalk_index/tmp/sockets/rails-fcgi.socket",

"bin-path" => "/var/www/enjoytalk_index/public/dispatch.fcgi",

"bin-environment" => ("RAILS_ENV" => "development")

)

)

)



}

以上 内容 会生成 针对 enjoytalk_index工程的5个ruby cgi进程 ,用于轮流执行用于请求。max-procs 这些参数 可以根据实际需要设定。


添加 course 站点的处理进程配置:


$HTTP["host"] == "course.enjoytalk.org" {

server.document-root = "/var/www/enjoytalk_course/public/"

server.error-handler-404 = "/dispatch.fcgi"

fastcgi.server = (

".fcgi" =>(

"course.enjoytalk.org" => (

"min-procs" => 1,

"max-procs" => 5,

"socket" => "/var/www/enjoytalk_course/tmp/sockets/rails-fcgi.socket",

"bin-path" => "/var/www/enjoytalk_course/public/dispatch.fcgi",

"bin-environment" => ("RAILS_ENV" => "development")

)

)

)

}



添加 user 站点的处理进程:


$HTTP["host"] == "user.enjoytalk.org" {

server.document-root = "/var/www/enjoytalk_user/public/"

server.error-handler-404 = "/dispatch.fcgi"

fastcgi.server = (

".fcgi" =>(

"user.enjoytalk.org" => (

"min-procs" => 1,

"max-procs" => 5,

"socket" => "/var/www/enjoytalk_user/tmp/sockets/rails-fcgi.socket",

"bin-path" => "/var/www/enjoytalk_user/public/dispatch.fcgi",

"bin-environment" => ("RAILS_ENV" => "development")

)

)

)

}


在产品模式下 ,修改环境变量为 production 即可 。

以上配置完毕, 测试:


查看 80 端口:telnet localhost 80


或者 直接查看 生成的进程:


执行命令: ps aux , 进程列表中会产生15个类似的进程:

按照 fastcgi的运行原理, 这个15个进程会一直驻守后台。

www-data 13986 0.0 1.1 26552 23728 ? S 10:51 0:01 /usr/bin/ruby1.8 /var/www/enjoytalk_index/public/dispatch.fcgi

NFS平台的搭建
首先 安装 nfs 的服务器

执行以下命令: sudo apt-get install nfs-kernel-server

以上命令 会将 nfs 相关的软件 , 全部安装, 包括客户端 nfs-common , portmap ,如果没有 portmap ,需要 重新安装: sudo apt-get install portmap 。


执行以下命令 : sudo dpkg-reconfigure portmap , 会产生一个命令行界面,

选择 no 即可。


配置挂载权限,


添加以下内容:

/var/www/images 192.168.0.2(rw,sync,no_root_squash)


查看服务器上 可挂在的 nfs 目录:


Showmount –e


进入 需要挂在nfs目录的机器 ,我这是 192.168.0.2 , 首先安装 nfs客户端 ,nfs-common。


执行 一下命令: sudo mount -o nolock 192.168.0.14:/var/www/images /var/www/enjoytalk_index/public/images


这样 , 192.168.0.14 上的图片目录被挂到了 2上 ,当访问14的图片地址时 ,通过访问域 images.enjoytalk.org/a.jpg , 就可以找到图片对应的地址 。



至此 多站点架构的站点平台基本搭建完毕 ,如需添加新站点 ,或者 需要分离静态文件,只有挂载一个 静态目录即可 。静态文件会被 静态文件服务器解析 ,并返回相应资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值