在特定日期进行无人值守升级?

在特定日期进行无人值守升级?

我有几个集群服务器,我想用无人值守升级来升级它们 - 但要在一周的不同日子里进行。由于我可能会丢失集群中的多个节点,所以我想确保一个节点在周一运行无人值守升级,一个在周三运行,一个在周五运行。

看看无人值守升级,我对调度有点困惑。systemd-timers与 apt 相关的有多个:

$ systemctl list-timers | head -1; systemctl list-timers | grep -e apt -e update; systemctl list-timers | tail -3
NEXT                        LEFT           LAST                        PASSED       UNIT                           ACTIVATES
Fri 2023-12-08 12:09:06 CET 2h 10min left  Fri 2023-12-08 04:59:42 CET 4h 58min ago apt-daily.timer                apt-daily.service
Fri 2023-12-08 14:49:29 CET 4h 51min left  Thu 2023-12-07 14:49:29 CET 19h ago      update-notifier-download.timer update-notifier-download.service
Sat 2023-12-09 06:08:14 CET 20h left       Fri 2023-12-08 06:27:50 CET 3h 30min ago apt-daily-upgrade.timer        apt-daily-upgrade.service
Mon 2023-12-11 00:28:08 CET 2 days left    Fri 2023-12-08 04:10:29 CET 5h 47min ago update-notifier-motd.timer     update-notifier-motd.service

12 timers listed.
Pass --all to see loaded but inactive timers, too.

但似乎都没有引发unattended-upgrades

有一个system.service——但是它好像没有很丰富的调度功能:

$ systemctl status unattended-upgrades
● unattended-upgrades.service - Unattended Upgrades Shutdown
     Loaded: loaded (/lib/systemd/system/unattended-upgrades.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-11-17 14:40:05 CET; 2 weeks 6 days ago
       Docs: man:unattended-upgrade(8)
   Main PID: 866 (unattended-upgr)
      Tasks: 2 (limit: 9389)
     Memory: 10.8M
        CPU: 83ms
     CGroup: /system.slice/unattended-upgrades.service
             └─866 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal

Nov 17 14:40:05 hostname systemd[1]: Started Unattended Upgrades Shutdown.

我想我可以写我自己的 timer并让它触发另一次调用unattended-upgrades- 但这感觉有点像过度设计某些东西,而其他人可能已经更好地解决了这个问题。

我该如何分配unattended-upgrade一周内的日程?

答案1

对于大多数集群管理员来说,默认设置应该可以确保安全操作,而无需进行任何特殊调整。

无人值守升级会自动安排下载和运行的随机间隔。这是为了避免在时钟间隔内用数百万个请求来打击镜像,但也意味着集群中的机器应该已经被随机数量所抵消。

此外,无人值守升级旨在您的服务器继续正常运行时不被打扰地进行。

无人值守升级不应该导致服务器退出集群,除非在极少数情况下需要重新启动(内核更新)并且您已启用 apt 来触发重新启动(默认=禁用)。

  • 由于这是您更改的设置,因此您可以将其改回。

您也可以使用计时器。apt-daily-upgrade.timer是无人值守升级的触发器(.timer,不是.service

不要编辑默认计时器(/lib/systemd/system/apt-daily-upgrade.timer),因为您的编辑将在下次包升级时被覆盖。

相反,创建一个覆盖文件 ( /etc/systemd/system/apt-daily-upgrade.timer) 来进行更改。

[Unit]
Description=Daily apt upgrade and clean activities
After=apt-daily.timer

[Timer]
OnCalendar=*-*-* 6:00    <------ Edit this timer setting
RandomizedDelaySec=60m   <------ Or change your randomization
Persistent=true

[Install]
WantedBy=timers.target

参考:可接受的 OnCalendar 格式

如果您确实对计时器或服务进行了更改,请记住在 24-48 小时内回访,以确保无人值守升级确实在进行,并且按照您期望的时间表进行。您刚刚拆卸并重新组装了 Ubuntu 系统的一个关键安全组件,因此检查是否存在愚蠢或错误是您的责任。

相关内容