如何为集群服务器按不同工作日调度无人值守升级(unattended-upgrade)
如何为集群服务器按不同工作日调度无人值守升级(unattended-upgrade)
我明白你的顾虑——集群里同时升级多个节点确实风险很高,得错开时间。其实你不用自己造轮子,apt自带的apt-daily-upgrade.timer就是负责触发无人值守升级的核心定时器,你之前看到的unattended-upgrades.service只是关机时等待升级完成的辅助服务,不是定时执行的那个,这应该是你之前困惑的点。
下面是具体的配置步骤,每个节点按需求单独设置即可:
1. 复制并修改定时器配置文件
系统默认的apt-daily-upgrade.timer在/lib/systemd/system/下,直接修改会被系统更新覆盖,所以先把它复制到/etc/systemd/system/目录下自定义:
cp /lib/systemd/system/apt-daily-upgrade.timer /etc/systemd/system/
然后编辑这个复制后的文件,找到OnCalendar字段(默认是每天随机时间段触发),改成对应工作日的固定时间:
- 周一升级的节点:将
OnCalendar改为OnCalendar=Mon *-*-* 06:00:00(时间可以根据业务低谷调整,比如凌晨2点) - 周三升级的节点:改为
OnCalendar=Wed *-*-* 06:00:00 - 周五升级的节点:改为
OnCalendar=Fri *-*-* 06:00:00
如果需要取消随机延迟(默认有RandomizedDelaySec=1h,会在设定时间前后1小时随机触发),可以添加或修改这一行:
RandomizedDelaySec=0
2. 生效配置并验证
修改完配置后,重新加载systemd并重启定时器:
systemctl daemon-reload systemctl restart apt-daily-upgrade.timer
用以下命令确认定时器的下次执行时间是否符合预期:
systemctl list-timers apt-daily-upgrade.timer
3. 确认无人值守升级的核心配置
最后检查unattended-upgrades的主配置文件/etc/apt/apt.conf.d/50unattended-upgrades,确保关键选项正确:
Unattended-Upgrade::Allowed-Origins:确认包含你需要的升级源(比如Ubuntu的安全更新源)Unattended-Upgrade::Automatic-Reboot:如果升级后需要自动重启,设置为true,并可通过Unattended-Upgrade::Automatic-Reboot-Time指定重启时间(如"03:00")Unattended-Upgrade::Remove-Unused-Kernel-Packages:建议设为true,自动清理旧内核释放磁盘空间
这样每个节点就会在你指定的工作日执行无人值守升级,完美错开集群节点的升级时间,避免同时下线的风险。
备注:内容来源于stack exchange,提问作者azzid
相关产品推荐
相关产品推荐

