基于Nginx和Memcache的负载均衡集群架构设计

摘 要 负载均衡(又称为负载分担),就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行.负载均衡是大流量高并发网站需要实现的架构设计,同时对于负载均衡集群架构系统,各服务器间需要共享session信息,Memcache是一个高性能的分布式的内存对象缓存系统,以守护程序方式运行于一个或多个服务器中,随时接收客户端的连接和操作.

【关 键 词 】负载均衡 架构设计 分析

负载均衡(又称为负载分担),就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行.负载均衡是大流量高并发网站需要实现的架构设计,同时对于负载均衡集群架构系统,各服务器间需要共享session信息,Memcache是一个高性能的分布式的内存对象缓存系统,以守护程序方式运行于一个或多个服务器中,随时接收客户端的连接和操作.

下面我介绍一下企业级web应用系统基于Nginx和Memcache的负载均衡集群架构设计的实现方法.

本文共以五台服务器来做负载均衡集群架构设计,服务器清单如表1所示.

服务器A同时提供WEB应用服务及负载均衡转发服务,服务器B同时提供WEB应用服务及memcache缓存服务,memcache缓存系统使服务器A、B、C、D、E可共享使用session.域名.aa.直接解析到服务器A上,由服务器A将用户请求负载均衡到服务器A、B、C、D、E上.

服务器操作系统均为CentOS 6.2版本,安装的软件分别为Nginx 1.2.7、MySQL 5.5.28、PHP 5.3.17,应用程序为采用PHP+MySQL开发,完全相同的应用程序分别放在服务器A、B、C、D、E的/home/root/.aa.目录下.

1.Nginx负载均衡配置

1.1 服务器A的nginx.conf文件配置

通过SecureCRT软件连接服务器A,进入/usr/local/nginx/conf目录,打开nginx.conf,在http段加入以下代码:


upstream .aa. {

server 192.168.101:8080;

server 192.168.102:80 backup;

server 192.168.103:80 weight等于2;

server 192.168.104:80 weight等于2;

server 192.168.105:80 weight等于2;

}

注:1、因为服务器A使用80端口用来监听负载均衡的处理,故对于服务器A不能再使用80端口来处理.aa.的访问请求,否则服务器A转发到自己IP上,然后再进到主服务器负载均衡分配IP阶段,假如一直分配到本机,将会造成一个死循环,因此把服务器A的应用使用8080端口来访问.2、backup表示当其它所有非backup机器繁忙的时候才会将请求转发到这台服务器上.weight代表访问权重,默认为1,当设置为2的时候,表示该台机器的被请求率为默认机器的2倍.

同时修改server段代码如下:

server{

listen 8080;

server_name .aa.;

index index. index. index.php;

root /home/root/.aa.;

location / {

proxy_pass http://.aa.;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

保存后重启nginx服务(service nginx restart).

1.2 服务器B、C、D、E的nginx.conf文件配置

通过SecureCRT软件连接服务器B,进入/usr/local/nginx/conf目录,打开nginx.conf,在http段加入以下代码:

server{

listen 80;

server_name .aa.;

index index. index. index.php;

root /home/root/.aa.;

}

保存后重启nginx服务(service nginx restart),在服务器C、 D、E上做以上同样的配置.

2.Memcache缓存系统安装配置

2.1 下载及安装memcache服务

下载memcache安装文件及服务需要依赖的libevent文件包至服务器B的/root目录下,命令如下:

# wget http://.danga./memcached/dist/memcached-1.2.0.tar.gz

# wget http://.monkey./~provos/libevent-1.2.tar.gz

解压后安装以上两个服务

# tar -zxvf libevent-1.1a.tar.gz # cd libevent-1.1a

# ./configure --prefix等于/usr

# make

# make install

# cd ../

# tar -zxvf memcached-1.1.12.tar.gz

# cd memcached-1.1.12

# ./configure --prefix等于/usr

# make

# make install

2.2 启动memcache守护进程

#/usr/local/bin/memcached -d -m 1024 -l 192.168.1.102 -p 11211 -u root

2.3 配置phi.ini配置文件

为使服务器A、B、C、D、E可共享session,在各服务器上需分别做如下配置:

进入/usr/local/php/etc目录,使用vi命令打开php.ini文件,将session.se_handler和session.se_path的参数配置如下:

session.se_handler 等于 memcache

session.se_path 等于 "tcp://192.168.1.102:11211"

3.负载均衡功能验证

当访问.aa.的时候,为了区分是转向哪台服务器处理,可在服务器A、B、C、D、E的/home/root/.aa.目录下分别上传了一个不同内容的index.php文件,以作区分.

基于Nginx和Memcache的负载均衡集群架构设计参考属性评定
有关论文范文主题研究: 关于服务器的论文例文 大学生适用: 大学毕业论文、自考论文
相关参考文献下载数量: 33 写作解决问题: 如何写
毕业论文开题报告: 论文模板、论文题目 职称论文适用: 核心期刊、职称评中级
所属大学生专业类别: 如何写 论文题目推荐度: 最新题目

打开浏览器访问.aa.,刷新后发现所有的请求根据weight权重的不同而被服务器A分配到了不同的服务器上,实现了负载均衡效果.将正式运行的WEB系统分别上传至服务器A、B、C、D、E的/home/root/.aa.目录下,再次打开浏览器访问.aa.,登陆WEB应用系统,可以发现session信息通过memcache缓存系统可以同步在各服务器上共享使用,memcache缓存系统得到应用.至此,基于Nginx和Memcache的负载均衡集群架构设计功能得以实现.

作者单位

核工业工程研究设计有限公司 北京市 10000