具体的负载均衡是什么意思,我就不详细说了,网上搜下便有,简单的说就是把接受到的请求按照设定分发到后台集群中不同的服务上。
集群的意思也比较简单,就是多台服务器对外提供一致的功能,在外界看来,就是一个。但在内部,则有很多个相似的服务器。
这里再说一下正向代理和反向代理吧。
正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。
负载均衡和集群的具体配置步骤,我就不再仔细描述,下面我就先说下我在上个公司做的项目使用到的均衡技术,利用到的jsp服务器是tomcat6,前端web反向代理服务器是apache,操作系统为redhat 64位。
图1 系统通用架构设计
图2 项目部署结构图
反向代理方法有很多种,这里我们用的是jk技术,操作步骤如下。
1、apache
编辑apache 配置文件httpd.conf,添加以下
ServerTokens ProductOnly
ServerSignature Off
隐藏apache版本信息
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
其中,mok_jk.so自己从网上下载,我下载的源码,自己编译以适应64位系统,放到lib下面,workers.properties放在conf文件加下,内容如下:
worker.list = controller ,shop, status
worker.jvm0.port=8009
worker.jvm0.host=127.0.0.1
worker.jvm0.type=ajp13
worker.jvm0.lbfactor = 1
worker.jvm1.port=8019
worker.jvm1.host=127.0.0.1
worker.jvm1.type=ajp13
worker.jvm1.lbfactor = 1
worker.jvm10.port=8109
worker.jvm10.host=127.0.0.1
worker.jvm10.type=ajp13
worker.jvm10.lbfactor = 1
worker.jvm12.port=8129
worker.jvm12.host=127.0.0.1
worker.jvm12.type=ajp13
worker.jvm12.lbfactor = 1
worker.controller.type=lb
worker.controller.balanced_workers=jvm0,jvm1
#worker.controller.sticky_session=false
worker.controller.sticky_session_force=0
worker.controller.sticky_session=1
worker.shop.type=lb
worker.shop.balanced_workers=jvm10,jvm12
#worker.shop.sticky_session=false
worker.shop.sticky_session_force=0
worker.shop.sticky_session=1
worker.status.type=status
在浏览器里通过访问/status能够查看jk工作状态
其中 1代表true,0代表false
sticky_session=1表示黏性请求,sticky_session_force=0表示黏性不是强制的。
设置访问日志按天生成文件,设置如下
CustomLog "|/usr/local/apache/httpd/bin/rotatelogs /usr/local/apache/httpd/logs/access_%Y_%m_%d.log 86400 480" common
Include conf/extra/httpd-vhosts.conf
开启虚机,httpd-vhosts.conf内容如下
NameVirtualHost *:80
ServerAdmin [email protected]
DocumentRoot /data/hmfk/usr/www
ServerName www.temp.com
ServerAlias http://www.temp.com
JkMount /*.jsp controller
JkMount /*.action controller
JkMount /select*.html controller
JkMount /email/*.html controller
JkMount /u/*.html controller
JkMount /ad/*.jsp controller
JkMount /ad/*.action controller
JkMount /ad/*.html controller
JkMount /ad/*.htm controller
Order allow,deny
Allow from all
AllowOverride all
Options FollowSymLinks
DirectoryIndex index.jsp
Alias /ad "/data/hmfk/ad/www"
Order allow,deny
Allow from all
AllowOverride all
Options FollowSymLinks
DirectoryIndex loginAdmin.htm
ServerAdmin [email protected]
DocumentRoot /data/zwlsshop/www
ServerName temp2.com
ServerAlias http://temp2.com
JkMount /*.jsp shop
JkMount /*.action shop
Order allow,deny
Allow from all
AllowOverride all
Options FollowSymLinks
DirectoryIndex index.jsp
最后添加下面,能够在浏览器里面访问apache服务状态
ExtendedStatus On
SetHandler server-status
Order Deny,Allow
Allow from all
apache 设置完毕。
2 tomcat
修改tomcat
修改tomcat各个端口,确保tomcat之间端口不冲突。
修改ajp连接端口
修改jvmRoute,确保和apache配置相同。
添加集群功能
至此,apache和tomcat负载均衡和集群配置完毕。