标签: tomcat

负载平衡器选项

我正在研究多种可能的负载平衡选项。

到目前为止,我仅限于以下选项:

  • DNS 服务器负载平衡器,平衡到一组 tomcat 服务器,使用 terracotta 进行会话复制。优点 - 不必购买新套件。缺点 - DNS lb 可以继续指向损坏的服务器。

  • 硬件负载平衡器,直接到 tomcat 服务器集群。优点 - 可以有第二个盒子用于故障转移磅。缺点 - 费用。

  • Apache 服务器负载平衡器。优点 - apache 的 lb 轮询损坏的服务器。缺点 - apache 服务器是单点故障,另外需要购买另一台服务器。

还有其他我应该考虑的选择吗?

谢谢。

更新:感谢到目前为止的所有答案+1。尚未接受答案,以保持更多想法。

domain-name-system tomcat load-balancing apache-2.2

25
推荐指数
3
解决办法
3736
查看次数

Apache+Tomcat 通信出现问题。不明确的错误信息。关闭托管在 Tomcat 下的网站

设置:
Fedora 8
Apache 2.2.8
Tomcat 5.5.8
Apache 使用 AJP 转发请求。

问题:
经过一段时间后(根本没有常数,可能在一两个小时之间,或者一天或几天之间)Tomcat 将关闭。它要么停止响应,要么提供通用的“服务暂时不可用”。

诊断:
有两台服务器的设置相同。一个是流量较高的网站(每秒几个请求),另一个是低流量网站(每隔几分钟就有几个请求)。这两个网站是完全不同的代码库,但它们表现出相似的问题。

在第一台服务器上,当问题发生时,所有线程都开始慢慢被占用,直到达到限制(MaxThreads 200)。那时服务器不再响应(并且在很长一段时间后出现服务不可用页面)。

在第二台服务器上,出现问题时,请求需要很长时间,完成后您只能看到服务不可用页面。

除了提到 MaxThreads 问题之外,Tomcat 日志没有指出可能导致此问题的任何特定问题。

但是,在 Apache 日志中,我们看到了涉及 AJP 的随机消息。这是我们看到的随机消息示例(无特定顺序):

[error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
[error] (104)Connection reset by peer: ajp_ilink_receive() can't receive header
[error] proxy: AJP: disabled connection for (localhost)
[error] ajp_read_header: ajp_ilink_receive failed
[error] (120006)APR does not understand this error code: proxy: read response failed from 127.0.0.1:8009 (localhost)
[error] ap_proxy_connect_backend disabling worker for (localhost)
Run Code Online (Sandbox Code Playgroud)

我们在更高流量的服务器上注意到的另一件奇怪的事情是,就在问题开始发生之前,数据库查询所用的时间比以前长得多(2000-5000 …

tomcat ajp apache-2.2

22
推荐指数
3
解决办法
8万
查看次数

无法通过 Tomcat 或外部的 JDBC 连接器连接到 mysql

我已经安装了一个库存的 mysql 5.5 安装,虽然我可以通过 mysql 命令连接到 mysql 服务,并且该服务似乎正在运行,但我无法通过 spring+tomcat 或从外部 jdbc 连接器连接到它。

我正在使用以下网址:

jdbc:mysql://myserver.com:myport/mydb
Run Code Online (Sandbox Code Playgroud)

使用正确的用户名/密码,但我收到以下消息:

server.com: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. the driver has not received any packets from the server.
Run Code Online (Sandbox Code Playgroud)

和 tomcat 抛出:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
Run Code Online (Sandbox Code Playgroud)

这似乎与我尝试从外部连接相同的问题。

mysql tomcat jdbc

21
推荐指数
2
解决办法
24万
查看次数

为什么tomcat7同时登录catalina.out和catalina.YYYY-MM-DD.log?

在OpenBSD 5.2,Tomcat的7.0.29默认安装的似乎是记录所有的错误到两个catalina.outcatalina.YYYY-MM-DD.log

Cns# ll /var/tomcat/logs/catalina.*
-rw-r--r--  1 _tomcat  _tomcat      3067 Jan 16 20:47 /var/tomcat/logs/catalina.2013-01-16.log
-rw-r--r--  1 _tomcat  _tomcat   1313285 Jan 17 21:47 /var/tomcat/logs/catalina.2013-01-17.log
-rw-r--r--  1 _tomcat  _tomcat     19668 Jan 18 17:33 /var/tomcat/logs/catalina.2013-01-18.log
-rw-r--r--  1 _tomcat  _tomcat      2479 Jan 23 15:25 /var/tomcat/logs/catalina.2013-01-23.log
-rw-r--r--  1 _tomcat  _tomcat      1580 Jan 26 22:58 /var/tomcat/logs/catalina.2013-01-26.log
-rw-r--r--  1 _tomcat  _tomcat     48165 Jan 27 19:30 /var/tomcat/logs/catalina.2013-01-27.log
-rw-r--r--  1 _tomcat  _tomcat     34526 Jan 28 16:41 /var/tomcat/logs/catalina.2013-01-28.log
-rw-r--r--  1 _tomcat  _tomcat    141985 Jan 29 23:56 …
Run Code Online (Sandbox Code Playgroud)

tomcat openbsd

21
推荐指数
1
解决办法
4万
查看次数

如何在 Apache Tomcat 中禁用 SSLv3 支持?

我正在尝试将我的 Apache Tomcat 服务器重新配置为仅使用 TLSv1。但是,它仍然使用某些浏览器回退到 SSLv3。

我使用以下设置设置了 <connector> 标签:

<Connector ...
       enableLookups="true" disableUploadTimeout="true"
       acceptCount="100"  maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       clientAuth="false" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA" sslEnabledProtocols="TLSv1" />
Run Code Online (Sandbox Code Playgroud)

我是否缺少配置设置或存在一些我不应该存在的东西?

ssl configuration tomcat poodle

20
推荐指数
1
解决办法
10万
查看次数

如何为 Tomcat 用户使用非明文密码?

在 Ubuntu 10.04.3 LTS 上,安装 Tomcat 6 后,添加 manager/admin 帐户的方法是将这样的记录添加到/etc/tomcat6/tomcat-users.xml

<role rolename="manager"/>
<role rolename="admin"/>
<user username="user" password="password" roles="manager,admin"/>
Run Code Online (Sandbox Code Playgroud)

该密码是明文形式,我对此感到不舒服。有没有办法改用散列之类的东西?如果您有非 Ubuntu 解决方案,我可能可以翻译它。

tomcat tomcat6

19
推荐指数
2
解决办法
2万
查看次数

可以同时使用 Redirect 和 Proxypass

我在 CentOS 上使用 Apache 2.2.15 为 TomCat 应用程序提供 SSL。

ProxyPass / http://127.0.0.1:8090/ connectiontimeout=300 timeout=300
ProxyPassReverse / http://127.0.0.1:8090
Run Code Online (Sandbox Code Playgroud)

这很好用,一切都很好;但是,我想添加以下行:

Redirect permanent /broken/page.html https://www.servername.com/correct/page.html
Run Code Online (Sandbox Code Playgroud)

在上面处理 TomCat 应用程序本身中的错误之前。然而,它似乎并没有像我期望的那样工作(即,它似乎什么都不做,什么也不改变)。是否可以以这种方式使用重定向?不幸的是,我无法编辑该应用程序。

tomcat redirect proxypass apache-2.2

19
推荐指数
2
解决办法
2万
查看次数

Tomcat 中的重定向端口是什么?

很难理解 tomcat 文档,查看 server.xml 您会发现一堆可能难以理解的端口,因为文档中没有真正正确或广泛地解释它。

例如,配置文件中的这一行 server.xml

<Connector port="8345" protocol="AJP/1.3" redirectPort="9875" />

在这里你可以找到另一个重定向端口:

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /> 
Run Code Online (Sandbox Code Playgroud)

我了解连接器端口的作用。在第一种情况下,您使用它在 apache 中创建一个工作程序并将其发送到那里,在第二种情况下,您打开一个端口以直接访问 tomcat。然而,当涉及到重定向端口时,事情就变得模糊了。

下面是 tomcat 文档对 ajp 端口的解释:

如果此连接器支持非 SSL 请求,并且收到匹配需要 SSL 传输的请求,Catalina 将自动将请求重定向到此处指定的端口号。

我总是选择一个超过 1024 的随机重定向端口,它可以工作,

但这什么时候会付诸实践呢?它如何知道请求何时需要 SSL 传输?

我有一个运行 tomcat 模块的卫星服务器。该模块通过将流量从主服务器重定向到带有 apache 的 ajp 连接器而生效,反之亦然。

在主服务器中,https 是在 apache 中强制执行的。这是否意味着所有请求都以加密或纯文本形式发送到卫星服务器?我知道如果我通过端口 8080 访问卫星服务器,它没有被加密,但我想知道这是否也适用于被重定向到主服务器的流量,以及这个重定向端口在哪里生效。

linux tomcat tomcat7

18
推荐指数
1
解决办法
5万
查看次数

如何在 Mac OS X 上启动时启动 Apache Tomcat?

我观察到没有在 OS X 上安装 tomcat 的完整指南,其中包括将其设置为在启动时启动。

这是快速指南:

  • 安装macports
    • suport port upgrade
    • sudo port upgrade outdated.
  • sudo port install tomcat6,或者如果你想要其他版本检查 port list|grep tomcat
  • 配置现在位于: /opt/local/share/java/tomcat6/conf
  • 启动脚本: /opt/local/share/java/tomcat6/bin/tomcatctl

    cp /opt/local/share/java/tomcat6/conf/tomcat-users.xml.sample /opt/local/share/java/tomcat6/conf/tomcat-users.xml nano /opt/local/share/java/tomcat6 /conf/tomcat-users.xml

  • ...检查文章

我错过了如何让它作为真正的服务/守护进程运行的部分:在系统启动时,如果它崩溃,可以选择让它重新启动。

tomcat mac-osx

17
推荐指数
2
解决办法
3万
查看次数

配置 Tomcat 以使用不同的临时目录进行文件上传

我的 Tomcat 实例位于一个几乎没有剩余空间的驱动器上。我正在运行的应用程序确实将文件上传从服务器移到了 NAS。然而,在上传过程中,Tomcat 将这个文件保存在本地,大概在 /temp 目录中。

我的服务器有一个有足够空间的第二个数据驱动器,我想将这个临时目录重新定位到其中。我如何配置 Tomcat 以便它使用另一个驱动器上的临时目录,即。我怎样才能重新定位这个目录?

编辑:我正在运行 Windows 服务器 2k3。我尝试设置 CATALINA_TMPDIR 环境变量,但 Tomcat 似乎忽略了它。

解决方案:我正在使用通过的“Monitor Tomcat”应用程序

-Djava.io.tmpdir=C:\some\default\directory

到JVM。这覆盖了我正在设置的环境变量。您可以在Java > Java 选项下找到它

改变这一点已经解决了我的问题。

tomcat

16
推荐指数
1
解决办法
7万
查看次数