apache+tomcat 實現負載均衡和集羣

一.準備
a、安裝Aapche (httpd-2.2.22.tar.gz)
1.解壓
 tar -xzf httpd-2.2.22.tar.gz
2.改變權限
 chown root.root -R httpd-2.2.22
3.配置安裝路徑,安裝
        cd httpd-2.2.22
        ./configure --prefix=/usr/local/apache
        make && make install

 注:(如果用高版本apache自帶的)有些LoadModules 模塊沒有的話
  在安裝程序的/root/httpd-2.2.22/modules/proxy下找到 相應的*.c文件

  進入$APACHE_HOME/bin,執行以下命令以生成mod_proxy.so和mod_proxy_http.so文件:
  ./apxs -aic /root/httpd-2.2.22/modules/proxy/mod_proxy.c /root/httpd-2.2.22/modules/proxy/proxy_util.c //生成mod_proxy.so
  ./apxs -aic /root/httpd-2.2.22/modules/proxy/mod_proxy_http.c      //生成mod_proxy_http.so
  備註:apxs是apache中一個編譯、安裝擴展模塊的工具,用於編譯一個或多個源程序或目標代碼文件爲動態共享對象,使之可以用LoadModule指令在運行時加載到apache服務器中。


/usr/local/apache/bin/apachectl start  //啓動
/usr/local/apache/bin/apachectl stop  //停止
/usr/local/apache/bin/apachectl restart  //重啓


b.安裝mod_jk (tomcat-connectors-1.2.32-src.tar.gz)
1.解壓
        tar xzf tomcat-connectors-1.2.32-src.tar.gz
2.配置安裝路徑,安裝
        cd tomcat-connectors-1.2.32-src/native/
        ./configure --with-apxs=/usr/local/apache/bin/apxs
        make && make install

        ll /usr/local/apache/modules/mod_jk.so

二.配置
tomcat配置修改
 server.xml文件
 1.找到 <Engine name="Catalina" defaultHost="localhost"> 修改爲 <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker_1">   //jvmRoute="worker標記"

 2.找到ajp端口配置(默認8009),apacheworker.worker_1.port=這個端口,端口不衝突可不改,
  <!-- Define an AJP 1.3 Connector on port 8009 -->
  <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
  修改端口(測試改的8029)
  <Connector port="8029" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />


apache配置修改
a.修改/usr/local/apache/conf/httpd.conf,在httpd.conf文件的末尾添加如下內容:
 Include conf/extra/mod_jk.conf

b.在Apache\conf\extra\目錄下新建文件:mod_jk.conf(touch mod_jk.conf),內容如下:
 #load module mod_jk-1.2.31-httpd-2.2.3.so is for Apache 2.2.x.
 LoadModule jk_module modules/mod_jk.so
 #配置 mod_jk conf
 #加載集羣中的workers
 JkWorkersFile conf/workers.properties
 #加載workers的請求處理分配文件
 JkMountFile conf/uriworkermap.properties
 #指定jk的日誌輸出文件
 JkLogFile logs/mod_jk.log
 #指定日誌級別
 JkLogLevel info

c.在Apache\conf\目錄下新建文件:workers.properties,內容如下
 #worker列表
 worker.list=LB_worker,jkstatus
 #worker.list=worker_1,worker_2

 #第一個worker的配置,名爲worker_1
 #tomcat的主機地址,如不爲本機,請填寫ip地址
 worker.worker_1.host=222.73.250.222
 #ajp13 端口號,對應tomcat配置文件server.xml中Connector port="8009",默認8009
 worker.worker_1.port=8029
 worker.worker_1.type=ajp13
 #負載的權重值,越高表示負載越大
 worker.worker_1.lbfactor=2

 #第二個worker的配置,名爲worker_2
 worker.worker_2.host=222.73.250.164
 #ajp13 端口號,對應tomcat配置文件server.xml中Connector port="9009"
 worker.worker_2.port=8029
 worker.worker_2.type=ajp13
 worker.worker_2.lbfactor=1

 #LB_worker,用於負載均衡分發的控制器
 worker.LB_worker.type=lb
 #重試次數
 worker.LB_worker.retries=3
 #指定負載的worker列表,用逗號分隔
 worker.LB_worker.balance_workers=worker_1,worker_2
 #配置session會話是否爲粘性
 #這樣負載均衡器lb就會盡量保持一個session,也就是使用戶在一次會話中跟同一個Tomcat進行交互
 worker.LB_worker.sticky_session=true
 #如果sticky_session設爲true時,此處一般設爲false
 worker.LB_worker.sticky_session_force=false
 #設置運行狀態的控制器
 worker.jkstatus.type=status

d.Apache\conf\目錄下新建文件:uriworkermap.properties,內容如下:
 #所有請求都由LB_worker這個worker處理
 /*=LB_worker
 #所有包含jkstatus請求的都由名稱叫jkstatus的這個worker處理
 /jkstatus=jkstatus

 #所有以.gif、.jpg等等結尾的請求都不經過名稱叫LB_worker的worker處理 
 # ! 表示 非 的意思 
 #!/*.jpg=LB_worker #tomcat不處理圖片,圖片由apache處理.靜態文件放在Apache2.2\htdocs\下,路徑一致就OK

 

 

 

發佈了23 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章