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

資訊專欄INFORMATION COLUMN

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

youkede / 3529人閱讀

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

注意本文不討論原理,只講述具體的搭建過程,而且步驟都經(jīng)過了整理,否則過程可能會(huì)出現(xiàn)其他異常,請(qǐng)自行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容器處理動(dòng)態(tài)請(qǐng)求
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集群時(shí)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

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

2.2 編譯安裝apache

因?yàn)?b>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ā)請(qǐng)求時(shí)可能要使用地址rewrite,需要正則語法的支持。默認(rèn)CentOS6.x已經(jīng)安裝了這個(gè)庫。

安裝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ù)實(shí)際需要更改。

[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會(huì)由tomcat自動(dòng)調(diào)用。上面的jmxremote.authenticate在正式環(huán)境中請(qǐng)務(wù)必設(shè)為true并設(shè)置用戶名/密碼,減少安全隱患,或者注釋掉CATALINA_OPTS。(有時(shí)候出于性能調(diào)優(yōu)的目的,才需要設(shè)置JMX)。對(duì)于具體的連接協(xié)議有不同的優(yōu)化屬性,參考如下:
對(duì)HTTP:


對(duì)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

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

2.5 配置(集群)負(fù)載均衡選項(xiàng) 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
#指定哪些請(qǐng)求交給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個(gè)tomcat的做負(fù)載均衡的情況,負(fù)載因子lbfactor都為1,session為sticky模式,apache與tomcat連接的協(xié)議采用AJP/1.3,同一臺(tái)服務(wù)器上通過端口來區(qū)分tomcat0/tomcat1/tomcat2。

2.5.2 tomcat

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


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


2.5.3 app-TEST

為了看到負(fù)載均衡的效果,在/apps/test/testapp/TEST目錄下建立測(cè)試頁面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個(gè)tomcat之間session同步的問題。可以通過打開節(jié)點(diǎn)下的標(biāo)簽的注釋來簡(jiǎn)單的實(shí)現(xiàn)session復(fù)制:

  

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

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

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

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

這里memcached搭建在另外一臺(tái)服務(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

// 啟動(dòng)兩個(gè)memcached節(jié)點(diǎn),端口分別為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。另外要注意版本之間的兼容性,這里只針對(duì)tomcat6.x。
修改conf/server.xml

將節(jié)點(diǎn)修改成:

   
      
   

接著將tomcat0完整的復(fù)制2份(tomcat1,tomcat2),也可以放到另外一臺(tái)服務(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. 測(cè)試

分別啟動(dòng)tomcat0、tomcat1、tomcat2和apache,注意觀察tomcat的啟動(dòng)日志和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。主要測(cè)試負(fù)載均衡與session共享。


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


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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/35722.html

相關(guān)文章

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

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

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

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

    LeexMuller 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

youkede

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<