小编Vil*_*ila的帖子

如何以编程方式仅将特定的 nginx 服务器块设置为维护模式

我正在寻找一种解决方案来自动化我们应用程序的部署过程之一。在部署开始时,我想以编程方式将指定的服务器设置为维护模式,最后在部署完成后,从 nginx 服务器中删除维护模式标志。

通过维护模式,我的意思是 nginx 应该以 HTTP 响应代码 503 响应所有请求(可能带有自定义页面)。

我知道如何设置服务器块以响应 503 代码(请参阅http://www.cyberciti.biz/faq/custom-nginx-maintenance-page-with-http503/)但问题是如何以编程方式执行此操作并且最有效。

我想到了两个选择:

选项1:在部署过程开始时,将维护文件写入文档根目录,并有条件地检查nginx服务器配置中是否存在维护文件:

server {
    if (-f $document_root/in_maintenance_mode) {
        return 503;
    }
}
Run Code Online (Sandbox Code Playgroud)

此方法包含一定的开销,因为每个请求都会检查文件是否存在。是否可以仅在加载 nginx 配置时检查文件是否存在?

选项 2:部署脚本用维护版本替换整个 nginx 服务器配置文件,并在部署结束时将其换回。如果使用此方法,我担心可能会覆盖维护配置文件的其他自动化进程,例如 puppet。

automation maintenance deployment nginx

8
推荐指数
1
解决办法
2353
查看次数

被监控进程的动态数量

我正在使用supervisord 的 [program:x]来保持我的后台队列运行器正常运行。numprocs 的数量设置为静态数字,但现在我正在寻找一种解决方案,根据队列的工作负载动态调整进程计数。

是否可以(以编程方式)更改 supervisord 的 numprocs 设置的数量而不影响已经运行的工人?

background-process queue supervisord

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

如何通过协议通过不同的接口(路由)路由不同的流量?

我在 Linux (iptables) 路由器中有两个不同的 WAN 接口。根据协议(目标 TCP 端口),如何实现通过不同接口路由不同流量的情况?甚至有可能吗?

linux routing iptables

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

用于池 error_log 轮换的 PHP-FPM 信号

我正在为 logrotate 移动我所有服务器的日志轮换任务。服务器有几个 PHP-FPM 池,每个池都配置了一个单独的error_log指令。

日志的 logrotate 配方相当简单:

/var/log/php/*.log
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        dateext
        sharedscripts
        postrotate
                # Need for signaling the php-fpm process?
        endscript
}
Run Code Online (Sandbox Code Playgroud)

我是否应该向 php-fpm 池发送一些信号以捕获 error_log 文件的新句柄(在postrotate脚本中)?如果是,是哪个信号?

logrotate php-fpm

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

服务器之间 crontab 条目的随机化分钟

我有一套用于我们的服务器的通用木偶配方。木偶管理的文件之一是/etc/crontab包含原始cron.daily,cron.weeklycron.monthly条目。

/etc/crontab这里的公共文件的问题是所有的 cronjobs 在我们所有的服务器中都在完全相同的时间运行。例如,每日备份消耗了我们所有的备份服务器资源,因为所有服务器都在同时提供它。

在服务器之间随机化每天/每周/每月运行的确切分钟数的首选方法是什么,同时仍然保持所有服务器之间的木偶配方通用?

我一直在考虑几种不同的选择:

  • 运行sleep$RANDOM实际工作之前。这样,crontab每个主机中的时间都会相似,但运行每日/每周作业的确切时间会有所不同。即使在同一服务器内部也会有变化(例如,每天的运行间隔可能在 23-25 小时之间变化)。
  • 从主机名计算一个整数值,并以at+“基于主机名的整数”分钟运行所有作业。有点hacky,但可能会工作......
  • 其他一些方法,但什么?

linux puppet cron

2
推荐指数
1
解决办法
9410
查看次数