apache + tomcat负载均衡搭建
Posted laosun0204
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache + tomcat负载均衡搭建相关的知识,希望对你有一定的参考价值。
安装jdk:
进入/usr目录下,创建java文件夹,mkdir java,将
用rz命令上传到java目录下,并赋权限chmod 755 jdk-6u45-linux-i586.bin
./jdk-6u45-linux-i586.bin(注意,这个步骤一定要在jdk-6u45-linux-i586.bin所在目录下,就是java目录)
解压完毕后在java目录生成
配置环境变量:
vi /etc/profile,添加如下内容:
LANGUAGE=CN
export language
JAVA_HOME=/usr/java/jdk1.6.0_45
export JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
添加完成后保存并退出,让/etc/profile文件修改后立即生效,可以使用如下命令:source /etc/profile
java -version,看输出的版本,如果能看到版本号证明jdk安装成功
安装apache,编译完成后,通过虚机IP:端口就行访问,如果返回it works,证明apache启动成功(注意apache的工程路径要正确),不加端口号也行,我试过了
上传
到root目录下,此文件是32位的,一定要跟自己操作系统吻合,然后重命名为mod_jk.so,使用如下命令:mv mod_jk-1.2.23-apache-2.2.x-linux-i686.so mod_jk.so
并且赋值777权限,chmod -R 777 mod_jk.so
将mod_jk.so拷贝到apache2/modules:cp mod_jk.so /usr/local/apache2/modules/
在httpd.conf里增加如下内容:
httpd.conf的路径,在/usr/local/apache2/conf下,vi httpd.conf,添加include "/usr/local/apache2/conf/mod_jk.conf",保存并退出,如果存在就不添加
在/usr/local/apache2/conf 路径下新建mod_jk.conf文件,创建文件的命令是:touch mod_jk.conf,然后添加如下内容:
#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定哪些请求交给tomcat处理,"loadbalancer"为在workers.properties里指定的负载分配控制器名
JkLogFile logs/mod_jk.log
#JkLogLevel debug
JkMount /*.do loadbalancer
JkMount /*.jsp loadbalancer
在/usr/local/apache2/conf下新建workers.properties文件:touch workers.properties,并添加如下内容:
worker.list=loadbalancer # 此处与mod_jk.conf中保持一致
worker.worker2.port=8009 # tomcat2中 ajp13 端口号,对应tomcat配置文件server.xml中 # Connector port="8009",默认8009
worker.worker2.host=127.0.0.1(改成虚机ip,已改过) # worker2的地址,本机loaclhost或者127.0.0.1,远程直接写IP
worker.worker2.type=ajp13 # 与worker2中的server.xml的protocol保持一致
worker.worker2.lbfactor=1 # 负载的权重值,越高表示负载越大
worker.worker3.port=9009
worker.worker3.host=127.0.0.1(改成虚机ip,已改过)
worker.worker3.type=ajp13
worker.worker3.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker2,worker3 # 指定负载的worker列表,用逗号分隔
worker.loadbalancer..sticky_session=false # 配置session会话是否为粘性
worker.loadbalancer.sticky_session=1 # 这样负载均衡器lb就会尽量保持一个session,也就是使用户在一次会话中跟同一个Tomcat进行交互
worker.loadbalancer..sticky_session_force=false # 是否启用session共享
安装tomcat:
将
用rz命令上传到root目录下
解压:tar -zxvf apache-tomcat-7.0.41.tar.gz
将解压后生成的文件夹改名为worker2:mv apache-tomcat-7.0.41 worker2
同时拷贝两个tomcat,命名为worker2和worker3
mv apache-tomcat-7.0.41 worker2
cp worker2 worker3 -r
就是安装2个tomcat,worker2和worker3
修改2个tomcat的server.xml,保证2个tomcat的端口号不一致,两个server.xml的位置分别在worker2/conf、worker3/conf目录下
worker2具体配置如下:
图中的四个红框里是需要修改的,但是前三个和安大叔博客的要求是一样的,所以保持不变,最后一个改为了worker2
worker3具体配置如下:
图中的四个红框里是需要修改的
第一个红框8005改为8006(已改过)
第二个红框8080改为8081(已改过)
第三个红框8009改为9009(已改过)
最后一个jvm1改为worker3(已改过)
上传应用程序war包:
用rz命令将分别上传到/root/worker2/webapps和/root/worker3/webapps下,然后在webapps(工程路径)下面会自动生成一个test1文件夹(之前没有,退出webapps目录,在进入webapps目录就会看到test1文件夹)
cd test1
看到先前上传的test1.war文件在test1目录里解压成test.jsp格式,分别编辑/root/worker2/webapps/test1和/root/worker3/webapps/test1里test.jsp的内容,编辑后的内容变成test_worker2(之前的内容是test) 、test_worker3(之前的内容是test)
启用tomcat命令是:在/root/worker2/bin 目录输入./startup.sh
停掉tomcat命令是:在/root/worker2/bin 目录输入./shutdown.sh
同理在worker3也一样的操作
分别启动apache worker2,worker3,用不同的浏览器访问
第一种情况:
http://192.168.2.199:8080(IE9浏览器)
输出结果:
第二种情况:
192.168.2.199:8081(Firefox浏览器)
输出结果:
第三种情况:
(Google浏览器)能访问成功,如下图:
刷新页面显示
反复刷新可以看到两个页面轮询访问两个tomcat,这种方式实现了负载均衡
ps:如果报404错误,就要检查问题出在哪,我历经无数次判断终于锁定了apache在作怪,于是使用ps -ef |grep httpd这个命令,把出来的进程全部杀掉,只保留下面的进程
然后按照下面的步骤重启apache服务,红框里的好像不执行也可以(这个没试过),就会看到想看到的结果了,太不容易了
第四种情况:
停掉tomcat1(worker2)时候,192.168.2.199/test1/test.jsp能访问成功(Firefox浏览器),如下图,反复刷新只能访问tomcat2(worker3)
第五种情况:
停掉tomcat2(worker3),http://192.168.2.199/test1/test.jsp能访问成功(IE9浏览器),如下图,反复刷新只能访问tomcat1(worker2)
综上显示,证明apache + tomcat负载均衡搭建成功
以上是关于apache + tomcat负载均衡搭建的主要内容,如果未能解决你的问题,请参考以下文章