服务器集群测试文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
服务器集群实现和测试
测试环境:windwos 64位系统
测试内容:Apache服务器做反向代理以实现集群的负载均衡,Tomcat做服务器集群,并用Memcach实现集群内的Session共享
测试工具:Apache2.2,Tomcat7.0.54,memcached 1.4
一.软件准备
首先是下载Apache2.2版本,可以去/download.cgi下载。
注意,该网页上的是下载unix版本的,因此我们需要找到windows版本的下载位置。
依次点击Other files-->binaries-->win32 选择no ssl.msi进行下载。
下载完成之后,安装即可。安装完成之后,可以在系统服务中看到Apache2.2
为了测试是否安装成功,可以在浏览器地址栏输入localhost,看到以下界面,则说明是安装成功了。
接着是下载tomcat,然后将下载的压缩包解压,并复制两份,分别命名为tomcat1和tomcat2,这是作为tomcat集群使用。为了方便配置,可以将其放在与Apache 同一个文件目录下。
使用Tomcat的时候,需要注意的是要配置JAVA环境,要配置JAVA_HOME和CLASSPATH系统环境变量。
二.Apache配置
Apache 2.2集成了mod_jk功能,相对较早版本,不需要再进行繁琐的worker.properties配置,配置过程大幅简化。
首先找到Apache2.2\conf文件夹下的httpd.conf文件,打开并找到
将图中几行代码前面的注释(也就是代码之前的“#”)去掉,作用是使Apache
在启动时自动加载代理(proxy)模块。
继续下拉文档找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释符。
用文本编辑器打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面
加上
这里balancer://是告诉Apache需要进行负载均衡的代理,后面的cluster
是集群名,可以随意取,两个日志引擎ErrorLog负责记录错误,CustomLog负
责记录所有的http访问以及返回状态,日志名可以自己取,这里取为lbtest。httpd-vhosts.conf配置完毕,回到httpd.conf,在文档最下面加上
ProxyRequests Off 是告诉Apache需要使用反向代理(利用Apache进行负载均衡必须使用反向代理), 用于配置工作在tomcat集群中的所有节点,这里的"cluster"必须与上面的集群名保持一致。
Apache通过ajp协议与tomcat进行通信,ip地址和端口唯一确定了tomcat 节点和配置的ajp接受端口。loadfactor 是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。route参数对应后续tomcat配置中的引擎路径jvmRoute。
至此,Apache的配置完成。
三.Tomcat配置
之前在文件夹已经新建了两个Tomcat服务器,保持tomcat1的配置不变,找到tomcat2目录下conf文件夹下的server.xml文件,打开并修改如下三个端口:
这是关闭端口,默认值为8005
这是侦听端口,默认值为8080
这是tomcat接收从Apache过来的ajp连接请求时使用的端口,默认值为8009
因为我们需要在一台电脑上部署两台服务器,为了避免端口冲突,所以修改服务器端口是必要的。如果服务器安装在两台不同的电脑上,则可以不修改端口号。
端口配置完毕后,需要配置route参数。打开tomcat1/conf/server.xml文件,找到
在
jvmRoute赋值为jvm1。同样的将tomcat2中jvnRoute参数赋值为jvm2。做这个修改则是为了实现负载均衡。
接下来,我们分别在两个tomcat里的webapps文件里新建一个news文件夹,并在里面新建index.jsp文件。编写测试代码如下:
分别重启Apache,tomcat1和tomcat2,然后在浏览器地址栏输入
http://localhost/news/index.jsp。会看到如下页面:
再次刷新页面,则会看到:
这里我们可以看到两点:
1.每次刷新页面,页面中的一串session id都会改变。因为是两台服务
器在处理请求。
2.每次刷新页面,jvm1和jvm2交替出现。事实上,jvm1和jvm2正是
我们刚才配置的集群里的两台服务器。之所以会交替出现,是因为在
Apache配置负载均衡时,我们将比例其配置为1:1,此项可在Apache
中修改。
三.Session共享
作为一个服务器集群,没有session共享显然是不行的。试想一个用户登录后,向服务器重新发送一个请求,这时若没有session共享,那么则需要一只重复登录。对于用户而言,体验会很差;而对于服务器而言,数据访问的压力会很大。此次测试,我采用了两种session共享的办法:
1.利用tomcat里自带的session复制功能,它配置简单。是以组播的方式
向集群中所有的服务器复制session。即session一旦改变,则会向急群众其他的服务器发送新的session。这样很容易会引起广播风暴。