一、服务自启动检查与配置
检查当前服务自启状态
# 查看所有 OpenStack 相关服务的开机自启状态
sudo systemctl list-unit-files | grep -E 'neutron|nova|glance|keystone|cinder|heat|horizon|apache2|mysql|rabbitmq'

二、配置服务开机自启
1. 原生 OpenStack 服务(非 DevStack)
# 启用所有核心服务
sudo systemctl enable mysql rabbitmq-server apache2 \
keystone glance-api nova-api nova-compute \
neutron-server neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent \
cinder-api cinder-scheduler cinder-volume
2. DevStack 环境服务自启
DevStack 默认使用 screen 管理服务,需手动创建 Systemd 单元文件。
2.1 创建服务单元文件示例
# 示例:Nova 服务
sudo tee /etc/systemd/system/devstack-nova.service << EOF
[Unit]
Description=DevStack Nova Services
After=mysql.service rabbitmq-server.service
[Service]
ExecStart=/opt/stack/devstack/rejoin-stack.sh nova
WorkingDirectory=/opt/stack/devstack
User=stack
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 示例:Neutron 服务
sudo tee /etc/systemd/system/devstack-neutron.service << EOF
[Unit]
Description=DevStack Neutron Services
After=mysql.service rabbitmq-server.service
[Service]
ExecStart=/opt/stack/devstack/rejoin-stack.sh neutron
WorkingDirectory=/opt/stack/devstack
User=stack
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
2.2 启用服务
sudo systemctl daemon-reload
sudo systemctl enable devstack-nova.service devstack-neutron.service
三、服务状态检查命令
1. 数据库与消息队列
# MySQL 状态
sudo systemctl status mysql
mysql -u root -p -e "SHOW DATABASES;"
# RabbitMQ 状态
sudo systemctl status rabbitmq-server
sudo rabbitmqctl cluster_status
2. Keystone(认证服务)
sudo systemctl status keystone
openstack token issue
3. Glance(镜像服务)
sudo systemctl status glance-api
openstack image list
4. Nova(计算服务)
sudo systemctl status nova-api nova-compute
openstack compute service list
5. Neutron(网络服务)
sudo systemctl status neutron-server neutron-l3-agent neutron-dhcp-agent
openstack network agent list
6. Cinder(块存储服务)
sudo systemctl status cinder-api cinder-scheduler cinder-volume
openstack volume service list
7. Horizon(Dashboard)
sudo systemctl status apache2
curl -I http://localhost/dashboard
四、新增配置与依赖检查
# 检查服务启动顺序(依赖关系)
systemctl list-dependencies mysql.service rabbitmq-server.service
2. 防火墙配置(可选)
# 开放 API 端口
sudo ufw allow 5000/tcp # Keystone
sudo ufw allow 9292/tcp # Glance
sudo ufw allow 8774/tcp # Nova
sudo ufw allow 9696/tcp # Neutron
3. 日志文件路径

五、故障排查
1. 服务启动失败
# 查看服务日志
journalctl -u <服务名>.service --since "10 minutes ago"
# 示例:查看 Nova API 日志
journalctl -u nova-api.service
2. 端口冲突
# 检查端口占用
sudo netstat -tulnp | grep ':5000\|:9292\|:8774\|:9696'
3. 数据库连接问题
# 检查数据库用户权限
mysql -u root -p -e "SHOW GRANTS FOR 'nova'@'%';"
六、最终验证
1. 全服务状态检查
openstack catalog list
openstack compute service list
openstack network agent list
openstack volume service list
2. 实例创建与网络测试
# 创建测试实例
openstack server create --image cirros --flavor m1.tiny test-instance
# 分配浮动 IP 并测试
FLOATING_IP=$(openstack floating ip create ext-net -f value -c floating_ip_address)
openstack server add floating ip test-instance $FLOATING_IP
ping $FLOATING_IP
附录:服务自启配置文件示例
1. Nova Systemd 单元文件
# /etc/systemd/system/nova-api.service
[Unit]
Description=OpenStack Nova API Server
After=network.target mysql.service rabbitmq-server.service
[Service]
ExecStart=/usr/bin/nova-api
User=nova
Restart=on-failure
[Install]
WantedBy=multi-user.target
2. Neutron Systemd 单元文件
# /etc/systemd/system/neutron-server.service
[Unit]
Description=OpenStack Neutron Server
After=network.target mysql.service rabbitmq-server.service
[Service]
ExecStart=/usr/bin/neutron-server
User=neutron
Restart=on-failure
[Install]
WantedBy=multi-user.target
说明:
- 如果是 DevStack 部署,优先使用 devstack-*.service 单元文件。
- 如果是 原生 OpenStack 部署,直接使用系统内置的 nova-api.service 等。
- 所有操作需在 物理机控制台 或 带外管理界面 执行,避免网络中断导致失联。
550

被折叠的 条评论
为什么被折叠?



