轉】Apache解決高並發和高可用


原博主於: http://www.ha97.com/5803.html   感謝!

 

 

 

                                  服務器集群

 

 

Apache 和 nginx(web服務器)

1、  多台集群機器聯合處理一個任務。

2、  一台機器處理不同的多個任務。

 

 

 

特點:

         處理靜態數據速度快(自動html靜態數據的緩存)

         並發數一般要比J2EE服務器要高。

 

 

 

安裝apache:

 

 

 

 

  1、簡單安裝:yum install httpd

       2、源碼安裝

                   1、安裝apr

      1. 解壓
      2. ./configure --prefix=/usr/local/apr  指定安裝目錄
      3. Make && make install

                   ii.   安裝apr-util

      1. 解壓
      2. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
      3. Make && make install

                  iii. 源碼安裝apache

      1. 解壓

                   ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=most --with-mpm=event

         3.Make && make  install

 

 

 

 

  b)  Apache和tomcat的連接

    apache 連接tomcat

    連接方法:兩種

             基於ajp協議方式連接,基於二進制

             基於HTTP協議連接

    兩種連接工具:

             Proxy:mod_proxy.so

             Connectors:mod_jk.so

 

             1、mod_jk :使用的是ajp連接器。

                       mod_jk 1x

                       mod_jk 2x :丟棄

                  

                       ajp協議:

                                基於二進制,速度快,兼容。安全。

                           

                       1、下載mod_jk

                                a、tomcat-conentors ,需要安裝之后才能得到mod_jk.so

                                b、mod_jk.so

                       2、mod_jk.so放到apache目錄下mudules目錄

                  

                       3、編輯apache配置文件

                                LoadModule jk_module modules/mod_jk.so

                                JkWorkersFile conf/workers.properties

                                JkLogFile logs/mod_jk.log

                                JkLogLevel info

                                JkMount /* controller

                           

                            新建一個workers.properties

                                     worker.list=controller

                                     worker.tomcat1.port=8009

                                     worker.tomcat1.host=192.168.197.128

                                     worker.tomcat1.type=ajp13

                                     worker.tomcat1.lbfactor=1

 

                                     worker.tomcat2.port=8009

                                     worker.tomcat2.host=192.168.197.129

                                     worker.tomcat2.type=ajp13

                                     worker.tomcat2.lbfactor=1

 

                                     worker.controller.type=lb #lb:表示負載均衡器

                                     worker.controller.balance_workers=tomcat2,tomcat1

                                     worker.controller.sticky_session=0 # 表示apache不處理session,每次傳入sessionID

                                     worker.controller.sticky_session_force=0

                  

                  

             2、proxy_mod:支持ajp和http連接器。 (官方推薦)

                       是apache自帶的一個模塊。

                       1、檢查Proxy_mod是否開啟。

                       2、編輯apache配置文件:httpd.cnf

                           

                       ProxyVia Off #設置響應時是否出現主機信息。

                       ProxyRequests Off #:是否開啟apache的正向代理功能,正反向不能同時使用

                       ProxyPreserveHost Off #:是否在反向代理中支持虛擬主機

                  

                       ProxyPass / ajp://localhost:8009/

                       ProxyPassReverse / ajp://localhost:8009/ #表示用戶響應是可能使用重定向也需要經過代理服務器

 

      3、負載均衡器

                     1、硬件負載均衡

                     2、軟件負載均衡

                              在apache配置文件中

                              <Proxy balancer://mybl>

                                       BalancerMember ajp://192.168.197.128:8009 loadfactor=1 route=tomcat1

                                       BalancerMember ajp://192.168.197.129:8009 loadfactor=1 route=tomcat2

                                       ProxySet lbmethod=byrequests

                              </Proxy>

                              ProxyPass / balancer://mybl/ 使用負載均衡器

          ProxyPassReverse / balancer://mybl/

                              mybl:表示負載均衡器的名字

                              BalancerMember:代表一個后端應用服務器

                              loadfactor=權重 ,決定節點壓力大小。

                              route:后端應用服務器的名字(負載均衡時必須要)

                                       在tomcat的配置文件中定義名字

                                                 server.xml

                              ProxySet lbmethod=byrequests ,根據請求的數量進行負責均衡

                           

                                       lbmethod=byrequests 按照請求次數均衡(默認)

                                       lbmethod=bytraffic 按照流量均衡

                                       lbmethod=bybusyness 按照繁忙程度均衡(總是分配給活躍請求數最少的服務器)

        stickysession=JSESSIONID|jsessionid nofailover=On

 

 

 

 

  apache虛擬主機

    1、  一台機器運行多個項目。

      a) 項目a –》tomcat1:8080和項目 b ---》tomcat2:8081

      b) 使用apache配置虛擬主機

      <VirtualHost *:80>  * :任意的客戶端

          DocumentRoot "/usr/local/apache/docs/dummy-host2.example.com" 靜態資源路徑

          ServerName  peiyou.com(該項目訪問的域名,每個虛擬主機要不同)

          ErrorLog "logs/dummy-host2.example.com-error_log"

        CustomLog "logs/dummy-host2.example.com-access_log" common

        #ProxyVia Off

        #ProxyPreserveHost Off

        #ProxyRequests Off

        #ProxyPass / ajp://h1:8009/

        #ProxyPassReverse / ajp://h1:8009/

      </VirtualHost>

 

 

 

  session:的處理

           1、session復制

                     tomcat 本身帶有復制session的功能。(不講)

        

           2、共享session

                     需要專門管理session的軟件,

                     memcached 緩存服務,可以和tomcat整合,幫助tomcat共享管理session。

 

 

 

 

安裝memcached

                   1、安裝libevent

                   2、安裝memcached

                   3、啟動memcached

                            memcached -d -m 128m -p 11211 -l 192.168.197.128 -u root -P /temp/

                           

                                     -d:后台啟動服務 http://www.ha97.com/5803.html

                                     -m:緩存大小

                                     -p:端口

                                     -l:IP

                                     -P:服務器啟動后的系統進程ID,存儲的文件

                                     -u:服務器啟動是以哪個用戶名作為管理用戶

                                    

         3、拷貝jar到tomcat的lib下

        

         4、配置tomcat,每個tomcat里面的context.xml中加入:

        

        

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

         memcachedNodes="n1:192.168.197.128:11211"

    sticky="false"

    lockingMode="auto"

    sessionBackupAsync="false"

         requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

    sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

 

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

    memcachedNodes="n1:host1.yourdomain.com:11211,n1:host2.yourdomain.com:11211" 

    sticky="false" 

    sessionBackupAsync="false" 

    lockingMode="uriPattern:/path1|/path2" 

    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 

    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 

    />

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM