Skip to main content

升级与备份

哪些层能原地升级、怎么升、怎么回滚;每日自动备份产出什么、全量备份什么时候做、恢复到同机和换机的区别。

只适用于模型 B。模型 A 容器一体机不支持保数据升级,换镜像要删卷,身份库随之清空;生产用模型 B。

升级

原地升级方式
管理台(dist/换目录,不重启
许可层覆盖 py 文件,按下表重启
配置 / playbook重跑 playbook,幂等
FreeIPA 本体(ipa-server RPM)不做见下
操作系统大版本不做重装加恢复,专项方案

IDMatrix 的版本迭代(功能、汉化、门控、修 bug)全落在前三行,不碰 FreeIPA 本体。

升级前

sudo ipa-backup                                                       # 全量,停 dirsrv 约 30 秒,走维护窗口
sudo tar czf /root/license-state-preupgrade.tgz -C /var/lib idmatrix-license   # 许可状态不在 ipa-backup 里
rpm -q ipa-server; ls -la /opt/idmatrix/dist/index.html               # 记下版本,回滚用

留着上一版的 bundle。

推荐:重跑 playbook

拿新 bundle,沿用旧的 customer.env,只把 IDM_WEBUI_DIST_SRCIDM_LIC_SRC 指到新 bundle,重跑:

cd < bundle> && ./deploy/render-inventory.sh
ansible-playbook -i deploy/inventory.generated.yml deploy-ipaserver.yml

ipaserver 角色看到 IPA 已装就跳过;管理台和许可层的文件覆盖后触发对应重启。

手工:只换管理台

构建产物带内容 hash,先清空再解,否则新旧文件堆积:

cd /opt/idmatrix/dist && find . -mindepth 1 -delete
tar xzf /tmp/dist-<新版>.tar.gz -C /opt/idmatrix/dist

纯静态,不重启任何服务,浏览器 Ctrl+F5。

手工:只换许可层

sudo install -m 0755 -o root -g root <>/license_gate.py <>/gate_wsgi.py /opt/idmatrix-license/
sudo rm -rf /opt/idmatrix-license/__pycache__
python3 /opt/idmatrix-license/license_gate.py       # 必须 self-test: PASS
sudo systemctl restart httpd
改了什么重启原因
gate_wsgi.py / license_gate.pysystemctl restart httpdmod_wsgi 守护进程要重新 import
idmatrix_hostlimit.py(服务端插件)ipactl restart插件在 api.finalize() 时加载
phonehome.py / license_api.py不用每次调用起新进程

升级后自检三条:curl -sk -o /dev/null -w '%{http_code}\n' https://<FQDN>/ipa/modern-ui/ 是 200;ipa user-show admin 正常;status.jsonvalid 没变。然后挑一个未授权模块做一次写操作,确认被拒。闸门改坏的症状是放行了本该拦的,不是报错。

不做原地升级的:FreeIPA 本体

不随 IDMatrix 版本升级。气隙环境没有 yum 源,跨版本升级要完整依赖闭包;跨大版本要跑 ipa-server-upgrade,涉及 schema 迁移,失败难回滚;备份恢复要求同版本,升完 IPA,旧备份就恢复不回去。需要升级(安全公告等)时联系 Reallysec 按专项方案走,不要自行 dnf update ipa-server

回滚

升的什么回滚
管理台清空 dist/,解上一版
许可层覆盖回上一版 py,按上表重启
数据出问题ipa-restore <升级前的全量备份>,还原 license-state-preupgrade.tgz

备份

两样都要备:IPA 身份库(用户、组、主机、策略、证书、CA、DNS)和许可状态/var/lib/idmatrix-license/)。

备份含 CA 私钥和目录数据。传出主机后加密保存,访问受限。

两种备份

命令范围服务用途
ipa-backup全量:数据 + CA + 证书 + 配置停 dirsrv 约 30 秒整机灾备;每周,以及建信任、批量改策略、升级之前
ipa-backup --data --online只有 LDAP 数据不中断每日,装机已自动配好

产物在 /var/lib/ipa/backup/ipa-full-<时间戳>ipa-data-<时间戳>不会自动离机,必须拷出去,至少留两代。

每日自动备份

playbook 装了 /usr/local/sbin/idmatrix-backup.shidmatrix-backup.timer,每日 02:30 产出两样,约 5 秒,不停服务:

产物路径
数据备份/var/lib/ipa/backup/ipa-data-<时间戳>/
许可状态/var/lib/ipa/backup/license-state-<时间戳>.tgz

超过 14 天的自动清理(idm_backup_keep_days)。客户自带备份系统时装机设 idm_setup_backup=false。查看 systemctl list-timers idmatrix-backup.timerjournalctl -u idmatrix-backup.service;手动跑 systemctl start idmatrix-backup.service

多 master 时

两台 IPA 各自备份。全量恢复只在一台上做,恢复后其他 replica 要从它重新初始化(ipa-replica-manage re-initialize --from <恢复的那台>),否则数据冲突。

恢复

恢复覆盖现有身份库,ipa-restore 期间服务中断约 45 秒,走维护窗口。

前提:同版本 IPA、同 hostname / realm / domain。全量恢复通常在一台干净装好 IPA 的主机上做。

sudo cp -a /离机位置/ipa-full-<时间> /var/lib/ipa/backup/
sudo ipa-restore /var/lib/ipa/backup/ipa-full-<时间>
# 只在恢复到同一台主机时
sudo tar xzf license-state.tgz -C /var/lib
sudo systemctl restart httpd

恢复后核对:ipactl status 全 RUNNING;kinit admin && ipa user-find --sizelimit=1;有 AD 信任的 ipa trust-show <AD域>;管理台 License Activation 页状态是 valid。

两条正常输出不是故障:Could not open file for writing: /etc/httpd/conf.d/nss.conf(当前版本用 mod_ssl,该文件本就不存在);「各副本需重新初始化」的提示(单机部署不涉及,多 master 按上面处理)。

恢复到哪台机器决定许可是否还有效

恢复到machine-id许可
同一台主机(重装、回滚)不变仍有效,连 /var/lib/idmatrix-license 一起还原
新主机、换硬件(灾备重建)变了失效。取新指纹,Reallysec 重签,激活页上传

灾备重建顺序:新主机装同版本 IPA(同 hostname / realm)→ ipa-restore → 身份库回来 → 新指纹重签许可 → 有 AD 信任的验 ipa trust-showid <AD用户>@<AD域>

实测(4 GB / 2 vCPU 单机):全量备份 30 秒,全量恢复 45 秒,恢复后 11 个服务全起、备份之后建的对象被回滚、AD 信任存活、管理台 200。

本页内容