OpenStack 部署完成後,若底層服務器 IP 變更,需同步更新所有組件數據庫中的舊 IP,否則服務註冊、端點訪問、消息隊列連接均會失效。手動逐表修改極易遺漏,本文提供系統化操作流程。
mysql -uroot -p
SHOW DATABASES; # 典型輸出:glance, keystone, nova, neutron, cinder 等
USE keystone; SHOW TABLES;
endpoint 表
SELECT * FROM endpoint; # url 字段包含大量 https://192.168.0.22:xxxx 形式的舊 IP
-- 單條精確更新 UPDATE endpoint SET url='https://NEW_IP:5000/v2.0' WHERE id='2c1bfecbc0354ce8998675ae511139b6'; -- 全表批量替換(推薦) UPDATE endpoint SET url=REPLACE(url, '192.168.0.22', 'NEW_IP');
| 服務 | 數據庫 | 關鍵表 | 關鍵字段 |
|---|---|---|---|
| Keystone | keystone | endpoint, service | url, host |
| Nova | nova | compute_nodes, services, instance_system_metadata | host, ip, host_ip |
| Neutron | neutron | agents, networks, ports | host, ip_address, fixed_ips |
| Glance | glance | images, image_locations | location, url |
| Cinder | cinder | services, volume_admin_metadata | host, ip |
| Placement | placement | resource_providers | root_provider_uuid 關聯 IP |
openstack endpoint list 確認所有端點 IP 已更新。systemctl restart openstack-* 或容器化環境重啟 Pod。openstack compute service list、openstack network agent list 驗證服務狀態正常。編寫 Shell/Python 腳本遍歷上述表,使用 REPLACE() 批量替換,並記錄修改行數與備份原始數據,實現冪等、可回滾的遷移操作。生產環境務必先在測試環境全流程演練。
/etc/keystone/keystone.conf、/etc/nova/nova.conf 等配置文件中的 IP 同步修改。系統化的數據庫批量更新配合全鏈路配置同步,是 OpenStack IP 遷移成功的關鍵。