我正在尝试创建一个 worker.properties 文件以使 mod_jk 与 Apache webserver 2.2.x 进行通信。GlassFish 3.1 管理文档包含以下 worker.properties 示例:
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
# GlassFish server settings
maxThreads=256
此示例是否假设 mod_jk/Glassfish 安装在与 Apache webserver 不同的物理服务器上?更具体地说,如果在我的环境中,Apache webserver、Glassfish 和 mod_jk 都在同一台物理服务器上,我是否需要指定端口号(例如 8009)?
也就是说,我认为端口的概念是为了促进机器对机器的通信。如果所有东西都在同一台机器上,它们是否还需要打开一个端口号才能进行通信?或者,是否出于其他原因需要端口 8009?就我的情况而言,我想使用 Apache Web 服务器作为 Glassfish 的前端,这样 Glassfish 就不会直接与外部客户端通信。
因此,这里的主要问题是如何调整上述示例文件以适应所有内容都安装在同一台服务器上的情况,并且 Glassfish 使用 mod_jk 作为 Apache 网络服务器的简单传递?
第二个问题是,最多maxThreads
可以设置多少个?(这是受 AJP13 协议限制的,还是其他什么原因?)
答案1
您这里有几个问题,我会尽量按顺序回答。
也就是说,我认为端口的概念是为了方便机器与机器之间的通信。如果所有东西都在同一台机器上,它们还需要打开一个端口号才能进行通信吗?
是也不是。端口的作用是允许多个基于 IP 的服务相互通信。这并不一定意味着是计算机对计算机。它实际上只意味着您正在与基于 IP 的服务通信。
因此,这里的主要问题是如何调整上述示例文件以适应所有内容都安装在同一台服务器上的情况,并且 Glassfish 使用 mod_jk 作为 Apache 网络服务器的简单传递?
示例是正确的,您仍需要指定 ajp 端口,否则 mod_jk 将无法连接到实例。即使它在同一台机器上,您仍然在建立 IP 套接字连接 - 它只是通过环回适配器而不是像 eth0 这样的标准适配器
第二个问题是,可以设置的最大 maxThreads 数量是多少?(这是受 AJP13 协议限制的,还是其他原因?)
我认为它只是一个 INT - 但我强烈建议不要将其设置为最高设置 - 从 256 开始是一个很好的起点,并监视您的应用程序正在发生的事情以及它真正需要多少个连接。