株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

構成
OS:CentOS9Stream
OpenstackVersion:Anterope

OpenStackでは、サーバを停止した状態で別ホストサーバに移す通常のマイグレーションとOS起動状態でメモリ情報などを保持したまま別ホストサーバに移すライブマイグレーションがある。
ライブマイグレーションでは、ストレージをiscsiやNFSなどの共有ボリュームに配置する必要がある。通常のマイグレーションであれば、すごくシンプルな話、仮想マシンのファイルごとごっそりコピーということになるのでとりあえず入れることはそんなに大変ではない。

こちらの手順で、Computeノード間でキーペアを共有する設定を入れればできる。
https://access.redhat.com/obsolete-documentation/ja/red-hat-openstack-platform/8/paged/migrating-instances/chapter-2-how-to-migrate-a-static-instance

computeノードが2台ある場合の手順。

Computeノード全台でnovaをログインユーザーにする

usermod -s /bin/bash nova

Computeノード#1でnovaユーザー用のキーペアを作成する

# novaユーザーでキーペア作成
su nova
ssh-keygen
echo 'StrictHostKeyChecking no' >> /var/lib/nova/.ssh/config
cat /var/lib/nova/.ssh/id_rsa.pub >> /var/lib/nova/.ssh/authorized_keys
exit

# computeノード#2にキーペアをコピー
scp /var/lib/nova/.ssh/id_rsa compute2.srv.osp:~/
scp /var/lib/nova/.ssh/id_rsa.pub  compute2.srv.osp:~/

computeノード#2でコピーしてきたキーペアのバーミッションやsshconfigなどをそろえる

chown nova:nova id_rsa
chown nova:nova id_rsa.pub
su nova
mkdir -p /var/lib/nova/.ssh
cp id_rsa /var/lib/nova/.ssh/
cat id_rsa.pub >> /var/lib/nova/.ssh/authorized_keys
echo 'StrictHostKeyChecking no' >> /var/lib/nova/.ssh/config
exit

お互いのノードにnovaユーザーでパスワードなしでログインできることを確認

[root@compute1 ~]# su nova
bash-5.1$ ssh compute2.srv.osp
Last login: Mon Oct 30 21:40:11 2023
[nova@compute2 ~]$
[nova@compute2 ~]$

コンソールでのマイグレーションの手順
マイグレーション自体は、2つの処理に分かれていて、
①Compute#2で仮想マシンのアーカイブとcompute#1へのコピーが行われる
②Compute#2で仮想マシンを削除

マイグレーションかけたいマシンをマイグレーションする。そうするとまい

この状態だと、マイグレーションの予約が完了した状態。

両方のノードで仮想マシンの状態を見ると、Compute#2ではシャットオフ状態になっていて、Compute#1でrunnningになっている。
この状態で、コンソールからマイグレーションの確定をするとCompute#2からは対象仮想マシンが取り除かれる。

ハマったことメモ
・ 仮想マシンを作った時のFlavorのuuidがuuidになっていない場合、エラーになる模様。
この場合はFlavorを作り直してあげればいい。コンソールから作ったら手っ取り早いし、変な値が注入されることはない。
ちなみに、そのときのエラーはnova-conductorが吐いており、このようなエラーが出ていた。

2023-10-31 02:15:25.417 1607 WARNING nova.scheduler.utils [None req-fb342e95-0410-4c41-8a74-51d9ed79573a 7862bbebcbd948e68495451a907c2d95 8f0a86a2120b438190a417b92813c03f - - default default] [instance: 22dcf5cd-40ff-4716-bed5-ddffdb783463] Setting instance to STOPPED state.: nov
a.exception_Remote.NoValidHost_Remote: No valid host was found. There are not enough hosts available.
2023-10-31 02:27:53.690 1596 WARNING nova.scheduler.utils [None req-a75e7dbf-6247-4755-b403-f83a0eb43453 7862bbebcbd948e68495451a907c2d95 8f0a86a2120b438190a417b92813c03f - - default default] Failed to compute_task_migrate_server: No valid host was found. There are not enough hos
ts available.
Traceback (most recent call last):

  File "/usr/lib/python3.9/site-packages/oslo_messaging/rpc/server.py", line 244, in inner
    return func(*args, **kwargs)

  File "/usr/lib/python3.9/site-packages/nova/scheduler/manager.py", line 224, in select_destinations
    selections = self._select_destinations(

  File "/usr/lib/python3.9/site-packages/nova/scheduler/manager.py", line 251, in _select_destinations
    selections = self._schedule(

  File "/usr/lib/python3.9/site-packages/nova/scheduler/manager.py", line 452, in _schedule
    self._ensure_sufficient_hosts(

  File "/usr/lib/python3.9/site-packages/nova/scheduler/manager.py", line 499, in _ensure_sufficient_hosts
    raise exception.NoValidHost(reason=reason)

nova.exception.NoValidHost: No valid host was found. There are not enough hosts available.
: nova.exception_Remote.NoValidHost_Remote: No valid host was found. There are not enough hosts available.

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)