博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1、tomcat目录及端口规划实践
阅读量:6067 次
发布时间:2019-06-20

本文共 1889 字,大约阅读时间需要 6 分钟。

hot3.png

一、目的

        随着项目的发展,模块数量持续递增,优秀的系统架构师,应该系统设计之初,就该尽量把系统规划好,而不是完全依赖持续的架构改进,重构系统存在诸多的风险,需要精心的测试,持续大规模的重构系统,必然较难保证系统在线上稳定、可靠及持续的运行。

        【】

二、需求

        1)一个Server上支持多个项目,每个项目支持多个实例,所有项目和实例的端口都不冲突。假如ServerA挂了,把ServerA上所有的tomcat及程序包,同路径复制到ServerB上,立马能运行,不会影响ServerB上原有的系统。

         2) 多个tomcat实例或tomcat实例内部端口需要规律、不冲突、方便记忆,切能尽量充分利用系统端口,我们项目中实际用到http访问端口、ajp、shutdown及两个jmx端口 。

        3)对于一个模块来说,需要有统一的对外负载端口,禁止对外公布真实端口,减少后期由于各类原因引发端口迁移,导致业务或配置方也得同时修改。一般我们会使用nginx,统一输出80端口,来屏蔽真实实例端口,通过server和upstream来配置负载关系。

        4)通过线上实践及业务扩展,长期来看,我觉得nginx将逐步充当web容器或者程序的扩展功能,典型的应用实例为openresty。

三、部署结构示意图

       

四、目录规划

    jdk目录:/usr/local/java/jdkversion,例如:/usr/local/java/jdk1.8.0_05

    tomcat目录:/usr/local/tomcat/version,例如: /usr/local/tomcat/8.0.9

    下面假设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/实例端口号

五、权限规划

    建议新建个无密码的tomcat账号,使用启动tomcat进程。

useradd -s /sbin/nologin tomcat

    上述目录规划中除了jdk目录配置为root权限外,其他目录统一配置为tomcat权限。

六、端口规划后的成果

    1、每台服务器在性能允许的情况下,最多支持99个业务模块。

    2、每个业务模块支持55个tomcat实例。

    3、每个tomcat实例可配置10个对外端口。

    4、在单台服务器部署tomcat实例<=5445个的情况下,能保证tomcat间及tomcat内部所有端口端口不冲突。

    5、端口有规律,便于记忆及运维配置,同一类端口有相同或相近的数字变更规律,具体规律如下:

        1)同一模块下属的多个tomcat实例中各个端口按1000的公差值递增,例如:模块A在相同服务器上有多个tomcat实例,第一个tomcat实例http访问端口为10001,那么第二个tomcat实例的http访问端口为11001,以此类推。计算公式为:第N个tomcat实例的该端口=第一个tomcat实例的该端口+1000*N(N为该tomcat实例是模块A中的第几个实例,N<=54);

        2)同一个tomcat实例内,各端口间以100的公差递增,例如模块A的第一个tomcat实例,http访问端口为10001,那么shutdown、AJP、rmiRegistryPortPlatform和miServerPortPlatform的端口分别为10101、10201、10301和10404。
计算公式为:第N个该端口=第一个该端口+100*N(N为该tomcat实例中的第几个端口,N<=9);
        3)同一模块下属的多个tomcat实例中相同类型的端口的端口号最后两位的数值是一样的,例如模块A,有5个实例,http访问端口分别为10001、11001、12001、13001和14001,5个端口号最后两位都是01,可用来标识该模块,即使递增到第55个模块实例,http访问端口最后两位还是01,为64001。

    6、建议:在集群部署模式下,建议提供相同服务的多台服务器,配置、模块和端口规划一致,可进一步的提高系统的可维护性.。

七、端口规划列表

转载于:https://my.oschina.net/andChow/blog/538594

你可能感兴趣的文章
Java – How to get current date time
查看>>
LeetCode: Remove Nth Node From End of List 解题报告
查看>>
Linq to Sql : 并发冲突及处理策略
查看>>
Selenium Webdriver——操作隐藏的元素(二)display属性
查看>>
C++&&XML; “未使用调试信息生成二进制文件” vs assist
查看>>
配置struts2 web.xml 报错
查看>>
如何清除自动保存的远程目录登录密码
查看>>
解决 - java.lang.OutOfMemoryError: unable to create new native thread
查看>>
正整数分解为几个连续自然数之和
查看>>
工作中经常使用的TabWidget标签分页
查看>>
HTML5 Canvas动画效果演示
查看>>
struts2入门程序
查看>>
JqueryEasyUI 解决IE下datagrid无法刷新的问题 分类: ...
查看>>
两个人的人生抉择
查看>>
GeoServer+MySQL安装及配置过程
查看>>
【mysql】索引的优化
查看>>
Android之OptionsMenu与Notification的实现
查看>>
QNetworkAccessManager 实现的 ftp 上传
查看>>
CCF系列之有趣的数(201312-4)
查看>>
java多线程--定时器Timer的使用
查看>>