![Nginx+Tomcat+Memcached配置流程_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/424e02d3-2b78-4de2-85f8-6adb996d0a2c/424e02d3-2b78-4de2-85f8-6adb996d0a2c1.gif)
![Nginx+Tomcat+Memcached配置流程_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/424e02d3-2b78-4de2-85f8-6adb996d0a2c/424e02d3-2b78-4de2-85f8-6adb996d0a2c2.gif)
![Nginx+Tomcat+Memcached配置流程_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/424e02d3-2b78-4de2-85f8-6adb996d0a2c/424e02d3-2b78-4de2-85f8-6adb996d0a2c3.gif)
![Nginx+Tomcat+Memcached配置流程_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/424e02d3-2b78-4de2-85f8-6adb996d0a2c/424e02d3-2b78-4de2-85f8-6adb996d0a2c4.gif)
![Nginx+Tomcat+Memcached配置流程_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/424e02d3-2b78-4de2-85f8-6adb996d0a2c/424e02d3-2b78-4de2-85f8-6adb996d0a2c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、負載均衡配置流程(Nginx+Tomcat+Memcached)數(shù)據(jù)運維組2016年04月21日目錄一、方案的選擇2二、安裝環(huán)境31.WEB服務(wù)器配置3a)安裝JDK3b)安裝Tomcat4c)部署應(yīng)用42.Nginx服務(wù)器配置6a)安裝基礎(chǔ)環(huán)境包6b)安裝PCRE包6c)安裝nginx6d)啟動6e)配置NGINX實現(xiàn)負載均衡73.Memcached配置session共享8a)安裝8b)memcached-session-manager配置9三、結(jié)束11一、 方案的選擇多個tomcat要一起協(xié)同工作有幾種辦法,可以考慮的方案有以下幾個:1. 使用tomcat自帶的cluster方式,多個to
2、mcat見自動實時復(fù)制session信息,配置起來很簡單。但這個方案的效率比較低,在大并發(fā)下表現(xiàn)并不好。2. 利用nginx的基于訪問ip的hash路由策略,保證訪問的ip始終被路由到同一個tomcat上,這個配置更簡單。但是我們的應(yīng)用很可能是某一個局域網(wǎng)大量用戶同時登錄,這樣負載均衡就沒什么作用了。3. 利用memcached把多個tomcat的session集中管理,這是最直接的解決方案,但是操作起來也最為復(fù)雜。我們的系統(tǒng)既要求性能,又要比較好的利用上負載均衡,所以第3個方案是首選。接下來就是安裝搭建之路了。二、 安裝環(huán)境服務(wù)器服務(wù)器名稱安裝環(huán)境82WEB服務(wù)器01
3、Ehr3.0+Tomcat7.0.69+JDK9+Memcached1.4.20.tar+ libevent-2.0.21-stable83WEB服務(wù)器0284Nginx服務(wù)器nginx-1.8.1+ pcre-8.32+ openssl-fips-2.0.51. WEB服務(wù)器配置a) 安裝JDK1、先卸載服務(wù)器自帶的jdk軟件包# java -version #查看服務(wù)器是否安裝過jdkjava version "1.6.0_17"OpenJDK Runtime Environment (IcedTea6 1.
4、7.4) (rhel-1.21.b17.el6-i386)OpenJDK Client VM (build 14.0-b16, mixed mode)# rpm -qa |grep gcj #查看服務(wù)器安裝的jdk軟件包信息libgcj-4.4.4-13.el6.i686java-1.5.0-gcj--29.1.el6.i686# yum -y remove java-1.5.0-gcj--29.1.el6.i686 #卸載軟件包2、安裝jdk7.0 解壓配置安裝# mkdir -p /usr/lib/jvm# tar zxvf jdk-7u9-linux-i586
5、.tar.gz -C /usr/lib/jvm# mv /usr/lib/jvm/jdk1.7.0_09 /usr/lib/jvm/java73、添加jdk7.0到系統(tǒng)環(huán)境變量cp /etc/profile /etc/profile.bak #備份vi /etc/profile #編輯,在最后添加下面的內(nèi)容 export JAVA_HOME=/usr/lib/jvm/java7export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$PAT
6、H: $JRE_HOME/bin source /etc/profile #使配置文件立即生效4、測試# java -version # 測試是否成功 b) 安裝Tomcattar -xzvf apache-tomcat-7.0.69.tar.gzmv /usr/local/java/apache-tomcat-7.0.69 /usr/local/java/ln -s /usr/local/java/apache-tomcat-7.0.69 /usr/local/tomcatc) 部署應(yīng)用1) cd /usr/local/tomcat/webapp直接把war包放到這個目錄下。并刪除其他目錄,
7、只留下ehr2) 修改Tomcatpei配置文件cd /usr/local/tomcat/confvi server.xml在<host></host>標(biāo)簽內(nèi)添加如下內(nèi)容<Context path="/" docBase="ehr" reloadable="true" sessionCookieName="JSESSIONID80" />修改訪問端口8080改為80,其他參數(shù)保持默認 vi /usr/local/tomcat/bin/catalina.shCATALINA_HOM
8、E=/usr/local/java/apache-tomcat-7.0.693) 啟動tomcat:./bin/startup停止:./bin/shutdown4) 測試是否正確部署應(yīng)用:直接輸入IP地址82和842. Nginx服務(wù)器配置a) 安裝基礎(chǔ)環(huán)境包yum install openssl openssl-devel -yyum install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel -yyum install libxml2 libxml2-de
9、vel zlib zlib-devel ncurses ncurses-devel curl curl-devel -yyum install gd gd-devel gd2 gd2-devel -yyum install -y gcc gcc-c+仔細檢查這些包,尤其是opensslb) 安裝PCRE包tar -xzvf cd-./configure -prefix=/application/最好加上這個參數(shù)便于修改make make installc) 安裝nginxwget 網(wǎng)址下載文件useradd nginx -s /sbin/nologin -Mtar -xzvf nginx-*t
10、ar.gzcd nginx-*./configure -user=nginx -group=nginx -prefix=/application/nginx-1.8.1 -with-http_stub_status_module -with-http_ssl_module -with-pcre=/application/makemake installln -s /application/nginx-1.8.1 /application/nginxll /applicationd) 啟動echo "/usr/local/lib" >>/etc/ld.so.con
11、ftail -l /etc/ld.so.confldconfig/application/nginx/sbin/nginxlsof -i :80ps -ef | grep nginx:一個主進程一個輔助進程e) 配置NGINX實現(xiàn)負載均衡1) vi nginx/conf/nginx.conf刪除多余的只留下如下:worker_processes 2;events worker_connections 1024;http include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeou
12、t 65; include extra/upstream01.conf;2) vi extra/upstream01.conf:#2016 upstream blog_real_servers # ip_hash; server 82:80 weight=1; server 84:80 weight=1; server 83:82 weight=15 down; server listen 80; server_name 83; location / proxy_pass http:/blog_re
13、al_servers; location * (.jsp)|(.do)|(.action)$ proxy_pass http:/blog_real_servers; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_conn
14、ect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; location /status stub_status on; access_log /application/nginx/logs/status.log; auth_basic "NginxStatus" - NGINX前端界面 參數(shù)注釋:se
15、rver參數(shù)說明:server 82:80 負載均衡后面的RS配置,可以是IP或域名,端口不寫默認是80,高并發(fā)場景IP換成域名,通過DNS做負載均衡 weight 權(quán)重,默認是1max_fails最大嘗試失敗的次數(shù),默認為1,0表示禁止失敗嘗試。企業(yè)場景:23次,京東1次,藍汛10次根據(jù)業(yè)務(wù)需求去配置。經(jīng)常配合proxy_next_upstream,fastcgi_next_upstream,memcached_next_upstream使用,用來解決當(dāng)nginx發(fā)送請求給后端某臺服務(wù)器后突然宕機情況下nginx能及時把請求發(fā)送給另外一臺服務(wù)器,避免客戶體驗時打不開頁
16、面。backup熱配置(RS節(jié)點的高可用),當(dāng)前啟動的RS都失敗后會自動啟用熱備RSfail_timeout=20s 在max_fails定義失敗次數(shù)后,距離下次檢查的時間;失敗超時時間默認10s,京東1次,藍汛10次,根據(jù)業(yè)務(wù)需求去配置,京東3秒,藍汛3秒,常規(guī)業(yè)務(wù)23秒合理;down標(biāo)志服務(wù)器不可用,這個參數(shù)一直配合ip_hash使用。模塊參數(shù):proxy_set_header:設(shè)置由后端的服務(wù)器獲取用戶的主機名或真實IP地址,以及代理者的真實IP地址。proxy_set_header Host $host :當(dāng)后端WEB服務(wù)器上配置有多個虛擬主機時需要用該Header來區(qū)分反向代理哪個主
17、機名。proxy_set_header X-Forwarded-For $remote_addr;:如果后端web服務(wù)器上的程序需要獲取用戶IP,從該header頭獲取。client_body_buffer_size:用于指定客戶端請求主體緩沖區(qū)大小,可以理解為先保存到本地再傳給用戶。proxy_connect_timeout:表示與后臺服務(wù)器連接的超時時間,即發(fā)起握手等候響應(yīng)的超時時間。proxy_send_timeout:表示后端服務(wù)器的數(shù)據(jù)回傳時間。即在規(guī)定時間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù),否則,Nginx將斷開這個連接。proxy_read_timeout:設(shè)置Nginx從代理的后
18、端服務(wù)器獲取信息的時間,即Nginx已經(jīng)進入后端的排隊之中等候處理的時間。proxy_buffer_size設(shè)置緩沖區(qū)大小=proxy_buffers設(shè)置的大小proxy_buffers:設(shè)置緩沖區(qū)大小和數(shù)量proxy_busy_buffers_size設(shè)置系統(tǒng)很忙時可以使用的proxy_buffers大小=proxy_buffers*2proxy_temp_file_write_size :緩存臨時文件的大小3) nginx/sbin/nginx t4) nginx/sbin/nginx -s reload5) 啟動nginx報錯rootlocalhost sbin# ./nginx ./n
19、ginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory解決方法:rootlocalhost lib# ln -s /usr/local/lib/libpcre.so.1 /lib643. Memcached配置session共享a) 安裝我配置的兩臺WEB服務(wù)器都需要配置,網(wǎng)上有只配置一臺的1)先下載libevent-2.0.21-stable.tar和memcached-1.4.20.tar的源碼包,前者是后者的依賴包
20、,就是一個事件驅(qū)動的包。2)安裝非常順利,還是經(jīng)典的那幾個編譯安裝命令:tar zxvf libevent-2.0.21-stable.tar cd libevent-2.0.21-stable ./configure -prefix=/usr/local/ libevent-2.0.21make make install tar zxvf memcached-1.4.20.tar.gz cd memcached-1.4.20 ./configure -prefix=/usr/local/memcached-1.4.20 -with-libevent=/usr/local/ libevent-
21、2.0.21/make make install 3)啟動memcached:./memcached -d -m 256 -u root -p 11211 -c 1024 -P /tmp/memcached.pid 注意:安裝過程中如果提示找不到庫文件.so可能是在安裝時未指定prefix有關(guān),我嘗試默認安裝時提示這個問題。b) memcached-session-manager配置讓tomcat調(diào)用memcached來存儲session早就是一個很成熟的解決方案了,開源的msm就可以解決這個問題。比較折騰的就是要用到的jar包,官方文檔說的也比較含糊,我這里用的是kryo的序列化方
22、案,所以用到的包多一些,分別是:以上這些包都放在$CATALINA_HOME/lib目錄下,這些包都可以調(diào)通,我之前用的版本較低導(dǎo)致Tomcat未啟動。另外提一下,官方給出的4種序列化方案,其中kryo是效率最高的,具體比較看接下來是修改tomcat的配置文件$CATALINA_HOME/conf/context.xml,調(diào)整成新的session存儲方式。配置文件中加入以下內(nèi)容:<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1
23、:82:11211,n2:84:11211" sticky="false" lockingMode="auto" sessionBackupAsync="false" sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />在$CATALINA_HOME/con
24、f/perties文件中添加de.javakaffee.web.msm.level=FINE,就可以在catalina.out的日志中看到詳細的session存取情況。來:3.3 nginx配置nginx非常簡單,只要在upstream里面多配置幾個server就可以了,這里把我的配置貼出: 三、 小結(jié)7層代理1)類似LVS,完全轉(zhuǎn)發(fā)2)根據(jù)URL中路徑轉(zhuǎn)發(fā)3)根據(jù)URL中資源的后綴轉(zhuǎn)發(fā)4)基于user_agent轉(zhuǎn)發(fā),手機還是電腦,happroxy支持。NginxNginx代理負載均衡企業(yè)應(yīng)用場景:1)流量不是特別大情況,直接替換掉lvs做反向代理負載均衡,都可以配合k
25、eepalived做高可用原因:簡單、方便2)門戶網(wǎng)站前端LVS+Nginx代理。Nginx負載均衡內(nèi)核參數(shù)優(yōu)化 net.ipv4.tcp_fin_timeout=2 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_syncookies=1 net.ipv4.tcp_keepalive_time=600 net.ipv4.ip_local_port_range=4000 65000 net.ipv4.tcp_max_syn_backlog=16384 net.ipv4.tcp_max_tw_buckets=36000
26、 net.ipv4.route.gc_timeout=100 net.ipv4.tcp_syn_retries=1 net.ipv4.tcp_synack_retries=1 net.core.somaxconn=16384 dev_max_backlog=16384 net.ipv4.tcp_max_orphans=16384以下參數(shù)是對iptables防火墻的優(yōu)化,防火墻不開會提示,可以忽略不理。 net.ipv4.ip_conntrack_max=25000000 filter.ip_conntrack_max=25000000 filter.ip_conntrack_tcp_timeo
27、ut_established=180 filter.ip_conntrack_tcp_timeout_time_wait=120 filter.ip_conntrack_tcp_timeout_close_wait=60 filter.ip_conntrack_tcp_timeout_fin_wait=120將上面的內(nèi)核參數(shù)加入/etc/sysctl.conf 文件中,然后執(zhí)行如下命令使之生效:sysclt -p內(nèi)核參數(shù)詳解:net.ipv4.tcp_fin_timeout=2:表示如果套接字由本端要求關(guān)閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間,默認值是60s,該參數(shù)對應(yīng)系統(tǒng)路
28、徑為:/proc/sys/net/ipv4/tcp_fin_timeout 60net.ipv4.tcp_tw_reuse=1:表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認值為0,表示關(guān)閉。該參數(shù)對應(yīng)系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_tw_reuse 0net.ipv4.tcp_tw_recycle=1:表示開啟TCP連接中TIME-WAIT sockets的快速回收。該參數(shù)對應(yīng)系統(tǒng)的路徑為:/proc/sys/net/ipv4/tcp_tw_recycle 默認值為0,表示關(guān)閉提示:reuse和recycle 兩個參數(shù)為了防止生產(chǎn)
29、環(huán)境下web,squid等time_wait過多設(shè)置的。net.ipv4.tcp_syncookies=1:表示開啟SYN Cookies功能。當(dāng)出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,centos5系列默認值為1,表示開啟,因此這個參數(shù)也可以不添加;該參數(shù)對應(yīng)系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_syncookies 默認值為1net.ipv4.tcp_keepalive_time=600:表示當(dāng)keepalive啟用的時候,TCP發(fā)送keepalive消息的頻度。缺省是2小時,改為10分鐘。該參數(shù)對應(yīng)系統(tǒng)路徑為:/proc/sys/ne
30、t/ipv4/tcp_keepalive_time默認為7200.ipv4.ip_local_port_range=4000 65000:選項用來設(shè)定允許系統(tǒng)打開的端口范圍。即用于向外連接的端口范圍。該參數(shù)對應(yīng)系統(tǒng)路徑為:/proc/sys/net/ipv4/ip_local_port_range 32768 61000net.ipv4.tcp_max_syn_backlog=16384:表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)。選項為服務(wù)器端用于記錄那些尚未收到客戶端確認信息的連接請求的最大值。該參數(shù)對應(yīng)系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_max_syn_ba
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙干股協(xié)議書
- 三農(nóng)政策下的鄉(xiāng)村旅游發(fā)展作業(yè)指導(dǎo)書
- 礦業(yè)與資源開發(fā)技術(shù)作業(yè)指導(dǎo)書
- 技術(shù)服務(wù)合同
- 管理咨詢專業(yè)服務(wù)協(xié)議書
- 貸款擔(dān)保書的
- 三農(nóng)村合作社應(yīng)急管理方案
- 小學(xué)三年級口算題兩三位數(shù)乘除一位數(shù)
- 2025年陽泉資格證模擬考試
- 小學(xué)六年級數(shù)學(xué)口算競賽試題
- 新版中國食物成分表
- DB11∕T 446-2015 建筑施工測量技術(shù)規(guī)程
- 運輸車輛掛靠協(xié)議書(15篇)
- 完整版:美制螺紋尺寸對照表(牙數(shù)、牙高、螺距、小徑、中徑外徑、鉆孔)
- 醫(yī)院醫(yī)療質(zhì)量管理制度完整版
- 粵劇課程設(shè)計
- 食品感官檢驗基礎(chǔ)品評員的崗前培訓(xùn)課件
- 《財務(wù)管理學(xué)(第10版)》課件 第5、6章 長期籌資方式、資本結(jié)構(gòu)決策
- 《網(wǎng)絡(luò)安全防護項目教程》課件項目1 系統(tǒng)基本安全防護
- 房屋永久居住權(quán)合同模板
- 2024年度保密教育線上培訓(xùn)考試題庫附答案(完整版)
評論
0/150
提交評論