zoukankan      html  css  js  c++  java
  • 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负载均衡搭建成功

  • 相关阅读:
    让小车再飞一会儿 ——记校赛惨痛失败之旅
    排序算法之基数排序
    开博感言
    智能车 SCI实验
    三种算法求解一个数组的子数组最大和
    继续大话考研
    智能车实验室阶段测验之单片机基础
    怎样判断自己掌握了学到的新知识
    排序算法之计数排序
    进程与线程的区别?
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8733283.html
Copyright © 2011-2022 走看看