我们使用 mod_cache 在 Apache 2.2.19 后面运行 Plone 3.3.6。我们最近注意到 Apache 正在缓存对范围请求的 206 响应,然后在发出对完整资源的请求时提供该部分响应。
似乎发生了什么:
这偶尔会导致我们在某些网站上的 css 出现问题
我可以始终如一地复制这一点:我编写了一个小 Python 脚本来发出范围请求。
我认为我们的 Apache 配置没有做任何不寻常的事情。我们使用反向代理配置来提供来自 Plone 的页面。mod_cache相关的Apache配置如下:
CacheEnable disk /
CacheDisable /static
CacheDisable /sitemap.xml.gz
CacheDisable /robots.txt
CacheIgnoreHeaders Set-Cookie
UseCanonicalName On
RequestHeader edit Accept-Encoding ^.*gzip.*$ gzip early
RequestHeader edit Accept-Encoding ^(?!gzip).*$ "" early
Run Code Online (Sandbox Code Playgroud)
在Apache的缓存导不包括在响应“必须有”为它缓存状态代码表206级的响应。这是 Apache 中的错误还是我们在配置中做错了什么?
我们在其中一台服务器上安装了 munin 监控。一般来说,它似乎运行良好,但有时,准确地说是 2 个月内 4 次,munin-cron 会产生以下错误:
[致命] 这里没有什么可做的,因为没有带有任何插件的节点。请参阅http://munin-monitoring.org/wiki/FAQ_no_graphs在 /usr/share/munin/munin-html 第 38 行
在搜索此错误时,我只能找到 munin 根本无法工作的问题,而不是我们面临的间歇性问题。
一些帮助防止此错误或如何调试它将不胜感激。
我们正在运行 CentOS 5.5,使用 yum 安装的 Munin 1.4.5。
我只是根据最近的安全公告对我们运行 Zope 的方式进行了一些更改。在咨询中它说:
“确保 Zope/Plone 服务以最低权限运行。理想情况下,Zope 和 ZEO 服务应该只能写入日志和数据目录。”
目前我们有一个专门的 linux 用户运行 buildout,启动和停止服务器并运行 Zope 服务。我们使用supervisord来管理我们并行运行的两个 Zope 实例(relstorage 后端)。
我们当前的 zope 用户需要的不仅仅是日志和数据目录的写权限,以便它可以运行 buildout,所以我选择创建一个额外的 linux 用户 zoperun 来实际运行 zope 服务。zoperun 与 zope 在同一个组中,并且只有对 var 目录的写权限。除了一件事之外,这一切都很好:我希望原始 zope 用户能够使用 supervisorctl 启动和停止 zope 实例。
我不能让这个工作。例如,当我尝试运行时,bin/supervisorctl status
我得到
错误:,[Errno 13] 权限被拒绝:文件:行:1
我认为这是因为主管套接字没有组读写权限
srw------- 1 zoperun zopeour 0 Sep 30 09:00 supervisor.sock
我已经umask = 002
在 supervisord 配置中进行了设置,但这对这个 superctl 套接字没有影响。
有什么办法可以实现我想要的吗?
我正在测试运行 HAProxy 作为 Apache 2.2 后面的专用负载均衡器,替换我们当前使用 Apache 负载均衡器的配置。在我们当前的 Apache 设置中,如果所有后端(源)服务器都关闭,Apache 将提供 503 服务不可用消息。使用 HAProxy,我得到 502 错误的网关响应。
我在 Apache 中使用了一个简单的反向代理重写规则
RewriteRule ^/(.*) http://127.0.0.1:8000/$1 [last,proxy]
Run Code Online (Sandbox Code Playgroud)
在 HAProxy 我有以下(在默认 tcp 模式下运行)
defaults
log global
option tcp-smart-accept
timeout connect 7s
timeout client 60s
timeout queue 120s
timeout server 60s
listen my_server 127.0.0.1:8000
balance leastconn
server backend1 127.0.0.1:8001 check observe layer4 maxconn 2
server backend1 127.0.0.1:8001 check observe layer4 maxconn 2
Run Code Online (Sandbox Code Playgroud)
在后端服务器关闭时测试直接连接到负载均衡器:
[root@dev ~]# wget http://127.0.0.1:8000/ test.html
--2012-05-28 11:45:28-- http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP …
Run Code Online (Sandbox Code Playgroud) apache-2.2 ×2
linux ×2
plone ×2
cache ×1
centos ×1
haproxy ×1
mod-cache ×1
monitoring ×1
munin ×1
permissions ×1
supervisord ×1
zope ×1