前書き
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.
[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
本件では以下のように編集しました。
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”と書かれていますので。。
新しいOpenStack今後リリースされていくと思いますが、本記事が少しでも役に立てれば幸いです。
最後までお読みいただき、ありがとうございました。
|
OpenStack 実践ガイド (impress top gear) 新品価格 |
|
新品価格 | ||||||
OpenStack 実践ガイド (impress top gear) 新品価格 | |||||||||
新品価格 |
コメント