Freeshell 控制面板修复状态显示

从10月3日 blog 服务器添加移动线路 IP 地址,freeshell 控制面板就不能正常显示 freeshell 的状态。原因是 freeshell 所在 blog 服务器的默认出站IP变成了 202.141.176.99,控制面板与虚拟机节点是通过 ssh 通信的。而虚拟机节点上的 authorized_keys 上限制了连接IP为 202.141.160.99,因此 ssh 连接被拒绝。

把到校内网络的默认路由改成 202.141.160.99 的线路后,问题解决。感谢 崔灏 同学的问题报告。

Gitlab的bug修复

gitlab升级到6.0之后,用户在新建project选择namespace的时候,会发现无法选择以前创建的group。这个bug推测是升级的时候造成的。

原因是在users_groups这个表中无法找到这些组的信息。

$ mysql -u root -p

$ use gitlab;

$ show tables;

users_groups表存储了用户和group的关系,其中的group_access推测是权限,50是指group owner。

namespaces表储存了namespace。这里的id就是users_groups表中的group_id。

将丢失的信息重新加进去就可以了

GitLab 支持 SPDY 协议

GitLab 支持 Google 提出的 SPDY 协议,通过压缩、多路复用,可以有效加速 HTTPS 协议。我们使用了 Nginx 1.4 开始内置的 SPDY 模块,支持 SPDY/2 协议。

赶快来体验 SPDY-enabled 的 gitgeek.net 吧!

  1. 用 Chrome 浏览器,先访问 https://gitgeek.net/users/sign_in 再访问 chrome://net-internals/#spdy 看 gitgeek.net 是否在 SPDY Sessions 列表中。
  2. 使用第三方 SDPY 协议验证工具:http://spdycheck.org/#gitgeek.net

To GitLab Maintainers: SPDY 需要 Nginx 1.4+ 和 OpenSSL 1.0.1c+,Nginx 1.5.6 是从官网上下载源码编译的,OpenSSL 1.0.1e 是加入了 Debian sid 源后升级的(原来是 OpenSSL 0.9.8)。OpenSSL 1.0.1e 又依赖 gcc 4.5+,而 Debian squeeze 上的 gcc 是 4.4.x,因此把 gcc 也升级到了 4.8,libc 也升级到了 2.17。不要随意执行 apt-get upgrade 了,以免把整个系统升级到 sid。

Freeshell 修复访问校外网络

早先 Freeshell 节点上配置的 NAT 是写死的 IPv4 地址,因此与 blog 服务器之间的 OpenVPN 连接断开重连之后,IP 地址一改变,NAT 就不能工作了。因此前些天重启 blog 上的 OpenVPN 服务后 Freeshell 的外网连接就一直不可用。

现在改成了 MASQUERADE 模式,不论 IP 地址怎么变,NAT 都能工作。初步测试各 freeshell 节点的外网连接恢复。

BTW,LUG VPN IPv4 出国会自动选择合适的路线。大家可以用 curl -4 -vv googleblog.blogspot.com 测试。注意,IPv6 可能被 connection reset。对某些不存在的站点,DNS 是错误的,请手动设置 8.8.8.8 作为 DNS。

lug.ustc.edu.cn 临时切换到 blog 服务器

由于 lug 服务器发生严重故障,且这几天是十一假期,无法进入机房修复,我们把 lug.ustc.edu.cn 的 DNS 临时切换到 blog 服务器。原来的 LUG 服务器可以通过 ftp.lug.ustc.edu.cn 访问。

目前 lug.ustc.edu.cn 只提供 wiki 服务,即 LUG 主页运行正常。ServMon 监控服务也已经转移。未恢复的服务包括:

  • LUG FTP
  • LUG TimeMachine
  • Ganglia 服务监控 status.lug.ustc.edu.cn

上述服务需要等 lug 服务器恢复,非常抱歉。LUG 服务器上的一些其他服务,包括 {php,roundup}.lug.ustc.edu.cn 均无法使用。

Blog 服务器添加移动线路

重启成功,所有服务自动启动,服务中断时间在2分钟以内。

blog.ustc.edu.cn 和 freeshell.ustc.edu.cn 都添加了 202.141.176.99 这个移动线路的IP。目前设置电信线路、教育网解析到原来的 202.141.160.99 电信IP,其余(包括但不限于移动、联通、国外)解析到新加的移动IP。预计 blog 在国外的访问速度将有明显改善。

Blog 服务器还储备了 202.141.176.112 和 202.141.176.113 两个移动IP,可用于其他不共享 SSL 证书的站点。

blog 服务器重启公告

网络中心 jameszhang 给 blog.ustc.edu.cn 服务器(虚拟机)添加了几个移动线路的IP,需要重启才能看到。因此今天我们将对 blog 服务器进行重启。受影响的服务包括:

  • blog.ustc.edu.cn 全站
  • freeshell.ustc.edu.cn 控制面板
  • LUG VPN
  • freeshell 虚拟机的校外网络连接
  • archive.lug.ustc.edu.cn 邮件列表存档

lug.ustc.edu.cn 故障通告

前几天有同学不慎写错了 sudoers,导致 lug.ustc.edu.cn 服务器无法 sudo。这个问题尚未解决,今天就发现 php-fpm 服务不知什么时候挂掉了,导致 lug.ustc.edu.cn 无法访问。status.lug.ustc.edu.cn 由于是用 PHP 做 Web 界面,也挂掉了。我们就 LUG 主页挂掉带来的不便谨致歉意。

USTC Blog 近几天的 502 Bad Gateway

近几天 blog.ustc.edu.cn 频繁发生 502 Bad Gateway 故障。之前多次发生的内存溢出(OOM Kill)是由于 php-fpm worker 内存泄漏。开始以为是有攻击者频繁访问那个特殊 URL 导致的,但事实上我频繁访问其他的 URL,也能观察到内存泄漏。频繁访问 phpinfo 没有检测到内存泄漏,因此怀疑是数据库连接部分捣的鬼。

临时解决方案是,在 php-fpm.conf 里设置了 pm.max_requests = 500,即每个 worker 处理 500 个请求后就自动退出,respawn 新的 worker,这样内存泄漏的数量就是可控的。

今天又发生了 502 Bad Gateway,不过从 status.lug.ustc.edu.cn 上看到的各项系统指标都比较正常。但 php-fpm master 所监听的 socket 就是不接受连接。

为了应对这种古怪的情况,我们添加了 cron 脚本,每分钟检查 USTC Blog 首页和一个用户 blog 首页的可用性,发现错误就立即重启 php-sandbox 服务,如果还没有恢复就再重启 mysql 和 php-sandbox 服务。希望这个自动重启服务的程序能在关键时刻起作用,缩短服务中断时间。