国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

apache+3tomcat+jk+memcached集群環境搭建

leap_frog / 1498人閱讀

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

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

屬于正式環境中原session復制方案的改進。

1. 所需軟件包
jrrt-3.1.2-1.6.0-linux-x64.bin(或jdk1.6.0_33)   jvm
httpd-2.2.26.tar.gz                              web服務器,處理靜態資源
apache-tomcat-6.0.32.tar.gz                      應用服務器,Servlet容器處理動態請求
tomcat-connectors-1.2.30-src.tar.gz              apache與tomcat整合插件mod_jk.so
tomcat-native.tar.gz                             APR加速tomcat,提高線程并發能力。使用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二進制安裝文件,賦予可執行權限

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

可不必為整個linux環境設置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也裝上,主要是考慮后面轉發請求時可能要使用地址rewrite,需要正則語法的支持。默認CentOS6.x已經安裝了這個庫。

安裝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默認參數是為開發環境制定,而非適合生產環境,尤其是內存和線程的配置,默認都很低,容易成為性能瓶頸。下面是一些配置示例,需要根據實際需要更改。

[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目錄下新建的可執行文件setenv.sh會由tomcat自動調用。上面的jmxremote.authenticate在正式環境中請務必設為true并設置用戶名/密碼,減少安全隱患,或者注釋掉CATALINA_OPTS。(有時候出于性能調優的目的,才需要設置JMX)。對于具體的連接協議有不同的優化屬性,參考如下:
對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 配置(集群)負載均衡選項 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相關工作屬性定義的配置文件
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里指定的負載分配控制器名

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的做負載均衡的情況,負載因子lbfactor都為1,session為sticky模式,apache與tomcat連接的協議采用AJP/1.3,同一臺服務器上通過端口來區分tomcat0/tomcat1/tomcat2。

2.5.2 tomcat

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


設置測試應用的訪問路徑,在tomcat0/conf/server.xml節點下添加如下:


2.5.3 app-TEST

為了看到負載均衡的效果,在/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 屬性設置 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同步的問題。可以通過打開節點下的標簽的注釋來簡單的實現session復制:

  

然后在tomcat0/conf/web.xml根節點下加入

復制tomcat0到tomcat1、tomcat2,修改 的端口避免沖突,修改對應的jvmRoute

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

2.6 memcached-session-manager配置 2.6.1 安裝memcached服務器

這里memcached搭建在另外一臺服務器上(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節點,端口分別為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端口的允許規則。

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

將節點修改成:

   
      
   

接著將tomcat0完整的復制2份(tomcat1,tomcat2),也可以放到另外一臺服務器上。
修改為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服務器的日志。

[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。主要測試負載均衡與session共享。


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


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61677.html

相關文章

  • apache+3tomcat+jk+memcached集群環境搭建

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

    youkede 評論0 收藏0
  • 使用Apache對Tomcat進行負載均衡

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

    LeexMuller 評論0 收藏0

發表評論

0條評論

leap_frog

|高級講師

TA的文章

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