1、tomcat目录及端口规划实践
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
一、目的
????????隨著項(xiàng)目的發(fā)展,模塊數(shù)量持續(xù)遞增,優(yōu)秀的系統(tǒng)架構(gòu)師,應(yīng)該系統(tǒng)設(shè)計(jì)之初,就該盡量把系統(tǒng)規(guī)劃好,而不是完全依賴持續(xù)的架構(gòu)改進(jìn),重構(gòu)系統(tǒng)存在諸多的風(fēng)險(xiǎn),需要精心的測(cè)試,持續(xù)大規(guī)模的重構(gòu)系統(tǒng),必然較難保證系統(tǒng)在線上穩(wěn)定、可靠及持續(xù)的運(yùn)行。
????????【前Google全球研發(fā)總監(jiān):好的架構(gòu)需要精心設(shè)計(jì),千萬別把問題留給進(jìn)化】
二、需求
??????? 1)一個(gè)Server上支持多個(gè)項(xiàng)目,每個(gè)項(xiàng)目支持多個(gè)實(shí)例,所有項(xiàng)目和實(shí)例的端口都不沖突。假如ServerA掛了,把ServerA上所有的tomcat及程序包,同路徑復(fù)制到ServerB上,立馬能運(yùn)行,不會(huì)影響ServerB上原有的系統(tǒng)。
?????????2) 多個(gè)tomcat實(shí)例或tomcat實(shí)例內(nèi)部端口需要規(guī)律、不沖突、方便記憶,切能盡量充分利用系統(tǒng)端口,我們項(xiàng)目中實(shí)際用到http訪問端口、ajp、shutdown及兩個(gè)jmx端口 。
??????? 3)對(duì)于一個(gè)模塊來說,需要有統(tǒng)一的對(duì)外負(fù)載端口,禁止對(duì)外公布真實(shí)端口,減少后期由于各類原因引發(fā)端口遷移,導(dǎo)致業(yè)務(wù)或配置方也得同時(shí)修改。一般我們會(huì)使用nginx,統(tǒng)一輸出80端口,來屏蔽真實(shí)實(shí)例端口,通過server和upstream來配置負(fù)載關(guān)系。
??????? 4)通過線上實(shí)踐及業(yè)務(wù)擴(kuò)展,長(zhǎng)期來看,我覺得nginx將逐步充當(dāng)web容器或者程序的擴(kuò)展功能,典型的應(yīng)用實(shí)例為openresty。
三、部署結(jié)構(gòu)示意圖
???????
四、目錄規(guī)劃
????jdk目錄:/usr/local/java/jdkversion,例如:/usr/local/java/jdk1.8.0_05
????tomcat目錄:/usr/local/tomcat/version,例如: /usr/local/tomcat/8.0.9
????下面假設(shè)tomcat使用8.0.9版本
????tomcat_ home :/usr/local/tomcat/8.0.9
????tomcat實(shí)例目錄:/usr/local/tomcat/8.0.9/instances/實(shí)例端口號(hào)
????tomcat_base:/usr/local/tomcat/8.0.9/instances/ 實(shí)例端口號(hào)
????tomcat日志目錄:data/tomcat/8.0.9/ 實(shí)例端口號(hào) /logs/
????程序包目錄:/data/deplpoy/實(shí)例端口號(hào)
五、權(quán)限規(guī)劃
????建議新建個(gè)無密碼的tomcat賬號(hào),使用啟動(dòng)tomcat進(jìn)程。
useradd -s /sbin/nologin tomcat??? 上述目錄規(guī)劃中除了jdk目錄配置為root權(quán)限外,其他目錄統(tǒng)一配置為tomcat權(quán)限。
六、端口規(guī)劃后的成果
????1、每臺(tái)服務(wù)器在性能允許的情況下,最多支持99個(gè)業(yè)務(wù)模塊。
????2、每個(gè)業(yè)務(wù)模塊支持55個(gè)tomcat實(shí)例。
????3、每個(gè)tomcat實(shí)例可配置10個(gè)對(duì)外端口。
????4、在單臺(tái)服務(wù)器部署tomcat實(shí)例<=5445個(gè)的情況下,能保證tomcat間及tomcat內(nèi)部所有端口端口不沖突。
????5、端口有規(guī)律,便于記憶及運(yùn)維配置,同一類端口有相同或相近的數(shù)字變更規(guī)律,具體規(guī)律如下:
????????1)同一模塊下屬的多個(gè)tomcat實(shí)例中各個(gè)端口按1000的公差值遞增,例如:模塊A在相同服務(wù)器上有多個(gè)tomcat實(shí)例,第一個(gè)tomcat實(shí)例http訪問端口為10001,那么第二個(gè)tomcat實(shí)例的http訪問端口為11001,以此類推。計(jì)算公式為:第N個(gè)tomcat實(shí)例的該端口=第一個(gè)tomcat實(shí)例的該端口+1000*N(N為該tomcat實(shí)例是模塊A中的第幾個(gè)實(shí)例,N<=54);
??????? 2)同一個(gè)tomcat實(shí)例內(nèi),各端口間以100的公差遞增,例如模塊A的第一個(gè)tomcat實(shí)例,http訪問端口為10001,那么shutdown、AJP、rmiRegistryPortPlatform和miServerPortPlatform的端口分別為10101、10201、10301和10404。
計(jì)算公式為:第N個(gè)該端口=第一個(gè)該端口+100*N(N為該tomcat實(shí)例中的第幾個(gè)端口,N<=9);
??????? 3)同一模塊下屬的多個(gè)tomcat實(shí)例中相同類型的端口的端口號(hào)最后兩位的數(shù)值是一樣的,例如模塊A,有5個(gè)實(shí)例,http訪問端口分別為10001、11001、12001、13001和14001,5個(gè)端口號(hào)最后兩位都是01,可用來標(biāo)識(shí)該模塊,即使遞增到第55個(gè)模塊實(shí)例,http訪問端口最后兩位還是01,為64001。
??? 6、建議:在集群部署模式下,建議提供相同服務(wù)的多臺(tái)服務(wù)器,配置、模塊和端口規(guī)劃一致,可進(jìn)一步的提高系統(tǒng)的可維護(hù)性.。
七、端口規(guī)劃列表
轉(zhuǎn)載于:https://my.oschina.net/andChow/blog/538594
總結(jié)
以上是生活随笔為你收集整理的1、tomcat目录及端口规划实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: require(os)
- 下一篇: Android设置Settings:预读