原博主於: http://www.ha97.com/5803.html 感謝!
服務器集群
Apache 和 nginx(web服務器)
1、 多台集群機器聯合處理一個任務。
2、 一台機器處理不同的多個任務。
特點:
處理靜態數據速度快(自動html靜態數據的緩存)
並發數一般要比J2EE服務器要高。
安裝apache:
1、簡單安裝:yum install httpd
2、源碼安裝
1、安裝apr
-
-
- 解壓
- ./configure --prefix=/usr/local/apr 指定安裝目錄
- Make && make install
-
ii. 安裝apr-util
-
-
- 解壓
- ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
- Make && make install
-
iii. 源碼安裝apache
-
-
- 解壓
-
./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"
/>