GNU/Linux >> Znalost Linux >  >> Linux

Pochopení zásad skupiny Affinity/Anti-Affinity v OpenStack Mitaka

Služba Nova řídí, kde se instance spouštějí v cloudovém prostředí OpenStack. To znamená, nova-plánovač rozhoduje, který hypervizor bude spouštět konkrétní instanci, a toto chování je řízeno pomocí dvou filtrů (zásady skupiny Affinity/anti-affinity) – konkrétně ServerGroupAntiAffinityFilter a ServerGroupAffinityFilter ServerGroupAffinityFilter umožňuje uživateli spouštět skupinu instancí na stejném hypervizoru/hostiteli a ServerGroupAntiAffinityFilter zajistí, že všechny požadované instance budou spuštěny na různých hypevisorech/hostitelích.

Tyto filtry jsou standardně povoleny v /etc/nova/nova.conf jak je uvedeno níže:

scheduler_driver_task_period = 60
scheduler_driver = nova.scheduler.filter_scheduler.FilterScheduler
scheduler_available_filters = nova.scheduler.filters.all_filters
scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter

V případě, že tyto filtry nenajdete, upravte nova.conf , přidejte výše uvedené řádky a restartujte nova-scheduler a nova-conductor služby.

# /etc/init.d/nova-scheduler restart
# /etc/init.d/nova-conductor restart

Poznámka :Restartování nova-scheduler samotná služba na některých verzích OpenStacku stačí, ale v OpenStack Mitaka musím restartovat nova-conductor službu také.

Aby uživatel mohl pracovat s těmito filtry, musí vytvořit skupinu serverů, přiřadit skupině zásady a přidat instance do této skupiny.

Poznámka :Níže uvedené příkazy byly provedeny v nastavení OpenStack Mitaka.

Jak používat zásady ServerGroupAffinityFilter?

Krok 1 :Vytvořte skupinu serverů

# nova server-group-create <Group_Name> affinity
# nova server-group-create affinityHost affinity
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+
| Id | Name | Project Id | User Id | Policies | Members | Metadata |
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+
| 565948b0-076e-4de0-97dd-11d58862b64e | affinityHost | 9563fa5bb6dd479aa9f18048 cd35ca36 | d4053faa2c374045bd37d96ccb7f1b6c | [u'affinity'] | [] | {} |
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+

Ujistěte se, že je skupina vytvořena pomocí níže uvedeného příkazu:

# nova server-group-get 565948b0-076e-4de0-97dd-11d58862b64e
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+
| Id | Name | Project Id | User Id | Policies | Members | Metadata |
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+
| 565948b0-076e-4de0-97dd-11d58862b64e | affinityHost | 9563fa5bb6dd479aa9f18048cd35ca36 | d4053faa2c374045bd37d96ccb7f1b6c | [u'affinity'] | [] | {} |
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+

Krok 2 :Spusťte instance ve skupině vytvořené v kroku 1

# nova boot --flavor 1 --image cirros --security-groups default --nic net-id=9381abae-e0c5-4844-b605-da6b04ce9a36 --hint group=565948b0-076e-4de0-97dd-11d58862b64e --max 4 affinityVM

Vyhledejte skupinu tipů možnost s ID skupiny vytvořené v kroku 1. Výše ​​uvedený příkaz také požaduje 4 virtuální počítače pomocí –max možnost.

Krok 3 :Zkontrolujte, zda jsou všechny požadované virtuální počítače spuštěny na stejném hostiteli.

for i in `seq 1 4`
 > do
 > openstack server show affinityVM-${i} -c hostId -f shell
 > done
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
."

Výše uvedený příkaz říká, že všechny virtuální počítače byly spuštěny na stejném hostiteli.

Pojďme nyní pracovat s zásadami skupiny Anti-Affinity .

Jak používat ServerGroupAntiAffinityFilter zásady?

Pomocí ServerGroupAntiAffinityFilter, uživatel může zajistit, aby se virtuální počítače spouštěly na různých hypervizorech. Zvažte například situaci, kdy nechcete, aby všechny vaše služby byly hostovány na stejném počítači, protože selhání hostitelského počítače ovlivní všechny vaše služby. Použití ServerGroupAntiAffinityFilter zajistí, že všechny vaše služby budou rušeny na různých fyzických hostitelích.

Krok 1 :Vytvořte skupinu s zásadami antiafinity

# nova server-group-create anti-affinityHost anti-affinity
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+
 | Id | Name | Project Id | User Id | Policies | Members | Metadata |
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+
 | a1c8220a-275f-4ff1-8ce1-6fbb54f7cf46 | anti-affinityHost | 9563fa5bb6dd479aa9f18048cd35ca36 | d4053faa2c374045bd37d96ccb7f1b6c | [u'anti-affinity'] | [] | {} |
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+

Krok 2 :Spusťte instance v rámci antiafinitní skupiny.

# nova boot --flavor 1 --image cirros --security-groups default --nic net-id=9381abae-e0c5-4844-b605-da6b04ce9a36 --hint group=a1c8220a-275f-4ff1-8ce1-6fbb54f7cf46 --max 3 anti-affinityVM

Hledá se –skupina tipů možnost s ID skupiny vytvořené v kroku 1. Také –max požaduje 3 virtuální počítače a očekává se, že všechny budou spuštěny na různých hostitelích.

Krok 3 :Ověřte, zda jsou virtuální počítače spuštěny na různých hostitelích/hypervizorech.

# for i in `seq 1 3`; do openstack server show anti-affinityVM-${i} -c hostId -f shell; done
 hostid="09fac9c46a3dc5f6219e2af3e3a7da6dad7de843cfba7d8d4feb9054"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="4e488190b3d18a501dd719c051771636b6f73f6fd292f00e8622b185"

Výše uvedený příkaz potvrzuje, že všechny tři virtuální počítače byly spuštěny na různých hostitelích.

V případě, že nejsou k dispozici žádné zdroje k uspokojení anti-afinity zásady a poté nova boot příkaz selže s níže uvedenou chybovou zprávou:

# nova boot --flavor 1 --image cirros --security-groups default --nic net-id=9381abae-e0c5-4844-b605-da6b04ce9a36 --hint group=a1c8220a-275f-4ff1-8ce1-6fbb54f7cf46 anti-affinityVM

Ukázkový výstup:

"No valid host was found. There are not enough hosts available."

Protože moje nastavení má pouze tři výpočetní hostitele, výše uvedený příkaz nemůže najít platné hostitele pro spuštění nového virtuálního počítače.


Linux
  1. Pochopení YAML pro Ansible

  2. Jak spustit VM na zadaném hostitelském/výpočtovém uzlu v OpenStack Mitaka?

  3. Rozumíte Linux Desktopu?

  1. Seznam členů skupiny v Linuxu

  2. Správa zásad hesel

  3. Pochopení zásad SELinux v Linuxu

  1. Rozumět Ifs?

  2. Pochopení oprávnění MySQL

  3. Jak dostat ps do tiskové skupiny?