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