笔者遇到的丢失情况,在启动neutron-server的时候 报错如下
2019-03-28 19:50:14.383 26351 ERROR oslo_service.service MessageDeliveryFailure: Unable
to connect to AMQP server on db-vip:5672 after None tries: (0, 0): (403) ACCESS_REFUSED
- Login was refused using authentication mechanism AMQPLAIN. For details see the broker
logfile.
可发现与rabbitmq组件有关,用rabbitmqctl list_users发现缺少之前建立好的用户openstack,其缺失的原因在于重启后rabbitmq用户信息丢失,用如下命令添加用户
rabbitmqctl add_user openstack openstack
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
rabbitmqctl set_user_tags openstack administrator
systemctl restart rabbitmq-server.service
为了确保下次重启不致rabbitmq用户丢失,作如下处理
echo 'NODENAME=rabbit@controller1' | sudo tee -a /etc/rabbitmq/rabbitmq-env.conf
############# 默认用户@节点hostname
用户丢失的真实原因,摘自https://www.lucissfer.com/2018/05/07/Centos7%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AERabbitMQ/,引用如下
在部署配置完成后,重启了一次服务器,服务器启动后重新启动RabbitMQ服务,结果神奇的发现RabbitMQ用户丢失了。
原因如下:
RabbitMQ数据是根据当前hostname作为node节点作为数据名保存
# ls /data/program/rabbitmq/var/lib/rabbitmq/mnesia/
rabbit@Centos7-01 rabbit@Centos7-01.pid rabbit@Centos7-01-plugins-expand
重启服务器之前我修改了hostname,所以重启之后,RabbitMQ服务使用新的hostname来保存数据。
可以通过添加RabbitMQ固定节点名字,保证数据文件不变。