![互聯(lián)網(wǎng)項(xiàng)目系統(tǒng)軟件集成解決方案_第1頁(yè)](http://file4.renrendoc.com/view/7bd2e19c829c7f307b794887e1434703/7bd2e19c829c7f307b794887e14347031.gif)
![互聯(lián)網(wǎng)項(xiàng)目系統(tǒng)軟件集成解決方案_第2頁(yè)](http://file4.renrendoc.com/view/7bd2e19c829c7f307b794887e1434703/7bd2e19c829c7f307b794887e14347032.gif)
![互聯(lián)網(wǎng)項(xiàng)目系統(tǒng)軟件集成解決方案_第3頁(yè)](http://file4.renrendoc.com/view/7bd2e19c829c7f307b794887e1434703/7bd2e19c829c7f307b794887e14347033.gif)
![互聯(lián)網(wǎng)項(xiàng)目系統(tǒng)軟件集成解決方案_第4頁(yè)](http://file4.renrendoc.com/view/7bd2e19c829c7f307b794887e1434703/7bd2e19c829c7f307b794887e14347034.gif)
![互聯(lián)網(wǎng)項(xiàng)目系統(tǒng)軟件集成解決方案_第5頁(yè)](http://file4.renrendoc.com/view/7bd2e19c829c7f307b794887e1434703/7bd2e19c829c7f307b794887e14347035.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
年4月19日互聯(lián)網(wǎng)項(xiàng)目系統(tǒng)軟件集成解決方案文檔僅供參考互聯(lián)網(wǎng)項(xiàng)目系統(tǒng)軟件集成解決方案
目錄前言 3Nginx安裝 4Nignx下載 4Nginx安裝 4JDK安裝 5Tomcat安裝 6Memecached安裝 6第一步安裝libevent 7第二部安裝memcached 8第三步啟動(dòng)并檢測(cè)memcached 10配置Nginx+Tomcat集群實(shí)現(xiàn)負(fù)載均衡 10Tomcat集群配置 11Nginx配置 12Tomcat實(shí)現(xiàn)session同步 16Tomcat調(diào)用memcached配置 18優(yōu)化linux內(nèi)核 19測(cè)試Nginx下Tomcat實(shí)現(xiàn)session同步 19MySQL集群 20管理節(jié)點(diǎn)(MGM)的安裝及配置 21存儲(chǔ)節(jié)點(diǎn)(NDB)的安裝及配置 22負(fù)載均衡 23
前言本文的主要目的是經(jīng)過(guò)對(duì)下面所列出的軟件進(jìn)行合理的配置以及合理的使用來(lái)解決互聯(lián)網(wǎng)項(xiàng)目中如何提高應(yīng)用系統(tǒng)平臺(tái)的高可用性及穩(wěn)定性。本文中主要應(yīng)用的軟件為:Nginx負(fù)載均衡Tomcat應(yīng)用服務(wù)器Memcached緩存服務(wù)器Mysql數(shù)據(jù)庫(kù)相關(guān)插件:JDKLibeventPcremsmHeartbeatLdirectord如果說(shuō)單純的按照本文檔操作配置實(shí)現(xiàn)了負(fù)載均衡及集群,大大提高了系統(tǒng)的高可用性及系統(tǒng)性能就算完成任務(wù),那么就失去了文檔本身的意義。本文檔所列內(nèi)容只是高可用系統(tǒng)的一個(gè)基礎(chǔ),只是基于如何去搭建高可用平臺(tái),同時(shí)也只是運(yùn)維工作的一個(gè)開(kāi)始。系統(tǒng)的7*24小時(shí)高可用并不只是一套高可用軟件集成,而是在這個(gè)基礎(chǔ)上如何去維護(hù)它。我們能夠經(jīng)過(guò)一套完整的運(yùn)維管理制度去約束運(yùn)維團(tuán)隊(duì)進(jìn)行細(xì)致的工作,對(duì)任何出現(xiàn)的系統(tǒng)問(wèn)題進(jìn)行分析及解決。對(duì)于運(yùn)維工程師能夠不斷的去探索如何去監(jiān)控并合理利用網(wǎng)絡(luò)資源;如何去監(jiān)控并合理使用服務(wù)器及存儲(chǔ)的硬件資源;如何去深度發(fā)掘上述軟件的更多使用奧妙及大膽的嘗試新的軟件及技術(shù);如何去對(duì)程序進(jìn)行監(jiān)控,與研發(fā)團(tuán)隊(duì)緊密溝通提高代碼的性能;如何去對(duì)數(shù)據(jù)庫(kù)進(jìn)行監(jiān)控并優(yōu)化,大大提高數(shù)據(jù)存儲(chǔ)及讀取的效率等等。旨在不忽略運(yùn)維工作中的每個(gè)細(xì)節(jié),慮小患而治大憂,這樣才能最大限度的保證系統(tǒng)的穩(wěn)定性,7*24小時(shí)不間斷提供服務(wù),為企業(yè)經(jīng)過(guò)互聯(lián)網(wǎng)平臺(tái)不斷獲益提供保障。本文檔參考了大量的文獻(xiàn),最終整合在一起,希望對(duì)從事系統(tǒng)運(yùn)維工作的朋友帶來(lái)一些幫助。有愿意進(jìn)一步進(jìn)行技術(shù)交流的大家能夠mail我:。有不足的地方也希望大家多多指出。
Nginx安裝本文以nginx-0.7.67為例,到官網(wǎng),以0.7.67版本為例。Nignx下載[root@localhost~]#wget---09-2414:48:12--Resolving...37Connectingto|37|:80...connected.HTTPrequestsent,awaitingresponse...200OKLength:608462(594K)[application/octet-stream]Savingto:`nginx-0.7.67.tar.gz'100%[<========================================>]608,46244.5K/sin18s-09-2414:48:32(32.8KB/s)-`nginx-0.7.67.tar.gz'saved[608462/608462]Nginx安裝解壓壓縮文件[root@localhost~]#tar-zxvfnginx-0.7.67.tar.gz進(jìn)入安裝文件目錄[root@localhost~]#cdnginx-0.7.67指定安裝到[root@localhostnginx-0.7.67]#./configure–prefix=/usr/local/nginx/usr/local/nginx目錄下,可用./configure–help查看需要哪些編譯參數(shù)編譯[root@localhostnginx-0.7.67]#make安裝[root@localhostnginx-0.7.67]#makeinstall查看是否安裝成功[root@localhostnginx-0.7.67]#ll/usr/local/nginx/drwxr-xr-x2rootroot4096Sep2415:12confdrwxr-xr-x2rootroot4096Sep2415:12htmldrwxr-xr-x2rootroot4096Sep2415:12logsdrwxr-xr-x2rootroot4096Sep2415:12sbin測(cè)試Nginx配置文件是否正確[root@localhostnginx-0.7.67]#/usr/local/nginx/sbin/nginx–t啟動(dòng)Nginx[root@localhostnginx-0.7.67]#/usr/local/nginx/sbin/nginx下面驗(yàn)證Nginx是否正常啟動(dòng),瀏覽器中輸入nginx服務(wù)器地址,出現(xiàn)如下圖說(shuō)明nginx正常工作。JDK安裝賦權(quán)執(zhí)行權(quán)限給JDK*.bin#chmodu+xJDK*.bin運(yùn)行JDK安裝包#./JDK*.bin創(chuàng)立指定的jdk文件路徑#mkdir/usr/java-pv將jdk移動(dòng)到指定路徑,根據(jù)實(shí)際情況進(jìn)行配置#mvjdk*/usr/java聲明Java的環(huán)境變量修改/etc/profile文件,增加JAVA_HOME,JRE_HOME,PATH,CLASSPATH屬性#vi/etc/profileexportJAVA_HOME=/jdk路徑如exportJAVA_HOME=/root/jdk1.6.0_18exportJRE_HOME=/jre路徑如exportJRE_HOME=/root/jdk1.6.0_18/jreexportPATH=/java/bin路徑如exportPATH=/root/jdk1.6.0_18/binexportCLASSPATH=/java/../lib路徑如exportCLASSPATH=./:/usr/jdk1.6.0_18/lib:/usr/jdk1.6.0_18/jre/lib保存并退出。運(yùn)行./etc/profile使環(huán)境變量生效。也能夠使用echo$PATH看是否包含添加的路徑。運(yùn)行命令:#java-version若出現(xiàn)如下信息則證明java運(yùn)行成功javaversion"1.6.0_18"Java(TM)SERuntimeEnvironment(build1.6.0_18-b07)JavaHotSpot(TM)ClientVM(build16.0-b13,mixedmode,sharing)Tomcat安裝安裝Tomcat安裝包到/usr/local目錄下執(zhí)行以下命令:解壓tomcat#tarxfapache-Tomcatt*.tar.gz-C/usr/local建立連接符,根據(jù)實(shí)際情況配置#ln-svapache-Tomcat*tomcat#cdtomcat修改/etc/profile文件,導(dǎo)入tomcat目錄,聲明環(huán)境變量加入以下兩條命令:exportCATALINA_HOME=/usr/local/tomcatecho$CATALINA_HOME賦權(quán)執(zhí)行權(quán)限給catalina.sh和startup.sh#chmodu+xcatalina.sh#chmodu+xstartup.sh手動(dòng)啟動(dòng)tomcat#bin/catalina.shstart或#bin/startup.sh在客戶端驗(yàn)證toncat是否安裝成功,默認(rèn)端口為8080。訪問(wèn)http://service_IP:8080Memecached安裝下載Memcache:Memcache用到了libevent這個(gè)庫(kù)用于Socket的處理,因此還需要安裝libevent。下載libevent:http://.org/~provos/libevent-1.4.14b-stable.tar.gz第一步安裝libevent先安裝libevent:解壓軟件包#tarzxvflibevent-1.4.14b-stable.tar.gz路徑跳轉(zhuǎn)#cdlibevent-1.4.14b-stable配置安裝路徑#./configure--prefix=/usr編譯#make安裝#makeinstall如果安裝過(guò)程中,發(fā)現(xiàn)提示:configure:error:noacceptableCcompilerfoundin$PATH需要安裝Ccompiler,安裝方法:在Linux環(huán)境下只要能鏈接Internet就能夠經(jīng)過(guò)本地的yum源來(lái)安裝,在終端下輸入#yuminstallgcc就能夠,自動(dòng)安裝的。安裝的時(shí)候需保證linux能夠上網(wǎng),因?yàn)樾枰W(wǎng)上下載安裝包。然后看看我們的libevent是否安裝成功:執(zhí)行命令:#ls-al/usr/lib|greplibevent
lrwxrwxrwx
1root
root
213月
213:17libevent-1.4.so.2->libevent-1.4.so.2.1.2
-rwxr-xr-x
1root
root
2802153月
213:17libevent-1.4.so.2.1.2
-rw-r--r--
1root
root
3670943月
213:17libevent.a
lrwxrwxrwx
1root
root
263月
213:17libevent_core-1.4.so.2->libevent_core-1.4.so.2.1.2
-rwxr-xr-x
1root
root
1075113月
213:17libevent_core-1.4.so.2.1.2
-rw-r--r--
1root
root
1469243月
213:17libevent_core.a
-rwxr-xr-x
1root
root
8603月
213:17libevent_core.la
lrwxrwxrwx
1root
root
263月
213:17libevent_core.so->libevent_core-1.4.so.2.1.2
lrwxrwxrwx
1root
root
273月
213:17libevent_extra-1.4.so.2->libevent_extra-1.4.so.2.1.2
-rwxr-xr-x
1root
root
2196553月
213:17libevent_extra-1.4.so.2.1.2
-rw-r--r--
1root
root
2814823月
213:17libevent_extra.a
-rwxr-xr-x
1root
root
8673月
213:17libevent_extra.la
lrwxrwxrwx
1root
root
273月
213:17libevent_extra.so->libevent_extra-1.4.so.2.1.2
-rwxr-xr-x
1root
root
8253月
213:17libevent.la
lrwxrwxrwx
1root
root
213月
213:17libevent.so->libevent-1.4.so.2.1.2出現(xiàn)以上提示則證明libevent安裝完畢。第二部安裝memcached解壓軟件包#tarzxvfmemcached-1.4.5.tar.gz跳轉(zhuǎn)到指定路徑#cdmemcached-1.4.5配置安裝路徑#./configure--with-libevent=/usr編譯#make安裝#makeinstall如果中間出現(xiàn)報(bào)錯(cuò),請(qǐng)仔細(xì)檢查錯(cuò)誤信息,按照錯(cuò)誤信息來(lái)配置或者增加相應(yīng)的庫(kù)或者路徑。安裝完成后會(huì)把memcached放到/usr/local/bin/memcached。我們看以下是否安裝了:#ls-al/usr/local/bin/mem*-rwxr-xr-x1rootroot1212493月213:23/usr/local/bin/memcached-rwxr-xr-x1rootroot1301793月213:23/usr/local/bin/memcached-debug安裝完成后,現(xiàn)在我們看以下memcache的幫助:#/usr/local/bin/memcached-h出現(xiàn):errorwhileloadingsharedlibraries:libevent-1.4.so.2:cannotopensharedobjectfile:Nosuchfileordirectory原因是找不到libevent-1.4.so.2類庫(kù)。解決辦法如下:使用LD_DEBUG=help./memcached-v來(lái)確定加載的類庫(kù)路徑。方法如下:#LD_DEBUG=libs./memcached-v2>&1>/dev/null|less則系統(tǒng)會(huì)顯示:linux:/local/memcached/bin#LD_DEBUG=libs./memcached-v2>&1>/dev/null|less
20421:
findlibrary=libevent-1.4.so.2;searching
20421:
searchcache=/etc/ld.so.cache
20421:
searchpath=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2:/lib:/usr/lib/tls/i686
/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i686:/usr/lib/sse2:/usr/lib
(systemsearchpath)
20421:
tryingfile=/lib/tls/i686/sse2/libevent-1.4.so.2
20421:
tryingfile=/lib/tls/i686/libevent-1.4.so.2
20421:
tryingfile=/lib/tls/sse2/libevent-1.4.so.2
20421:
tryingfile=/lib/tls/libevent-1.4.so.2
20421:
tryingfile=/lib/i686/sse2/libevent-1.4.so.2
20421:
tryingfile=/lib/i686/libevent-1.4.so.2
20421:
tryingfile=/lib/sse2/libevent-1.4.so.2
20421:
tryingfile=/lib/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/tls/i686/sse2/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/tls/i686/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/tls/sse2/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/tls/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/i686/sse2/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/i686/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/sse2/libevent-1.4.so.2
20421:
tryingfile=/usr/lib/libevent-1.4.so.2
20421:
./memcached:errorwhileloadingsharedlibraries:libevent-1.4.so.2:cannotopensharedobjectfile:Nosuchfileordirectory我們看到,memcached會(huì)到很多地方去找,因此根據(jù)其它求,我們只需建一個(gè)軟鏈接,指定到我們安裝的類庫(kù)上即可方法如下:#ln-s/usr/local/lib/libevent-1.4.so.2/lib/libevent-1.4.so.2再測(cè)試是否安裝成功:#/usr/local/bin/memcached-hmemcached1.2.6-p<num>TCPportnumbertolistenon(default:11211)-U<num>UDPportnumbertolistenon(default:0,off)-s<file>unixsocketpathtolistenon(disablesnetworksupport)-a<mask>accessmaskforunixsocket,inoctal(default0700)-l<ip_addr>interfacetolistenon,defaultisINDRR_ANY-drunasadaemon-rmaximizecorefilelimit-u<username>assumeidentityof<username>(onlywhenrunasroot)-m<num>maxmemorytouseforitemsinmegabytes,defaultis64MB-Mreturnerroronmemoryexhausted(ratherthanremovingitems)-c<num>maxsimultaneousconnections,defaultis1024-klockdownallpagedmemory.Notethatthereisalimitonhowmuchmemoryyoumaylock.Tryingtoallocatemorethanthatwouldfail,sobesureyousetthelimitcorrectlyfortheuseryoustartedthedaemonwith(notfor-u<username>user;undershthisisdonewith'ulimit-S-lNUM_KB').-vverbose(printerrors/warningswhileineventloop)-vvveryverbose(alsoprintclientcommands/reponses)-hprintthishelpandexit-iprintmemcachedandlibeventlicense-brunamanagedinstanced(mnemonic:buckets)-P<file>savePIDin<file>,onlyusedwith-doption-f<factor>chunksizegrowthfactor,default1.25-n<bytes>minimumspaceallocatedforkey+value+flags,default48出現(xiàn)上面描述,表示安裝成功。第三步啟動(dòng)并檢測(cè)memcached啟動(dòng)一個(gè)Memcache的服務(wù)器端:#/usr/local/bin/memcached-d-m10-uroot-l73-p1-c256-P/tmp/memcached.pid相關(guān)參數(shù)-d選項(xiàng)是啟動(dòng)一個(gè)守護(hù)進(jìn)程。-m是分配給Memcache使用的內(nèi)存數(shù)量,單位是MB,我這里是10MB。-u是運(yùn)行Memcache的用戶,我這里是root。-l是監(jiān)聽(tīng)的服務(wù)器IP地址,如果有多個(gè)地址的話,我這里指定了服務(wù)器的IP地址。-p是設(shè)置Memcache監(jiān)聽(tīng)的端口,我這里設(shè)置了1,最好是1024以上的端口。-c選項(xiàng)是最大運(yùn)行的并發(fā)連接數(shù),默認(rèn)是1024,我這里設(shè)置了256,按照你服務(wù)器的負(fù)載量來(lái)設(shè)定。-P是設(shè)置保存Memcache的pid文件,我這里是保存在/tmp/memcached.pid。如果要結(jié)束Memcache進(jìn)程,執(zhí)行:#kill-9`cat/tmp/memcached.pid`也能夠啟動(dòng)多個(gè)守護(hù)進(jìn)程,不過(guò)端口不能重復(fù)。用netstat-lp|grepmemcached命令能夠查看memcached是否已經(jīng)啟動(dòng):#netstat-lp|grepmemcachedtcp00:1*:*LISTEN9037/memcachedudp00:1*:*9037/memcached說(shuō)明memcached正在運(yùn)行。配置Nginx+Tomcat集群實(shí)現(xiàn)負(fù)載均衡因?yàn)槲覀冃枰獙?shí)現(xiàn)tomcat負(fù)載均衡,而且在多臺(tái)用于運(yùn)行tomcat的服務(wù)器以及每臺(tái)服務(wù)器上同時(shí)運(yùn)行多個(gè)tomcat服務(wù),故以下我們以一臺(tái)服務(wù)器上運(yùn)行多個(gè)tomcat服務(wù)舉例進(jìn)行說(shuō)明,對(duì)于多臺(tái)服務(wù)器操作方法類似,只是需要注意IP地址及端口的使用及合理規(guī)劃即可。Tomcat集群配置以下為我們以一臺(tái)服務(wù)上同事運(yùn)行兩個(gè)tomcat服務(wù)為例進(jìn)行具體說(shuō)明。安裝了兩個(gè)tomcat,解壓tomcat到/usr/local/tomcat1和/usr/local/tomcat2。分別進(jìn)入/usr/local/tomcat1/bin和/usr/local/tomcat2/bin。目錄執(zhí)行命令:設(shè)置執(zhí)行權(quán)限#chmodu+x*.Sh修改tomcat1下conf中server.xml<!--Serverport="8005"需要修改,確保唯一性,能夠設(shè)置為9011、9012、9021、9022--><Serverport="9011"shutdown="SHUTDOWN"><!--Defineanon-SSLHTTP/1.1Connectoronport8080--><!--Connectorport="8080"需要修改,確保唯一性,能夠設(shè)置為8011、8012、8021、8022--><Connectorport="8011"maxHttpHeaderSize="8192"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"enableLookups="false"redirectPort="8443"acceptCount="100"connectionTimeout="0"disableUploadTimeout="true"/><!--DefineanAJP1.3Connectoronport8009--><!--Connectorport="8009"需要修改,確保唯一性,能夠設(shè)置為8111、8112、8121、8122--><Connectorport="8111"enableLookups="false"redirectPort="8443"protocol="AJP/1.3"/>修改tomcat1下bin中的startup.sh和shutdown.sh添加以下內(nèi)容exportJAVA_HOME=/usr/local/java1.5.0_09exportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=$JAVA_HOME/libexportCATALINA_HOME=$CATALINA_HOME_1exportCATALINA_BASE=$CATALINA_BASE_1修改tomcat2下conf中server.xml<!--Serverport="8005"需要修改,確保唯一性,能夠設(shè)置為9011、9012、9021、9022--><Serverport="9012"shutdown="SHUTDOWN"><!--Defineanon-SSLHTTP/1.1Connectoronport8080--><!--Connectorport="8080"需要修改,確保唯一性,能夠設(shè)置為8011、8012、8021、8022--><Connectorport="8012"maxHttpHeaderSize="8192"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"enableLookups="false"redirectPort="8443"acceptCount="100"connectionTimeout="0"disableUploadTimeout="true"/><!--DefineanAJP1.3Connectoronport8009--><!--Connectorport="8009"需要修改,確保唯一性,能夠設(shè)置為8111、8112、8121、8122--><Connectorport="8112"enableLookups="false"redirectPort="8443"protocol="AJP/1.3"/>修改tomcat2下bin中的startup.sh和shutdown.sh添加以下內(nèi)容exportJAVA_HOME=/usr/local/java1.5.0_09exportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=$JAVA_HOME/libexportCATALINA_HOME=$CATALINA_HOME_2exportCATALINA_BASE=$CATALINA_BASE_2修改profile配置文件vi/etc/profile配置系統(tǒng)變量,打開(kāi)后添加以下內(nèi)容:CATALINA_BASE_1=/usr/local/tomcat1CATALINA_HOME_1=/usr/local/tomcat1exportCATALINA_BASE_1CATALINA_HOME_1TOMCAT_HOME_1=/usr/local/tomcat1exportTOMCAT_HOME_1CATALINA_BASE_2=/usr/local/tomcat2CATALINA_HOME_2=/usr/local/tomcat2exportCATALINA_BASE_2CATALINA_HOME_2TOMCAT_HOME_2=/usr/local/tomcat2exportTOMCAT_HOME_2設(shè)置tomcat隨系統(tǒng)啟動(dòng)vi/etc/rc.d/rc.local添加以下內(nèi)容/usr/local/tomcat1/bin/startup.sh/usr/local/tomcat2/bin/startup.sh保存退出,logout注銷一下分別進(jìn)入/usr/local/tomcat1/bin和/usr/local/tomcat2/bin目錄執(zhí)行./startup.sh訪問(wèn)http://IP:8011/和http://IP:8012/看是否能夠看到tomcat的歡迎界面Nginx配置安裝nginx,在安裝nginx之前需要先安裝所需的pcre庫(kù)以nginx-0.7.60-linux及pcre-7.8為例,解壓我們下載的pcre-7.8.tar.gz解壓pcre#tarzxvfpcre-7.8.tar.gz#cdpcre-7.8配置pcre#./configure編譯#make安裝#makeinstall安裝完畢。#tarzxvfnginx-0.7.60-linux.tar.gz#./configure--user=www--group=www--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module創(chuàng)立代理文件vi/usr/local/nginx/conf/proxy.conf輸入以下內(nèi)容proxy_redirectoff;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;client_max_body_size10m;client_body_buffer_size128k;proxy_connect_timeout600;proxy_read_timeout600;proxy_send_timeout600;proxy_buffer_size8k;proxy_buffers432k;proxy_busy_buffers_size64k;proxy_temp_file_write_size64k;保存退出。編輯nginx.conf文件vi/usr/local/nginx/conf/nginx.conf修改如下#運(yùn)行用戶#usernobody;#啟用進(jìn)程worker_processes8;#全局錯(cuò)誤日志和piderror_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;pidlogs/nginx.pid;#工作模式及連接數(shù)上限worker_rlimit_nofile51200;events{worker_connections51200;}#配置http已經(jīng)反向代理做負(fù)載均衡http{includemime.types;default_typeapplication/octet-stream;include proxy.conf;#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'#'$status$body_bytes_sent"$http_referer"'#'"$http_user_agent""$http_x_forwarded_for"';#access_loglogs/access.logmain;sendfileon;#tcp_nopushon;#keepalive_timeout0;keepalive_timeout65;#gzipon;#配置負(fù)載均衡服務(wù)列表,weight參數(shù)表示權(quán)重值,值越大權(quán)重越高#例子程序#upstream_1.com{#server1:8080;#server2:8080;#}#upstream_2.com{#server1:8080;#server2:8080;#}upstreamproxyserver{#ip_hash;serverlocalhost:8080weight=6; serverlocalhost:8081weight=1;}server{#端口以及域名配置listen80;server_;#charsetutf-8;#access_loglogs/host.access.logmain;location~^/NginxStatus/{stub_statuson;access_logoff;}#設(shè)定默認(rèn)首頁(yè)location/{root/wwwroot/ROOT;indexindex.htmllogin.jsp;}#禁止訪問(wèn)WEB-INFlocation~^/(WEB-INF)/{denyall;}#設(shè)定瀏覽器訪問(wèn)時(shí)nginx直接處理和需緩存的文件后綴以及時(shí)間參數(shù)location~\.(gif|jpg|jpeg|png|bmp|ico|rar|css|zip|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)${root/wwwroot/ROOT;expires24h;}location~\.(htm|html)${root/wwwroot/ROOT;}#設(shè)定此后綴的文件利用反向代理轉(zhuǎn)給負(fù)載均衡列表中的tomcat處理location~\.jsp${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~\.do${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~\.js${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~\.xml${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~^/dwr/{proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~^/html/fckeditor/{proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}server{listen80;server_name;#charsetutf-8;#access_loglogs/host.access.logmain;location~^/NginxStatus/{stub_statuson;access_logoff;}location/{root/wwwroot/ROOT;indexcol.htmllogin.jsp;}location~^/(WEB-INF)/{denyall;}location~\.(gif|jpg|jpeg|png|bmp|ico|rar|css|zip|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)${root/wwwroot/ROOT;expires24h;}location~\.(htm|html)${root/wwwroot/ROOT;}location~\.jsp${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~\.do${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~\.js${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~\.xml${proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~^/dwr/{proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}location~^/html/fckeditor/{proxy_passhttp://proxyserver;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;}}}保存退出。Nginx啟動(dòng)命令:sbin/nginxTomcat實(shí)現(xiàn)session同步設(shè)置tomcat集群所需的session同步,分別打開(kāi)tomcat1和tomcat2下conf中server.xml。找到<Enginename="Catalina"defaultHost="localhost">,Tomcat1下的修改為<Enginename="Catalina"defaultHost="localhost"jvmRoute="worker1">Tomcat2下的修改為<Enginename="Catalina"defaultHost="localhost"jvmRoute="worker2">找到<ClusterclassName="org.apache.catalina.cluster.tcp.SimpleTcpCluster"managerClassName="org.apache.catalina.cluster.session.DeltaManager"expireSessionsOnShutdown="false"useDirtyFlag="true"notifyListenersOnReplication="true"><MembershipclassName="org.apache.catalina.cluster.mcast.McastService"mcastAddr=""mcastPort="45564"mcastFrequency="500"mcastDropTime="3000"/><ReceiverclassName="org.apache.catalina.cluster.tcp.ReplicationListener"tcpListenAddress=""tcpListenPort="4001"tcpSelectorTimeout="100"tcpThreadCount="6"/><SenderclassName="org.apache.catalina.cluster.tcp.ReplicationTransmitter"replicationMode="pooled"ackTimeout="15000"waitForAck="true"/><ValveclassName="org.apache.catalina.cluster.tcp.ReplicationValve"filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/><DeployerclassName="org.apache.catalina.cluster.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/><ClusterListenerclassName="org.apache.catalina.cluster.session.ClusterSessionListener"/></Cluster>將注釋去掉啟用此功能,注意兩處修改tcpListenAddress=""tcpListenPort="4001"tcpListenAddress修改為此tomcat所在機(jī)器的IP地址,如果兩個(gè)tomcat在同一臺(tái)服務(wù)器上那么tcpListenPort的端口需要修改,如果不在同一臺(tái)服務(wù)器上只需要修改IP即可。Linux下默認(rèn)沒(méi)有開(kāi)啟組播功能,因此需要開(kāi)下#routeadd-netnetmaskdeveth0如果需要在服務(wù)器啟動(dòng)時(shí)即開(kāi)通組播需要修改#vi/etc/sysconfig/static-routes添加以下內(nèi)容eht0netnetmask還需要在程序的web.xml里面</web-app>前面加入以下這句話<distributable/>
session同步到這里設(shè)置完畢。Tomcat調(diào)用memcached配置使用memcached-session-manager這個(gè)開(kāi)源項(xiàng)目(,下面簡(jiǎn)稱msm)配置Tomcat和memcached實(shí)現(xiàn)session共享。 首先將下面的包下載到Tomcat的lib目錄下,這些包都是msm所依賴的包。[root@localhost~]#cd/usr/local/tomcat/lib/下載msm軟件包[root@localhostlib]#wget[root@localhostlib]#wget[root@localhostlib]#wget[root@localhostlib]#wget[root@localhostlib]#wget 修改Tomcat配置文件,讓Tomcat結(jié)合memcached實(shí)現(xiàn)session共享[root@localhostlib]#vi/usr/local/tomcat/conf/server.xml在配置文件中加入如下內(nèi)容<ContextdocBase="/var/www/html"path=""reloadable="true"><ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:IP:11211"requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"sessionBackupAsync="false"sessionBackupTimeout="100"transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"copyCollectionsForSerialization="false"/></Context>說(shuō)明:這里的memcachedNodes是填寫(xiě)memcached節(jié)點(diǎn),多個(gè)節(jié)點(diǎn)時(shí)能夠以空隔分開(kāi),如:n1:IP:11211n2:IP:11212IP改為安裝memcached的服務(wù)器的IP;sessionBackupTimeout的單位為分鐘;/var/www/html改為T(mén)omcat服務(wù)器web根目錄的路徑。修改后重啟TOMCAT和nginx即可,這個(gè)時(shí)候已經(jīng)解決SESSION的共享問(wèn)題。優(yōu)化linux內(nèi)核#vi/etc/sysctl.conf在末尾添加以下內(nèi)容:net.ipv4.tcp_fin_timeout=30net.ipv4.tcp_keepalive_time=300net.ipv4.tcp_syncookies=1net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_tw_recycle=1net.ipv4.ip_local_port_range=500065000使設(shè)置立即生效:/sbin/sysctl–p查看系統(tǒng)資源限制設(shè)定#ulimit–a修改openfile參數(shù)值為4096#ulimit-n4096用ulimit-n修改openfiles總是不能保持。因此用下面一個(gè)簡(jiǎn)單的辦法更好些。
修改/etc/security/limits.conf添加如下一行:
#vi/etc/security/limits.conf
*-nofile1006154
修改/etc/pam.d/login#vi/etc/pam.d/login
添加如下一行
sessionrequired/lib/security/pam_limits.so測(cè)試Nginx下Tomcat實(shí)現(xiàn)session同步測(cè)試Nginx是否實(shí)現(xiàn)負(fù)載均衡已經(jīng)Tomcat能否共享session信息,分別在兩個(gè)Tomcat服務(wù)器的/var/www/html目錄下新建兩個(gè)test.jsp頁(yè)面Tomcat1#vi/var/www/html/test.jsp輸入如下內(nèi)容:SessionID:<%=session.getId()%><BR>SessionIP:<%=request.getServerName()%><BR>SessionPort:<%=request.getServerPort()%><%out.println("ThisisTomcatServer111111!");%>Tomcat2#vi/var/www/html/test.jsp輸入如下內(nèi)容SessionID:<%=session.getId()%><BR>SessionIP:<%=request.getServerName()%><BR>SessionPort:<%=request.getServerPort()%><%out.println("ThisisTomcatServer222222!");%>經(jīng)過(guò)瀏覽器訪問(wèn)Nginx服務(wù)器,如下圖將訪問(wèn)地址改成Nginx所在服務(wù)器。重復(fù)刷新瀏覽器,如果SessionID一直不變,下面的SessionPort的內(nèi)容在不斷變化則說(shuō)明配置成功。MySQL集群MySQL服務(wù)器軟件包中配置集群所需的3個(gè)組件分別是:1、MySQL;2、MySQLNDB;3、MySQLNDBManagement;MySQL使用NDB來(lái)實(shí)現(xiàn)集群。NDB是一種“內(nèi)存中”的存儲(chǔ)引擎,可用性高、數(shù)據(jù)一致性好。數(shù)據(jù)保存在存儲(chǔ)節(jié)點(diǎn)(DataNodes)中,也就是ndbd節(jié)點(diǎn)。SQL語(yǔ)句在SQL節(jié)點(diǎn)上執(zhí)行,也就是mysqld節(jié)點(diǎn)。集群的管理者是NDB管理服務(wù)器,也就是ndb_mgmd節(jié)點(diǎn)。關(guān)于MySQL集群的3個(gè)主要組成部分,我們?cè)賮?lái)介紹一下。(1)負(fù)載均衡節(jié)點(diǎn)(mysql)負(fù)載均衡節(jié)點(diǎn)(也叫SQL節(jié)點(diǎn))是用來(lái)訪問(wèn)集群數(shù)據(jù)的。相關(guān)的軟件,就是我們平時(shí)所使用的MySQL數(shù)據(jù)庫(kù)軟件;也就是由/etc/init.d/mysql腳原來(lái)管理的那個(gè)服務(wù)。(2)存儲(chǔ)節(jié)點(diǎn)(ndbd)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)是用來(lái)保存集群數(shù)據(jù)的,其服務(wù)的啟停是由腳本/etc/init.d/mysql-ndb來(lái)管理的。(3)管理節(jié)點(diǎn)(ndbd-mgm)管理節(jié)點(diǎn)是用來(lái)管理集群內(nèi)其它節(jié)點(diǎn)的,比如提供配置信息、啟動(dòng)或停止節(jié)點(diǎn)、執(zhí)行備份等。其服務(wù)的啟停是由/etc/init.d/mysql-ndb-mgm腳原來(lái)管理的。由于這類節(jié)點(diǎn)是管理者,因此管理節(jié)點(diǎn)必須首先啟動(dòng),然后其它兩類節(jié)點(diǎn)再啟動(dòng)。本例中,我們將使用5臺(tái)Ubuntu服務(wù)器,它們的作用和IP配置如下::0,管理節(jié)點(diǎn):1,負(fù)載均衡節(jié)點(diǎn)1:2,負(fù)載均衡節(jié)點(diǎn)2:3,數(shù)據(jù)節(jié)點(diǎn)1:4,數(shù)據(jù)節(jié)點(diǎn)2另外,我們需要有一個(gè)虛擬IP地址,作為整個(gè)集群對(duì)外的一個(gè)IP地址;各種應(yīng)用程序都經(jīng)過(guò)該IP地址來(lái)訪問(wèn)MySQL。請(qǐng)你先設(shè)置好以上服務(wù)器的hostname和IP地址。你能夠在5臺(tái)物理服務(wù)器上做實(shí)驗(yàn),也能夠在虛擬機(jī)里面做。下面我們分別來(lái)安裝、配置這些服務(wù)器。管理節(jié)點(diǎn)(MGM)的安裝及配置以mysql-server-5.0為例,在軟件包中,不但攜帶了集群服務(wù)器管理程序(ndb_mgmd),還攜帶了集群管理客戶端(ndb_mgm)??蛻舳薾db_mgm能夠用來(lái)顯示集群的狀態(tài),讓你了解集群的工作情況。我們來(lái)安裝、配置(0)。在服務(wù)器上,安裝MySQL服務(wù)器:$sudoapt-getupdateinstallmysql-server安裝時(shí),安裝程序會(huì)要求你設(shè)置MySQL的root口令。請(qǐng)?jiān)O(shè)置好,并記住該口令。配置ndb_f$sudovi/etc/mysql/ndb_f注意下:文件名必須是ndb_f,否則服務(wù)無(wú)法啟動(dòng)輸入如下內(nèi)容:[NDBDDEFAULT]NoOfReplicas=2[MYSQLDDEFAULT][NDB_MGMDDEFAULT][TCPDEFAULT][NDB_MGMD]#管理節(jié)點(diǎn)#本機(jī)(管理節(jié)點(diǎn))的IP地址HostName=0#存儲(chǔ)節(jié)點(diǎn)1[NDBD]HostName=3DataDir=/var/lib/mysql-clusterBackupDataDir=/var/lib/mysql-cluster/backup#存儲(chǔ)節(jié)點(diǎn)2[NDBD]HostName=4DataDir=/var/lib/mysql-clusterBackupDataDir=/var/lib/mysql-cluster/backup#有幾個(gè)存儲(chǔ)節(jié)點(diǎn),就寫(xiě)幾行[MYSQLD][MYSQLD][MYSQLD]文件保存后,即可啟動(dòng)MySQL的mgm服務(wù)了:$sudo/etc/init.d/mysql-ndb-mgmstart以后,如果要停止MySQL集群,只需要停止該mgm服務(wù)即可。$sudo/etc/init.d/mysql-ndb-mgmstop存儲(chǔ)節(jié)點(diǎn)(NDB)的安裝及配置現(xiàn)在我們來(lái)安裝、配置和。在mysql-data1和mysql-data2兩臺(tái)服務(wù)器上,分別安裝MySQL服務(wù)器:$sudoapt-getupdateinstallmysql-server安裝時(shí),安裝程序會(huì)要求你設(shè)置MySQL的root口令。請(qǐng)?jiān)O(shè)置好,并記住該口令。程序安裝完成后,請(qǐng)先停止MySQL服務(wù):$sudo/etc/init.d/mysqlstop配置f$sudocp/etc/mysql/f/etc/mysql/f.back然后,編輯一個(gè)新的f:$sudovi/etc/mysql/f內(nèi)容如下:[client]socket=/var/run/mysqld/mysqld.sockport=3306#管理節(jié)點(diǎn)的IP地址[mysqld]ndbclusterndb-connectstring=0default-storage-engine=NDBCLUSTER[mysql_cluster]#管理節(jié)點(diǎn)的IP地址ndb-connectstring=0文件保存后,就能夠啟動(dòng)ndb服務(wù)了:$sudo/etc/init.d/mysql-ndbstart-initial注意一下,常規(guī)情況下啟動(dòng)mysql使用/etc/init.d/mysql-ndbstart即可,可是在第一次啟動(dòng)和管理配置更改后啟動(dòng)則使用/etc/init.d/mysql-ndbstart-initial(初始化啟動(dòng))負(fù)載均衡利用heartbeat和ldirectord軟件以“主/從”模式實(shí)現(xiàn)負(fù)載均衡負(fù)載均衡節(jié)點(diǎn)為:讓內(nèi)核支持IPVS,執(zhí)行下面的命令載入相關(guān)模塊:$sudomodprobeip_vs_dh$sudomodprobeip_vs_ftp$sudomodprobeip_vs$sudomodprobeip_vs_lblc$sudomodprobeip_vs_lblcr$sudomodprobeip_vs_lc$sudomodprobeip_vs_nq$sudomodprobeip_vs_rr$sudomodprobeip_vs_sed$sudomodprobeip_vs_sh$sudomodprobeip_vs_wlc$sudomodprobeip_vs_wrr然后,我們還需要修改/etc/modules,添加這些模塊,以便系統(tǒng)在重新啟動(dòng)時(shí)能夠自動(dòng)加載它們。在和上,執(zhí)行下面的命令:$sudovi/etc/modules在文件末尾,添加下列內(nèi)容:ip_vs_dhip_vs_ftpip_vsip_vs_lblcip_vs_lblcrip_vs_lcip_vs_nqip_vs_rrip_vs_sedip_vs_ship_vs_wlcip_vs_wrr另外,我們還需要啟用內(nèi)核的包轉(zhuǎn)發(fā)功能。在和mysql-lb2.上,執(zhí)行下面的命令:$sudovi/etc/sysctl.conf將net.ipv4.ip_forward所在行的注釋去掉:net.ipv4.ip_forward=1文件保存后,運(yùn)行命令使之立即生效:$sudosysctl-p安裝heartbeat、ldirectord等軟件下面我們來(lái)安裝heartbeat、ldirectord,以及要用到的其它軟件。在和上,執(zhí)行下面的命令:$sudoapt-getinstallheartbeatldirectord$sudoapt-getinstalllibdbi-perllibdbd-mysql-perllibmysqlclient15-dev配置heartbe
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代學(xué)生餐廳的照明與色彩搭配藝術(shù)
- 深度解讀網(wǎng)絡(luò)輿情的來(lái)源與影響研究報(bào)告解讀分享
- 現(xiàn)代金融行業(yè)中的移動(dòng)支付技術(shù)與教育普及
- 快手國(guó)慶節(jié)的活動(dòng)方案
- 國(guó)慶假期活動(dòng)方案
- 國(guó)慶節(jié)酒店漲價(jià)活動(dòng)方案
- 2、3、4的乘法口訣(說(shuō)課稿)-2024-2025學(xué)年二年級(jí)上冊(cè)數(shù)學(xué)人教版
- Unit1 There is a horse in this photo(說(shuō)課稿)-2024-2025學(xué)年外研版(三起)四年級(jí)上冊(cè)001
- 17《他們那時(shí)候多有趣啊》(說(shuō)課稿)-2023-2024學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)下冊(cè)
- 13 我能行(說(shuō)課稿)-統(tǒng)編版(五四制)道德與法治二年級(jí)下冊(cè)
- 春節(jié)后復(fù)工安全教育培訓(xùn)考試試題及答案
- 寄宿制學(xué)校工作總結(jié)
- 小學(xué)數(shù)學(xué)6年級(jí)應(yīng)用題100道附答案(完整版)
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- JT-T 1495-2024 公路水運(yùn)危險(xiǎn)性較大工程專項(xiàng)施工方案編制審查規(guī)程
- JT-T-390-1999突起路標(biāo)行業(yè)標(biāo)準(zhǔn)
- 人教版二年級(jí)上冊(cè)加減混合計(jì)算300題及答案
- 2023年四川省成都市武侯區(qū)中考物理二診試卷(含答案)
- 《也是冬天-也是春天》
- 鮮切水果行業(yè)分析
- 第7章-無(wú)人機(jī)法律法規(guī)
評(píng)論
0/150
提交評(píng)論