我们当前的堆栈是 Apache + Tomcat + MySQL,使用ProxyPassAJP 将请求从 Apache 发送到 Tomcat。我们还在相同的站点上为 Wordpress 运行 PHP,因此需要工作.htaccess文件。为了解决一个烦人的问题(请参阅此堆栈溢出页面),我们正在考虑替代堆栈。请注意,我们通常非常喜欢 apache,但这个问题是个障碍:如果我们不能修复它,我们就不能使用 Apache。
替代方案包括:
在我看来,解决方案分为两个阵营:纯 Java 阵营,如 Glassfish;或者分裂阵营,比如我们现在的Apache + Tomcat。我们喜欢纯 Java 解决方案的想法,因为更少的活动部件意味着更少的错误;但是它们中的任何一个都支持 PHP、.htaccess文件等吗?
从理论上讲,我们可以用另一种方式进行拆分——有一个简单的前端,只在需要这些功能的那些位上代理 Apache——但实际上这将是 80% 的请求。
人们建议什么选择?
我们在 EC2 虚拟机上运行 Ubuntu 14.04。我在内核日志中看到了很多这样的错误:
[ 704.032085] xen:balloon: reserve_additional_memory: add_memory() failed: -17
[ 736.096102] xen:balloon: reserve_additional_memory: add_memory() failed: -17
[ 768.160075] xen:balloon: reserve_additional_memory: add_memory() failed: -17
[ 800.224082] xen:balloon: reserve_additional_memory: add_memory() failed: -17
[ 832.288094] xen:balloon: reserve_additional_memory: add_memory() failed: -17
Run Code Online (Sandbox Code Playgroud)
我们显然没有在我们的虚拟机中运行 Xen,所以这些必须表明与主机的内存分配有关。我不认为它会给我们带来任何直接的问题,但这是我们应该关注的问题吗?
我有一个包含一堆同义词域的站点。该站点本身接受所有不同的域,并重定向到正确的域名。
有什么理由不这样配置zones.conf:
zone "correctdomain.com" {
type master;
file "correctdomain.zonefile";
};
zone "synonymdomain.com" {
type master;
file "correctdomain.zonefile";
};
Run Code Online (Sandbox Code Playgroud)
区域文件本身没有与域名相关的任何内容。
我们有越来越多的服务器,包括物理和虚拟服务器,我们需要登录这些服务器。登录通常使用 SSH,使用 RSA 密钥对而不是密码(在 SSH 设置中关闭)。现在我们正在设置我们的密码并将我们的密钥上传到每台机器上,但这很容易发生事故。我们很容易错过一个设置,最终导致团队中的一个无法登录,或者在没有意识到的情况下打开密码访问。
因此,我们希望集中管理这些凭据。它应该设置密码,上传公钥,确保 SSH 具有正确的设置,并且可以轻松添加新用户或删除已离开的用户。
我想将正确的文件复制到正确的位置的脚本可以,但是当它们分散在整个系统中时看起来很混乱。您建议我们如何管理此类凭据?它应该是每台机器上可能实现的最少工作。
在监控服务器的健康状况时,一些故障或警告是紧急的,但其他的只有在它们持续存在时才重要。我在想这样的事情:
如果未解决这些问题可能会成为真正的问题,但已经有后台服务来处理它们 - 无人值守升级、NTP 客户端服务等。在问题出现和这些后台进程开始解决它们之间总是有很短的延迟,并且我们的监视器在那个间隙发送了一系列电子邮件 - 然后在问题解决后一分钟后再次发送。我通常醒来时会收到一大堆“问题”电子邮件,每封电子邮件都会在一分钟后发送相应的“解决方案”电子邮件。危险在于,在忽略一百个不相关的警告时,我可能会错过真正的警告。
那么是否有任何方法可以指示 Icinga 或 Nagios 仅在问题持续超过特定时间(例如 5 分钟)时才报告问题?