openstack给keystone同步数据库出错WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 8 attempts le

本文记录了在执行Keystone数据库同步过程中遇到的连接失败问题,并提供了详细的错误日志及解决方法,即通过修改控制器节点上的/etc/hosts文件来解决数据库连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行su -s /bin/sh -c “keystone-manage db_sync” keystone 报错

解决方法:

· 在controller节点上,修改 /etc/hosts
添加:
192.168.221.101 controller

注意,192.168.221.101是controller节点的ip,请根据自己的更改 ·

报错如下

Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
     * Setting up iSCSI targets
   ...done.
2013-12-02 11:56:28  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 10 attempts left.
2013-12-02 11:56:41  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 9 attempts left.
2013-12-02 11:56:54  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 8 attempts left.
2013-12-02 11:57:07  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 7 attempts left.
2013-12-02 11:57:20  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 6 attempts left.
2013-12-02 11:57:33  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 5 attempts left.
2013-12-02 11:57:46  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 4 attempts left.
2013-12-02 11:57:59  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 3 attempts left.
2013-12-02 11:58:12  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 2 attempts left.
2013-12-02 11:58:25  WARNING [cinder.db.sqlalchemy.session] SQL connection failed. 1 attempts left.
2013-12-02 11:58:38 CRITICAL [cinder] (OperationalError) (2003, "Can't connect to MySQL server on '172.30.0.200' (113)") None None
Traceback (most recent call last):
  File "/usr/bin/cinder-manage", line 794, in <module>
    main()
  File "/usr/bin/cinder-manage", line 791, in main
    fn(*fn_args)
  File "/usr/bin/cinder-manage", line 219, in sync
    return migration.db_sync(version)
  File "/usr/lib/python2.7/dist-packages/cinder/db/migration.py", line 33, in db_sync
    return IMPL.db_sync(version=version)
  File "/usr/lib/python2.7/dist-packages/cinder/db/sqlalchemy/migration.py", line 76, in db_sync
    current_version = db_version()
  File "/usr/lib/python2.7/dist-packages/cinder/db/sqlalchemy/migration.py", line 88, in db_version
    return versioning_api.db_version(get_engine(), repository)
  File "/usr/lib/python2.7/dist-packages/cinder/db/sqlalchemy/session.py", line 138, in get_engine
    _ENGINE.connect()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2471, in connect
    return self._connection_cls(self, **kwargs)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 878, in __init__
    self.__connection = connection or engine.raw_connection()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2557, in raw_connection
    return self.pool.unique_connection()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 184, in unique_connection
    return _ConnectionFairy(self).checkout()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 401, in __init__
    rec = self._connection_record = pool._do_get()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 746, in _do_get
    con = self._create_connection()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 189, in _create_connection
    return _ConnectionRecord(self)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 282, in __init__
    self.connection = self.__connect()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 344, in __connect
    connection = self.__pool._creator()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 80, in connect
    return dialect.connect(*cargs, **cparams)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 281, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on '172.30.0.200' (113)") None None
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.2862e-05 s, 0.0 kB/s
  Physical volume "/dev/loop2" successfully created
  Volume group "cinder-volumes" successfully created
cinder-api stop/waiting
cinder-api start/running, process 18907
cinder-scheduler stop/waiting
cinder-scheduler start/running, process 18918
stop: Unknown instance: 
cinder-volume start/running, process 18929

或者是这样报错

fatal: [controller]: FAILED! => {"changed": true, "cmd": "su -s /bin/sh -c \"keystone-manage db_sync\" keystone", "delta": "0:01:44.650785", "end": "2017-12-07 12:09:09.043452", "msg": "non-zero return code", "rc": 1, "start": "2017-12-07 12:07:24.392667", "stderr": "2017-12-07 12:07:28.645 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 10 attempts left.\n2017-12-07 12:07:38.658 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 9 attempts left.\n2017-12-07 12:07:48.669 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 8 attempts left.\n2017-12-07 12:07:58.683 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 7 attempts left.\n2017-12-07 12:08:08.689 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 6 attempts left.\n2017-12-07 12:08:18.702 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 5 attempts left.\n2017-12-07 12:08:28.714 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 4 attempts left.\n2017-12-07 12:08:38.726 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 3 attempts left.\n2017-12-07 12:08:48.738 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 2 attempts left.\n2017-12-07 12:08:58.758 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 1 attempts left.\n2017-12-07 12:09:08.771 11174 CRITICAL keystone [-] DBConnectionError: (pymysql.err.OperationalError) (2003, \"Can't connect to MySQL server on 'controller' ([Errno 111] Connection refused)\")\n2017-12-07 12:09:08.771 11174 ERROR keystone Traceback (most recent call last):\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/bin/keystone-manage\", line 10, in <module>\n2017-12-07 12:09:08.771 11174 ERROR keystone     sys.exit(main())\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/cmd/manage.py\", line 44, in main\n2017-12-07 12:09:08.771 11174 ERROR keystone     cli.main(argv=sys.argv, config_files=config_files)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/cmd/cli.py\", line 1294, in main\n2017-12-07 12:09:08.771 11174 ERROR keystone     CONF.command.cmd_class.main()\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/cmd/cli.py\", line 461, in main\n2017-12-07 12:09:08.771 11174 ERROR keystone     CONF.command.version)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/common/sql/migration_helpers.py\", line 207, in offline_sync_database_to_version\n2017-12-07 12:09:08.771 11174 ERROR keystone     expand_schema()\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/common/sql/migration_helpers.py\", line 232, in expand_schema\n2017-12-07 12:09:08.771 11174 ERROR keystone     _sync_common_repo(version=None)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/common/sql/migration_helpers.py\", line 123, in _sync_common_repo\n2017-12-07 12:09:08.771 11174 ERROR keystone     with sql.session_for_write() as session:\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/contextlib.py\", line 17, in __enter__\n2017-12-07 12:09:08.771 11174 ERROR keystone     return self.gen.next()\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 874, in _transaction_scope\n2017-12-07 12:09:08.771 11174 ERROR keystone     allow_async=self._allow_async) as resource:\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/contextlib.py\", line 17, in __enter__\n2017-12-07 12:09:08.771 11174 ERROR keystone     return self.gen.next()\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 518, in _session\n2017-12-07 12:09:08.771 11174 ERROR keystone     bind=self.connection, mode=self.mode)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 277, in _create_session\n2017-12-07 12:09:08.771 11174 ERROR keystone     self._start()\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 363, in _start\n2017-12-07 12:09:08.771 11174 ERROR keystone     engine_args, maker_args)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 387, in _setup_for_connection\n2017-12-07 12:09:08.771 11174 ERROR keystone     sql_connection=sql_connection, **engine_kwargs)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py\", line 155, in create_engine\n2017-12-07 12:09:08.771 11174 ERROR keystone     test_conn = _test_connection(engine, max_retries, retry_interval)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py\", line 339, in _test_connection\n2017-12-07 12:09:08.771 11174 ERROR keystone     six.reraise(type(de_ref), de_ref)\n2017-12-07 12:09:08.771 11174 ERROR keystone   File \"<string>\", line 2, in reraise\n2017-12-07 12:09:08.771 11174 ERROR keystone DBConnectionError: (pymysql.err.OperationalError) (2003, \"Can't connect to MySQL server on 'controller' ([Errno 111] Connection refused)\")\n2017-12-07 12:09:08.771 11174 ERROR keystone ", "stderr_lines": ["2017-12-07 12:07:28.645 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 10 attempts left.", "2017-12-07 12:07:38.658 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 9 attempts left.", "2017-12-07 12:07:48.669 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 8 attempts left.", "2017-12-07 12:07:58.683 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 7 attempts left.", "2017-12-07 12:08:08.689 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 6 attempts left.", "2017-12-07 12:08:18.702 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 5 attempts left.", "2017-12-07 12:08:28.714 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 4 attempts left.", "2017-12-07 12:08:38.726 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 3 attempts left.", "2017-12-07 12:08:48.738 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 2 attempts left.", "2017-12-07 12:08:58.758 11174 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 1 attempts left.", "2017-12-07 12:09:08.771 11174 CRITICAL keystone [-] DBConnectionError: (pymysql.err.OperationalError) (2003, \"Can't connect to MySQL server on 'controller' ([Errno 111] Connection refused)\")", "2017-12-07 12:09:08.771 11174 ERROR keystone Traceback (most recent call last):", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/bin/keystone-manage\", line 10, in <module>", "2017-12-07 12:09:08.771 11174 ERROR keystone     sys.exit(main())", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/cmd/manage.py\", line 44, in main", "2017-12-07 12:09:08.771 11174 ERROR keystone     cli.main(argv=sys.argv, config_files=config_files)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/cmd/cli.py\", line 1294, in main", "2017-12-07 12:09:08.771 11174 ERROR keystone     CONF.command.cmd_class.main()", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/cmd/cli.py\", line 461, in main", "2017-12-07 12:09:08.771 11174 ERROR keystone     CONF.command.version)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/common/sql/migration_helpers.py\", line 207, in offline_sync_database_to_version", "2017-12-07 12:09:08.771 11174 ERROR keystone     expand_schema()", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/common/sql/migration_helpers.py\", line 232, in expand_schema", "2017-12-07 12:09:08.771 11174 ERROR keystone     _sync_common_repo(version=None)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/keystone/common/sql/migration_helpers.py\", line 123, in _sync_common_repo", "2017-12-07 12:09:08.771 11174 ERROR keystone     with sql.session_for_write() as session:", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/contextlib.py\", line 17, in __enter__", "2017-12-07 12:09:08.771 11174 ERROR keystone     return self.gen.next()", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 874, in _transaction_scope", "2017-12-07 12:09:08.771 11174 ERROR keystone     allow_async=self._allow_async) as resource:", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/contextlib.py\", line 17, in __enter__", "2017-12-07 12:09:08.771 11174 ERROR keystone     return self.gen.next()", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 518, in _session", "2017-12-07 12:09:08.771 11174 ERROR keystone     bind=self.connection, mode=self.mode)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 277, in _create_session", "2017-12-07 12:09:08.771 11174 ERROR keystone     self._start()", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 363, in _start", "2017-12-07 12:09:08.771 11174 ERROR keystone     engine_args, maker_args)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py\", line 387, in _setup_for_connection", "2017-12-07 12:09:08.771 11174 ERROR keystone     sql_connection=sql_connection, **engine_kwargs)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py\", line 155, in create_engine", "2017-12-07 12:09:08.771 11174 ERROR keystone     test_conn = _test_connection(engine, max_retries, retry_interval)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py\", line 339, in _test_connection", "2017-12-07 12:09:08.771 11174 ERROR keystone     six.reraise(type(de_ref), de_ref)", "2017-12-07 12:09:08.771 11174 ERROR keystone   File \"<string>\", line 2, in reraise", "2017-12-07 12:09:08.771 11174 ERROR keystone DBConnectionError: (pymysql.err.OperationalError) (2003, \"Can't connect to MySQL server on 'controller' ([Errno 111] Connection refused)\")", "2017-12-07 12:09:08.771 11174 ERROR keystone "], "stdout": "", "stdout_lines": []}
<think>嗯,用户遇到了OpenStack Neutron组件中的MySQL连接被拒绝的问题,错误是pymysql.err.OperationalError Errno 111 ECONNREFUSED。我需要先分析可能的原因,然后给出解决方案。 首先,ECONNREFUSED通常意味着无法连接到目标地址和端口。可能的原因包括MySQL服务未运行、配置错误、防火墙设置或权限问题。用户提到修改过mysql.sock的路径,可能导致了socket文件不匹配。需要检查Neutron配置文件中的数据库连接字符串是否正确,特别是socket路径或主机地址是否正确。 然后,要确认MySQL服务是否在运行,可以通过systemctl status mysql查看状态。如果服务没启动,需要启动服务。另外,检查MySQL是否监听正确的地址和端口,netstat命令可以查看。如果MySQL只绑定了本地地址,而Neutron配置使用的是IP地址,可能需要修改bind-address为0.0.0.0。 还要检查防火墙设置,确保3306端口开放。SELinux也可能阻止连接,需要暂时禁用或调整策略。用户权限方面,确认Neutron使用的数据库用户是否有权限从指定主机访问,可能需要GRANT命令授权。 日志排查也很重要,查看Neutron的日志和MySQL的错误日志,找到更详细的错误信息。最后,测试连接,使用mysql命令尝试连接,确认凭证和网络可达性。 用户之前修改过socket路径导致过错误,所以需要特别注意配置文件中的socket路径是否正确。可能还需要检查my.cnf中的socket配置是否和Neutron配置一致。同时,引用中的例子显示修改socket路径后出现连接问题,所以必须确保所有相关配置一致。 总结下来,步骤应该是检查服务状态,配置文件中的连接信息,网络和权限设置,以及日志分析。可能需要一步步排除每个可能性,从服务是否运行开始,到配置是否正确,再到网络和权限问题。</think>### OpenStack Neutron MySQL连接被拒问题排查步骤 #### 1. 验证MySQL服务状态 首先检查MySQL服务是否正常运行: ```bash systemctl status mysql # 适用于systemd系统 service mysql status # 适用于SysVinit系统 ps -ef | grep mysqld # 检查进程是否存在 ``` 如果服务未运行,使用`systemctl start mysql`启动服务[^1]。 #### 2. 检查连接配置 在Neutron配置文件(通常为`/etc/neutron/neutron.conf`)中确认数据库连接字符串: ```ini [database] connection = mysql+pymysql://neutron:密码@控制节点IP/neutron?charset=utf8 ``` 重点检查: - IP地址是否为MySQL服务器真实地址 - 端口是否明确指定(默认3306) - 用户名密码是否与MySQL记录一致 #### 3. 网络连通性验证 使用telnet测试端口可达性: ```bash telnet 控制节点IP 3306 ``` 如果连接失败,检查: ```bash iptables -L -n | grep 3306 # 查看防火墙规则 netstat -antp | grep 3306 # 查看监听状态 ``` MySQL配置需包含: ```ini [mysqld] bind-address = 0.0.0.0 # 允许远程连接 ``` #### 4. 权限配置检查 在MySQL中执行: ```sql SHOW GRANTS FOR 'neutron'@'%'; ``` 若缺少权限,需执行授权: ```sql GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '密码'; FLUSH PRIVILEGES; ``` #### 5. Socket文件校验(本地连接时) 当使用本地socket连接时: ```ini [database] connection = mysql+pymysql://neutron:密码@localhost/neutron?unix_socket=/var/lib/mysql/mysql.sock ``` 需确保: ```bash ls -l /var/lib/mysql/mysql.sock # 检查socket文件存在性 ``` 注意该路径需与`my.cnf`中的`socket`配置一致。 #### 6. 日志分析 关键日志位置: ```bash /var/log/neutron/*.log # Neutron服务日志 /var/log/mysql/error.log # MySQL错误日志 ``` 典型错误线索: ``` Can't connect to MySQL server on '10.0.0.11' (111) # 网络层连接失败 Access denied for user 'neutron'@'compute-node' # 权限问题 ``` #### 7. 测试连接 手动验证连接有效性: ```bash mysql -uneutron -p密码 -h 控制节点IP -P 3306 -D neutron ``` ### 典型解决方案示例 某环境因MySQL配置错误导致的问题解决过程: 1. 发现`SHOW VARIABLES LIKE 'bind_address'`返回`127.0.0.1` 2. 修改`my.cnf`设置`bind-address=0.0.0.0` 3. 执行`mysql> CREATE USER 'neutron'@'%' IDENTIFIED BY 'new_password';` 4. 重启MySQL服务后连接恢复正常[^1][^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值