OpenStackが存在する組織 は積極的に使用されるため、このような組織では、アプリケーションチームとデータベースチームは、アプリケーションとデータベースのインスタンスが同じコンピューティングノードで起動する必要があるという要件を考え出すことができます。 (ハイパーバイザー)または異なる計算ノード。
したがって、OpenStackのこの要件は、サーバーグループを介して満たされます。 親和性 および非親和性 ポリシー。サーバーグループは、openstackインスタンスをスケジュールするための制御アフィニティおよび非アフィニティルールに使用されます。
アフィニティサーバーグループを使用して仮想マシンをプロビジョニングしようとすると、すべての仮想マシンが同じ計算ノードで起動されます。 VMがant-affinityサーバーグループでプロビジョニングされると、すべてのVMが異なる計算ノードで起動されます。この記事では、AffinityおよびAnti-Affinityルールを使用してOpenStackサーバーグループを作成する方法を示します。
まず、OpenStackセットアップがアフィニティおよびアンチアフィニティポリシーをサポートしているかどうかを確認し、コントローラーノードから次のgrepコマンドを実行します。
# grep -i "scheduler_default_filters" /etc/nova/nova.conf
出力は次のようになります
ご覧のとおり、AffinityおよびAnt-Affinityフィルターは有効になっていますが、これらが有効になっていない場合は、これらのフィルターを /etc/nova/nova.confに追加してください。 「scheduler_default_filters」の下にあるコントローラーノードのファイル 」パラメータ。
# vi /etc/nova/nova.conf ……………… scheduler_default_filters=xx,xxx,xxx,xxxxx,xxxx,xxx,xxx,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,xx,xxx,xxxx,xx ………………
ファイルを保存して終了します
上記の変更を有効にするには、次のサービスを再起動します
# systemctl restart openstack-nova-scheduler # systemctl restart openstack-nova-conductor
それでは、アフィニティポリシーとアンチアフィニティポリシーを使用してOpenStackサーバーグループを作成しましょう
アフィニティポリシーを使用したサーバーグループ
アフィニティポリシーの「app」という名前のサーバーグループを作成するには、コントローラーノードから次のopenstackコマンドを実行します。
構文:
#openstack server group create –policyアフィニティ
または
#novaserver-group-create
注: openstackコマンドの実行を開始する前に、プロジェクトクレデンシャルファイルをソースしていることを確認してください。私の場合、プロジェクトクレデンシャルファイルは「 openrc」です。 」
例:
# source openrc # openstack server group create --policy affinity app
非アフィニティポリシーを使用するサーバーグループ
アンチアフィニティポリシーを使用してサーバーグループを作成するには、コントローラーノードから次のopenstackコマンドを実行します。サーバーグループ名は「データベース」であると想定しています。
構文:
#openstack server group create –policy anti-affinity
または
#novaserver-group-create
例:
# source openrc # openstack server group create --policy anti-affinity database
サーバーグループのIDとポリシーを一覧表示する
novaコマンドまたはOpenstackコマンドのいずれかを実行して、サーバーグループのIDとそのポリシーを取得します
# nova server-group-list | grep -Ei "Policies|database" Or # openstack server group list --long | grep -Ei "Policies|app|database"
出力は次のようになります
アフィニティポリシーを使用して仮想マシン(VM)を起動する
アフィニティポリシーを使用して4つのVMを起動するとし、次の「 openstack server create」を実行します。 ”コマンド
構文:
#openstack server create –image
例:
# openstack server create --image Cirros --flavor m1.small --security-group default --nic net-id=37b9ab9a-f198-4db1-a5d6-5789b05bfb4c --hint group="a9847c7f-b7c2-4751-9c9a-03b117e704ff" --max 4 affinity-test
上記のコマンドの出力
VMが同じ計算ノードで起動されているかどうかを確認し、次のコマンドを実行します
# openstack server list --long -c Name -c Status -c Host -c "Power State" | grep -i affinity-test
これにより、すべてのVMが同じ計算ノードで起動されるため、アフィニティポリシーが正常に機能していることが確認されます。
それでは、非アフィニティポリシーをテストしましょう
アンチアフィニティポリシーを使用して仮想マシン(VM)を起動する
アンチアフィニティポリシーでは、4つのVMを起動します。上記の「openstackserver create」コマンドで、アンチアフィニティサーバーグループのIDを置き換える必要があります。この例では、データベースサーバーグループIDを使用します。
次のopenstackコマンドを実行して、非アフィニティポリシーを使用して異なるコンピューティングで4つのVMを起動します。
# openstack server create --image Cirros --flavor m1.small --security-group default --nic net-id=37b9ab9a-f198-4db1-a5d6-5789b05bfb4c --hint group="498fd41b-8a8a-497a-afd8-bc361da2d74e" --max 4 anti-affinity-test
出力
以下のopenstackコマンドを使用して、VMが異なるコンピューティングノードで起動されているかどうかを確認します
# openstack server list --long -c Name -c Status -c Host -c "Power State" | grep -i anti-affinity-test
上記の出力は、非アフィニティポリシーも正常に機能していることを確認しています。
注: サーバーグループのデフォルトの割り当ては、テナントごとに10です。つまり、プロジェクト内に最大10台のサーバーグループを作成でき、10台を超えるVMを管理できます。
以下のコマンドを使用して、特定のテナントのサーバーグループクォータを表示し、セットアップに適したテナントIDを置き換えます
# openstack quota show f6852d73eaee497a8a640757fe02b785 | grep -i server_group | server_group_members | 10 | | server_groups | 10 | #
サーバーグループクォータを更新するには、次のコマンドを実行します
# nova quota-update --server-group-members 15 f6852d73eaee497a8a640757fe02b785 # nova quota-update --server-groups 15 f6852d73eaee497a8a640757fe02b785
次に、openstackquotaコマンドを再実行してサーバーグループのクォータを確認します
# openstack quota show f6852d73eaee497a8a640757fe02b785 | grep -i server_group | server_group_members | 15 | | server_groups | 15 | #
これで、テナントのサーバーグループクォータが正常に更新されました。これで記事も終わりです。技術的な友達と共有することを躊躇してください。