LoginSignup
9
6

More than 5 years have passed since last update.

NovaでInstanceのresizeができないときの対処法

Last updated at Posted at 2015-07-04

はじめに

OpenStackを利用する際、インスタンスのリサイズを行おうとするとエラーになり、以下のようなエラーログが出力される場合がある。

Unexpected error while running command.\nCommand: ssh ${ip-of-nova-compute} mkdir -p /var/lib/nova/instances/${instance-uuid}\nExit code: 255\nStdout: ''\nStderr: 'Host key verification failed.\\r\\n'\n"]

通常、OpenStack + KVMを利用している際、インスタンスのリサイズを行うとリソースの余っているKVMホストにリサイズとともにマイグレーションされる。その際、マイグレーション元のKVMホストからsshを用いてマイグレーション先のKVMホストに対象インスタンスのディレクトリを作成しようと試みる。リサイズでエラーが起こる場合は大抵このエラーに遭遇するのだが、こうなった際の対処法は2つある。

1. 同一ホストでリサイズを行うようにする

リサイズを行う際にマイグレーションを実行せずに自身のKVMホストでリサイズを行う方法。以下の設定を/etc/nova/nova.confに入れることで可能になる。

# すべてのnovaノードで追加する
allow_resize_to_same_host=True
# nova-schedulerが稼働しているノードで追加する
scheduler_default_filters=AllHostsFilter

この場合の制約は、nova-schedulerのフィルターがAllHostsFilterに固定されてしまうことである。フィルターが使えず、かつ、同一ホストでリサイズされることによりコンピュートリソース全体の管理が難しくなってくる。なので、テスト目的以外での利用はおすすめできない、と、公式のドキュメントにも記載がある。

なお、VMwareをハイパーバイザーとして利用している場合には、nova-computeはvCenterとのやり取りをしているにすぎないため、基本的にはこの設定を入れて同一ホスト上でのリサイズしかできない(Icehouseの場合)。もし、Kiloで状況が変わっているなら誰か教えて欲しい。

2. novaユーザをログイン可能なユーザに変更し公開鍵を設定する

通常はこちらの方法をとる。やり方は以下のとおり。

  • novaユーザのログインシェル有効化と秘密鍵/公開鍵生成
  • nova-apiが稼働しているノードで秘密鍵/公開鍵生成と、.ssh/configと.ssh/authorized_keysの作成
  • 全てのnovaノードに共通の.ssh配下を展開する

novaユーザのログインシェル有効化と秘密鍵/公開鍵生成

通常novaユーザは、以下のとおりログインシェルが設定されていない。

$ cat /etc/passwd | grep nova
nova:x:106:112::/var/lib/nova:/bin/false

そこでまずはログインシェルをbashに変更する。これはnova関連のプロセスが稼働しているすべてのホストで実行する。なお、novaユーザのデフォルトのホームディレクトリは/usr/lib/novaである。

$ sudo usermod -s /bin/bash nova

nova-apiが稼働しているノードで秘密鍵/公開鍵生成と、.ssh/configと.ssh/authorized_keysの作成

次に、nova-apiが稼働しているホストでnovaユーザにスイッチして秘密鍵/公開鍵を生成する

$ sudo su nova
$ ssh-keygen -t rsa

その後、.ssh/configと.ssh/authorized_keysも作成する

$ cat << EOF > ~/.ssh/config
Host *
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
EOF
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys

全てのnovaノードに共通の.ssh配下を展開する

nova-apiノードにおいて、

$ sudo su nova
$ cd ~/
$ tar zcvf /tmp/nova_ssh.tar.gz .ssh
$ scp /tmp/nova_ssh.tar.gz ${パスワードログインが可能な別のユーザ}@${全てのnovaノード}:/tmp

nova-apiの.sshが配布されたノードにおいて以下を実行。実行ユーザがnovaユーザである必要は無い。

$ sudo tar xvzf /tmp/nova_ssh.tar.gz -C /var/lib/nova/

これでインスタンスのリサイズが可能になる。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6