成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

apache+3tomcat+jk+memcached集群環(huán)境搭建

youkede / 3533人閱讀

摘要:使用解決多集群時同步問題所需包安裝過程下載將二進(jìn)制安裝文件,賦予可執(zhí)行權(quán)限可不必為整個環(huán)境設(shè)置,在中指定即可。啟動兩個節(jié)點,端口分別為如果開啟了防火墻,需要加入端口的允許規(guī)則。再次配置加入包將這些包加入下。

注意本文不討論原理,只講述具體的搭建過程,而且步驟都經(jīng)過了整理,否則過程可能會出現(xiàn)其他異常,請自行g(shù)oogle。apache與tomcat整合的方式除了jk之外,使用apache自帶的mod_ajp_proxy模塊也可以很方便的完成。
先來看一下架構(gòu)圖:

屬于正式環(huán)境中原session復(fù)制方案的改進(jìn)。

1. 所需軟件包
jrrt-3.1.2-1.6.0-linux-x64.bin(或jdk1.6.0_33)   jvm
httpd-2.2.26.tar.gz                              web服務(wù)器,處理靜態(tài)資源
apache-tomcat-6.0.32.tar.gz                      應(yīng)用服務(wù)器,Servlet容器處理動態(tài)請求
tomcat-connectors-1.2.30-src.tar.gz              apache與tomcat整合插件mod_jk.so
tomcat-native.tar.gz                             APR加速tomcat,提高線程并發(fā)能力。使用tomcat自帶版本。
memcached-session-manager                        使用msm解決多tomcat集群時session同步問題所需jar包
    asm-3.2.jar, couchbase-client-1.2.2.jar, 
    kryo-1.04.jar, kryo-serializers-0.11.jar
    msm-kryo-serializer-1.6.5.jar
    memcached-session-manager-1.6.5.jar
    memcached-session-manager-tc6-1.6.5.jar
    minlog-1.2.jar, reflectasm-1.01.jar
    spymemcached-2.10.2.jar
2. 安裝過程 2.1 JDK

下載將JRockit二進(jìn)制安裝文件,賦予可執(zhí)行權(quán)限

# pwd
/apps/test/java
# chmod o+x jrrt*.bin
# ./jrrt-3.1.2-1.6.0-linux-x64.bin

可不必為整個linux環(huán)境設(shè)置JAVA_HOME="/apps/test/java/jrrt-3.1.2-1.6.0",在tomcat中指定即可。

2.2 編譯安裝apache

因為tomcat-native依賴于apr,所以這里先直接從 httpd-2.2.26/srclib 目錄下安裝apache自帶的aprapr-util。

[root@cachets httpd-2.2.26]# pwd
/apps/test/soft_src/httpd-2.2.26
[root@test httpd-2.2.26]# cd srclib/apr
[root@test apr]# ./configure --prefix=/usr/local/apr
[root@test apr]# make && make install
[root@test apr]# cd ../apr-util/
[root@test apr-util]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@test apr-util]# make && make install

建議將srclib下的pcre也裝上,主要是考慮后面轉(zhuǎn)發(fā)請求時可能要使用地址rewrite,需要正則語法的支持。默認(rèn)CentOS6.x已經(jīng)安裝了這個庫。

安裝apache:

[root@test httpd-2.2.26]# ./configure --prefix=/apps/test/apache2 --enable-mods-shared=all --enable-modules=so --enable-rewrite --enable-deflate --with-mpm=worker --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
[root@test httpd-2.2.26]# make && make install
2.3 安裝tomcat

解壓apache-tomcat-6.0.32.tar.gz拷貝至/app/test/tomcat0,不建議使用root用戶管理tomcat.

[test@cachets soft_src]$ tar -zxvf apache-tomcat-6.0.32.tar.gz
[test@cachets soft_src]$ cp -a apache-tomcat-6.0.32 /app/crm/tomcat0

// 安裝tomcat-native(不用多帶帶下載,在tomcat的bin目錄中自帶)
# yum install -y openssl-devel apr-devel
[root@cachets ~]# cd /app/test/soft_src/apache-tomcat-6.0.32/bin
[root@cachets bin]# tar -zxvf tomcat-native.tar.gz
[root@cachets bin]# cd tomcat-native-1.1.20-src/jni/native/
[root@cachets native]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-ssl --with-java-home=/apps/test/java/jrrt-3.1.2-1.6.0
[root@cachets native]# make && make install

配置tomcat:

tomcat默認(rèn)參數(shù)是為開發(fā)環(huán)境制定,而非適合生產(chǎn)環(huán)境,尤其是內(nèi)存和線程的配置,默認(rèn)都很低,容易成為性能瓶頸。下面是一些配置示例,需要根據(jù)實際需要更改。

[crm@cachets tomcat0]$ vi bin/setenv.sh
JAVA_OPTS="-XX:PermSize=128M -XX:MaxPermSize=256M -Xms1536M -Xmx2048M -verbosegc "
CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.10.100"
JAVA_HOME="/apps/test/java/jrrt-3.1.2-1.6.0"
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"
[crm@cachets tomcat0]$ chmod 755 bin/setenv.sh

bin目錄下新建的可執(zhí)行文件setenv.sh會由tomcat自動調(diào)用。上面的jmxremote.authenticate在正式環(huán)境中請務(wù)必設(shè)為true并設(shè)置用戶名/密碼,減少安全隱患,或者注釋掉CATALINA_OPTS。(有時候出于性能調(diào)優(yōu)的目的,才需要設(shè)置JMX)。對于具體的連接協(xié)議有不同的優(yōu)化屬性,參考如下:
對HTTP:


對AJP:


2.4 安裝jk
[crm@test soft_src]$ tar -zxvf tomcat-connectors-1.2.30-src.tar.gz
[crm@test soft_src]$ cd tomcat-connectors-1.2.30-src/native
[root@test native]# ./configure --with-apxs=/apps/test/apache2/bin/apxs
[root@test native]# make && make install

此時可以看到在/apps/test/apache2/modules下有mod_jk.so文件,用于連接apache與tomcat。

2.5 配置(集群)負(fù)載均衡選項 2.5.1 apache

建立配置文件httpd-jk.conf

[root@cachets ~]# cd /app/test/
[root@cachets crm]# vi apache2/conf/extra/httpd-jk.conf
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# 指定保存了worker相關(guān)工作屬性定義的配置文件
JkWorkersFile conf/extra/workers.properties
# Specify jk log file
JkLogFile /app/test/apache2/logs/mod_jk.log
# Specify jk log level [debug/error/info]
JkLogLevel info
#指定哪些請求交給tomcat處理,"controller"為在workers.properties里指定的負(fù)載分配控制器名

JkMount /servlet/* controller
JkMount /*.jsp controller
JkMount /*.do controller

// 在conf/httpd.conf最后加上
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-jk.conf

建立工作文件workers.properties

[root@cachets crm]# vi apache2/conf/extra/workers.properties
# servers
worker.list=controller
# ====== tomcat0 =======
worker.tomcat0.port=8009
worker.tomcat0.host=192.168.10.100
worker.tomcat0.type=ajp13
worker.tomcat0.lbfactor=1
# ====== tomcat1 =======
worker.tomcat1.port=8109
worker.tomcat1.host=192.168.10.100
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
# ====== tomcat2 =======
worker.tomcat2.port=8209
worker.tomcat2.host=192.168.10.100
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
# ====== controller ====
worker.controller.type=lb
worker.controller.balance_workers=tomcat0,tomcat1,tomcat2
worker.controller.sticky_session = 1

以上是3個tomcat的做負(fù)載均衡的情況,負(fù)載因子lbfactor都為1,session為sticky模式,apache與tomcat連接的協(xié)議采用AJP/1.3,同一臺服務(wù)器上通過端口來區(qū)分tomcat0/tomcat1/tomcat2。

2.5.2 tomcat

tomcat0/conf/server.xml中加入jvmRoute屬性,這個屬性與上面的workers.properties的worker相同:


設(shè)置測試應(yīng)用的訪問路徑,在tomcat0/conf/server.xml節(jié)點下添加如下:


2.5.3 app-TEST

為了看到負(fù)載均衡的效果,在/apps/test/testapp/TEST目錄下建立測試頁面test.jsp:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
Cluster App Test

Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%> <% out.println("
ID " + session.getId()+"
"); // 如果有新的 Session 屬性設(shè)置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.println("Session 列表
"); System.out.println("============================"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"
"); System.out.println( name + " = " + value); } %>
CRM
名稱:
值:

到這里還差一步就可以看到集群的效果,那就是3個tomcat之間session同步的問題??梢酝ㄟ^打開節(jié)點下的標(biāo)簽的注釋來簡單的實現(xiàn)session復(fù)制:

  

然后在tomcat0/conf/web.xml根節(jié)點下加入

復(fù)制tomcat0到tomcat1、tomcat2,修改 的端口避免沖突,修改對應(yīng)的jvmRoute

啟動apache和3個tomcat,就可以看到效果。但這里我們使用memcached-session-manager來同步session,所以不必打開這一步。

2.6 memcached-session-manager配置 2.6.1 安裝memcached服務(wù)器

這里memcached搭建在另外一臺服務(wù)器上(192.168.10.20),也可以安裝在本地。

[root@cachets msm]# yum install libevent libevent-devel
[root@cachets msm]# tar -zxvf memcached-1.4.19.tar.gz
[root@cachets msm]# cd memcached-1.4.19 && ./configure && make && make install

// 啟動兩個memcached節(jié)點,端口分別為11211、11212
[root@cachets ~]#memcached -d -m 64 -p 11211 -u daemon -P /var/run/memcached.pid 
[root@cachets ~]#memcached -d -m 64 -p 11212 -u daemon -P /var/run/memcached2.pid 

如果開啟了防火墻,需要加入11211、11212端口的允許規(guī)則。

2.6.2 再次配置tomcat

加入jar包

asm-3.2.jar, couchbase-client-1.2.2.jar, kryo-1.04.jar, kryo-serializers-0.11.jar, msm-kryo-serializer-1.6.5.jar, memcached-session-manager-1.6.5.jar, memcached-session-manager-tc6-1.6.5.jar, minlog-1.2.jar, reflectasm-1.01.jar, spymemcached-2.10.2.jar這些jar包加入tomcat0/lib/下??梢钥吹竭@里選用的session序列化策略采用的是kryo。另外要注意版本之間的兼容性,這里只針對tomcat6.x。
修改conf/server.xml

將節(jié)點修改成:

   
      
   

接著將tomcat0完整的復(fù)制2份(tomcat1,tomcat2),也可以放到另外一臺服務(wù)器上。
修改為workers.properties中定義的AJP等端口:

node tomcat Server port Connector port http Connector port ajp Engine jvmRoute memcached failoverNodes
tomcat0 8005 8080 8009 tomcat0 n1
tomcat1 8105 8081 8109 tomcat1 n1
tomcat2 8205 8082 8209 tomcat2 n2
3. 測試

分別啟動tomcat0、tomcat1、tomcat2和apache,注意觀察tomcat的啟動日志和memcached服務(wù)器的日志。

[test@cachets ~]$ /apps/test/tomcat0/bin/startup.sh
[test@cachets ~]$ /apps/test/tomcat1/bin/startup.sh
[test@cachets ~]$ /apps/test/tomcat2/bin/startup.sh
[root@cachets ~]# /apps/test/apache2/bin/apachectl start

在瀏覽器訪問http://192.168.10.100/test.jsp。主要測試負(fù)載均衡與session共享。


原文鏈接地址:http://seanlook.com/2014/10/29/apache-3tomcat-cluster-jk-memcached/


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/35722.html

相關(guān)文章

  • apache+3tomcat+jk+memcached集群環(huán)境搭建

    摘要:使用解決多集群時同步問題所需包安裝過程下載將二進(jìn)制安裝文件,賦予可執(zhí)行權(quán)限可不必為整個環(huán)境設(shè)置,在中指定即可。啟動兩個節(jié)點,端口分別為如果開啟了防火墻,需要加入端口的允許規(guī)則。再次配置加入包將這些包加入下。 注意本文不討論原理,只講述具體的搭建過程,而且步驟都經(jīng)過了整理,否則過程可能會出現(xiàn)其他異常,請自行g(shù)oogle。apache與tomcat整合的方式除了jk之外,使用apache自...

    leap_frog 評論0 收藏0
  • 使用Apache對Tomcat進(jìn)行負(fù)載均衡

    摘要:在本文中,我們將介紹如何通過服務(wù)器配置簡單的負(fù)載均衡器。一個負(fù)載均衡器,負(fù)責(zé)管理和負(fù)載均衡多個。。定義節(jié)點的強度,在將請求轉(zhuǎn)發(fā)給節(jié)點時,負(fù)載均衡器將參考這個值。 翻譯:瘋狂的技術(shù)宅原文標(biāo)題:Load balancing tomcat with Apache原文鏈接:http://programmergate.com/loa...本文首發(fā)微信公眾號:充實的腦洞 有時候我們需要把自己的應(yīng)用...

    LeexMuller 評論0 收藏0

發(fā)表評論

0條評論

youkede

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<