DbsyncのエラーでOpenStackがインストールできない。トラブルシュートを備忘録

前書き

OpenStackの手動インストールに挑戦していたときの、エラー対処方法備忘録です。

answer-fileを使用してOpenStackをインストールしたのですが、どうしてもインストールコマンド実行後に下記のエラーが発生してしまっていました。

 《ターミナル上》

Applying Puppet manifests [ ERROR ]

ERROR : Error appeared during Puppet run: 192.168.100.200_controller.pp
Error: /Stage[main]/Sahara::Db::Sync/Exec[sahara-dbmanage]: Failed to call refresh: Command exceeded timeout
You will find full trace in log /var/tmp/packstack/20181104-133407-BPnd3L/manifests/192.168.100.200_controller.pp.log
Please check log file /var/tmp/packstack/20181104-133407-BPnd3L/openstack-setup.log for more information
Additional information:
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* NOTE : A selfsigned CA certificate was generated to be used for ssl, you should still change it do subordinate CA cert. In any case please save the contents of /root/packstackca/.
* File /root/keystonerc_admin has been created on OpenStack client host 192.168.100.200. To use the command line tools you need to source the file.
* NOTE : A certificate was generated to be used for ssl, You should change the ssl certificate configured in /etc/httpd/conf.d/ssl.conf on 192.168.100.200 to use a CA signed cert.
* To access the OpenStack Dashboard browse to https://192.168.100.200/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.

 
《192.168.100.200_controller.pp.log》
[1;31mError: /Stage[main]/Sahara::Db::Sync/Exec[sahara-dbmanage]: Failed to call refresh: Command exceeded timeout [0m
[1;31mError: /Stage[main]/Sahara::Db::Sync/Exec[sahara-dbmanage]: Command exceeded timeout [0m

 

結論としてDbSyncセクションのタイムアウトが原因でした。
エラー対処の備忘録を書きます。
OpenStackのインストール方法は、下記のページを参考にさせていただきました。
https://www.adoc.co.jp/blog/e000247.html

 

本書の使用環境は以下のようになっています。

《使用環境》

仮想ソフト Hyper-V(物理ホストはWindows Server 2016)
仮想OS CentOS7
仮想OSメモリ 8GB
仮想ドライブサイズ 200GB
仮想OSのIPアドレス 192.168.100.200




OpenStackの手動インストール手順(トラブルシュートあり)

CentOS7をインストール

CentOS7を最小限のインストールでインストールしました。
※手順は省きます。

 

NetworkManagerを無効化

CentOS7のインストールが完了したら、NetworkManagerを無効化します。

# systemctl stop NetworkManager
# systemctl disable NetworkManager
# systemctl restart network

 

[ifcfg-eth0]ファイルの編集

“/etc/sysconfig/network-scripts/”下にインターフェースの設定ファイルがあるので、viエディタなどで編集します。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

※青字の個所は環境によって変わります。(ifcfg-enp0s3など)

本件では以下のように編集しました。

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=※※変更しない※※
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.100.200
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=192.168.100.1

 

インターフェースを再起動

インターフェースファイルを編集したので、変更を有効にするためにインターフェースを再起動します。

# ifdown ifcfg-eth0
# ifup ifcfg-eth0

 

net-toolsのインストールと全パッケージのアップデート

ifconfigなどのコマンドを使用するため”net-tools”をインストールして、さらに全パッケージのアップデートを行います。

# yum install net-tools
# yum update -y

 

RDOレポジトリの設定と[OpenStack-packstack]のインストール

その名の通り、RDOレポジトリの設定と[OpenStack-packstack]のインストールです。

# yum install -y https://rdoproject.org/repos/rdo-release.rpm
# yum install -y openstack-packstack

 

answer-fileの編集

本件では、answer-fileを編集してOpenStackをインストールします。
まずanswer-fileを作るため下記コマンドを実行します。

# packstack –gen-answer-file answer-file.txt

本件では以下のように編集しました。

CONFIG_HEAT_INSTALL=y
CONFIG_SAHARA_INSTALL=y 
CONFIG_LBAAS_INSTALL=y 
CONFIG_NEUTRON_FWAAS=y 
CONFIG_TROVE_INSTALL=y 
CONFIG_HORIZON_SSL=y 
CONFIG_KEYSTONE_ADMIN_PW=※※ダッシュボードログイン時のパスワードを指定します※※
CONFIG_PROVISION_DEMO=n

$db_sync_timeoutを”0″にする

さて、ここがトラブルシュートの肝です。下のコマンドを実行して、”$db_sync_timeout = 300″と記載されているファイルを確認します。

# cd /usr/share/
# grep -Ri “timeout = 300”

本件の環境では結果は以下となりました。

doc/postfix-2.10.1/README_FILES/TLS_LEGACY_README: smtpd_starttls_timeout = 300s
doc/postfix-2.10.1/README_FILES/TLS_LEGACY_README: smtp_starttls_timeout = 300s
doc/postfix-2.10.1/README_FILES/TLS_README: smtpd_starttls_timeout = 300s
doc/postfix-2.10.1/README_FILES/TLS_README: smtp_starttls_timeout = 300s
doc/postfix-2.10.1/main.cf.default:lmtp_lhlo_timeout = 300s
doc/postfix-2.10.1/main.cf.default:lmtp_mail_timeout = 300s
doc/postfix-2.10.1/main.cf.default:lmtp_quit_timeout = 300s
doc/postfix-2.10.1/main.cf.default:lmtp_rcpt_timeout = 300s
doc/postfix-2.10.1/main.cf.default:lmtp_starttls_timeout = 300s
doc/postfix-2.10.1/main.cf.default:lmtp_xforward_timeout = 300s
doc/postfix-2.10.1/main.cf.default:milter_content_timeout = 300s
doc/postfix-2.10.1/main.cf.default:qmqpd_timeout = 300s
doc/postfix-2.10.1/main.cf.default:smtp_helo_timeout = 300s
doc/postfix-2.10.1/main.cf.default:smtp_mail_timeout = 300s
doc/postfix-2.10.1/main.cf.default:smtp_quit_timeout = 300s
doc/postfix-2.10.1/main.cf.default:smtp_rcpt_timeout = 300s
doc/postfix-2.10.1/main.cf.default:smtp_starttls_timeout = 300s
doc/postfix-2.10.1/main.cf.default:smtp_xforward_timeout = 300s
ruby/vendor_ruby/puppet/file_system/file_impl.rb: def exclusive_open(path, mode, options = ‘r’, timeout = 300, &block)
ruby/vendor_ruby/puppet/file_system.rb: def self.exclusive_open(path, mode, options = ‘r’, timeout = 300, &block)
openstack-puppet/modules/rsync/templates/header.erb:timeout = 300
openstack-puppet/modules/nova/manifests/db/online_data_migrations.pp: $db_sync_timeout = 300,
openstack-puppet/modules/nova/manifests/db/sync.pp: $db_sync_timeout = 300,
openstack-puppet/modules/nova/manifests/db/sync_api.pp: $db_sync_timeout = 300,
openstack-puppet/modules/neutron/manifests/db/sync.pp: $db_sync_timeout = 300,

ここで、上で青文字にした「$db_sync_timeout = 300」に注目し、対象のファイルを確認します。
※対象ファイル名は赤字にしています。

上記より、本件の環境で$db_sync_timeout = 300が記載されているファイルは4つであるとわかります。

openstack-puppet/modules/nova/manifests/db/online_data_migrations.pp
openstack-puppet/modules/nova/manifests/db/sync.ppopenstack-puppet/modules/nova/manifests/db/sync_api.pp
openstack-puppet/modules/neutron/manifests/db/sync.pp

これらをひとつずつviエディタなどで開き、「$db_sync_timeout = 300」を「$db_sync_timeout = 0」と変更します。

# vi openstack-puppet/modules/nova/manifests/db/online_data_migrations.pp

“openstack-puppet/modules/nova/manifests/db/online_data_migrations.pp” 40L, 1117C#
# Class to execute nova api_db sync
#
# ==Parameters
#
# [*extra_params*] # (optional) String of extra command line parameters to append
# to the nova-manage db sync command. These will be inserted in
# the command line between ‘nova-manage’ and ‘db sync’.
# Defaults to undef
#
# [*db_sync_timeout*] # (optional) Timeout for the execution of the db_sync
# Defaults to 300.
#
class nova::db::online_data_migrations(
$extra_params = undef,
$db_sync_timeout = 300, ⇐ここの数字を”0″にする。
 ⇓
$db_sync_timeout = 0,
) {

include ::nova::deps
include ::nova::params

exec { ‘nova-db-online-data-migrations’:
command => “/usr/bin/nova-manage ${extra_params} db online_data_migrations”,
user=> $::nova::params::nova_user,
refreshonly => true,
try_sleep => 5,
tries=> 10,
timeout => $db_sync_timeout,
logoutput => on_failure,
subscribe => [Anchor[‘nova::install::end’],Anchor[‘nova::config::end’],Anchor[‘nova::dbsync_api::end’],Anchor[‘nova::db_online_data_migrations::begin’] ],
notify => Anchor[‘nova::db_online_data_migrations::end’], }

すべての「$db_sync_timeout = 300」を「$db_sync_timeout = 0」に変更したら、OpenStackのインストールコマンドを実行します。
ここで、「–timeout=0」のオプションを付与して実行します。

# packstack –answer-file answer-file.txt –timeout=0 –debug

1~2時間経過すると終了します。
これで成功しました。

Applying Puppet manifests [ DONE ] Finalizing [ DONE ]

**** Installation completed successfully ******

Additional information:
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* NOTE : A selfsigned CA certificate was generated to be used for ssl, you should still change it do subordinate CA cert. In any case please save the contents of /root/packstackca/.
* File /root/keystonerc_admin has been created on OpenStack client host 192.168.100.200. To use the command line tools you need to source the file.
* NOTE : A certificate was generated to be used for ssl, You should change the ssl certificate configured in /etc/httpd/conf.d/ssl.conf on 192.168.100.200 to use a CA signed cert.
* To access the OpenStack Dashboard browse to https://192.168.100.200/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* Because of the kernel update the host 192.168.100.200 requires reboot.
* The installation log file is available at: /var/tmp/packstack/20181111-234859-G0AQvq/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20181111-234859-G0AQvq/manifests
* Note temporary directory /var/tmp/packstack/f55e044915c04de5a6cc3343efa1a406 on host 192.168.100.200 was not deleted for debugging purposes.

 

再起動します。

# reboot

 

ネットワーク設定

再起動が完了したら、ネットワーク設定を行います。

まずインターフェースファイルのバックアップを取得します。

# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth0_bak

 

“ifcfg-br-ex”という新しいインターフェースファイルを作成します。

# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br-ex

 

“ifcfg-br-ex”をviで開いて以下のように編集しました。

# vi /etc/sysconfig/network-scripts/ifcfg-br-ex

DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=br-ex
ONBOOT=yes
IPADDR=192.168.100.200
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=192.168.100.1

もともとあった”ifcfg-eth0″は以下のように編集しました。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=OVSPort
OVS_BRIDGE=br-ex
DEVICETYPE=ovs
ONBOOT=yes

ネットワークを再起動します。

# service network restart
# service neutron-openvswitch-agent restart
# service neutron-server restart

 

ダッシュボードへのログイン

最後に、ダッシュボードのログイン画面が表示されて、answer-fileに記載したパスワードでログインできることを確認します。

ダッシュボードのログインURLは「https://[ホストIPアドレス]/dashboard/」です。

警告がでるので[詳細情報]ボタンをクリックして、、

[Web ページに移動 (非推奨)]をクリックします。

ログイン画面が出たら、ユーザ名とパスワードを入力して[接続]をクリックします。

ログインできました!




後書き

本件のエラーは、もしかしたらバグなのかもしれません。

いろいろなサイトを参考にしましたが、決定的となったのは以下の英語サイトでした。
※下のサイトで、まさに”bug”と書かれていますので。。

https://bugs.launchpad.net/packstack/+bug/1724272

新しいOpenStack今後リリースされていくと思いますが、本記事が少しでも役に立てれば幸いです。

最後までお読みいただき、ありがとうございました。

OpenStack 実践ガイド (impress top gear)

新品価格
¥3,240から
(2018/12/10 23:39時点)

 

OpenStack徹底活用テクニックガイド

新品価格
¥3,947から
(2018/12/10 23:39時点)