GNU/Linux >> Linux Esercitazione >  >> Linux

Comprensione delle politiche di gruppo di affinità/anti-affinità in OpenStack Mitaka

Il servizio Nova controlla dove vengono avviate le istanze all'interno dell'ambiente cloud OpenStack. Significa, il nova-scheduler decide quale hypervisor eseguirà una particolare istanza e questo comportamento viene controllato utilizzando due filtri (politiche di gruppo di affinità/anti-affinità), ovvero ServerGroupAntiAffinityFilter e ServerGroupAffinityFilter . Il ServerGroupAffinityFilter consente a un utente di eseguire un gruppo di istanze sullo stesso hypervisor/host e ServerGroupAntiAffinityFilter assicurerà che tutte le istanze richieste vengano avviate su hypevisor/host diversi.

Questi filtri sono abilitati per impostazione predefinita in /etc/nova/nova.conf come mostrato di seguito:

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

Nel caso, se non trovi quei filtri, modifica nova.conf , aggiungi le righe precedenti e riavvia nova-scheduler e nova-conduttore servizi.

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

Nota :Riavvio di nova-scheduler il solo servizio è sufficiente su alcune versioni di OpenStack, ma in OpenStack Mitaka devo riavviare nova-conductor anche il servizio.

Per utilizzare questi filtri, l'utente deve creare un gruppo di server, assegnare criteri al gruppo e aggiungere istanze a quel gruppo.

Nota :I comandi seguenti sono stati eseguiti durante l'installazione di OpenStack Mitaka.

Come utilizzare il criterio ServerGroupAffinityFilter?

Passaggio 1 :crea un gruppo di 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'] | [] | {} |
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+

Assicurati che il gruppo sia stato creato utilizzando il comando seguente:

# 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'] | [] | {} |
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+

Passaggio 2 :avvia le istanze all'interno del gruppo creato nel passaggio 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

Cerca –gruppo di suggerimenti opzione con ID del gruppo creato nel passaggio 1. Inoltre, il comando precedente richiede 4 VM utilizzando –max opzione.

Passaggio 3 :controlla se tutte le macchine virtuali richieste vengono avviate sullo stesso host.

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"

Il comando precedente dice che tutte le macchine virtuali sono state avviate sullo stesso host.

Ora lavoriamo con le norme del gruppo anti-affinità .

Come utilizzare ServerGroupAntiAffinityFilter polizza?

Utilizzando ServerGroupAntiAffinityFilter, l'utente può assicurarsi che le macchine virtuali vengano avviate su hypervisor diversi. Ad esempio, considera la situazione in cui non desideri che tutti i tuoi servizi siano ospitati sulla stessa macchina, poiché il guasto della macchina host influirà su tutti i tuoi servizi. L'utilizzo di ServerGroupAntiAffinityFilter garantisce che tutti i tuoi servizi siano disturbati in diversi host fisici.

Passaggio 1 :crea un gruppo con norme di antiaffinità

# 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'] | [] | {} |
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+

Passaggio 2 :avvia istanze all'interno del gruppo anti-affinità.

# 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

Cerca –-gruppo di suggerimenti opzione con ID del gruppo creato nel passaggio 1. Inoltre, –max richiede 3 macchine virtuali e tutte dovrebbero essere avviate su host diversi.

Passaggio 3 :verifica che le VM siano avviate su host/hypervisor diversi.

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

Il comando precedente conferma che tutte e tre le VM sono state avviate su host diversi.

Nel caso, se non ci sono risorse disponibili per soddisfare anti-affinità policy, quindi nova boot comando fallirà con il seguente messaggio di errore:

# 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

Risultato di esempio:

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

Poiché la mia configurazione ha solo tre host di calcolo, il comando precedente non è in grado di trovare host validi per l'avvio di una nuova macchina virtuale.


Linux
  1. Capire se?

  2. Capire Linux Desktop?

  3. Elenca i membri di un gruppo in Linux

  4. Gestione delle politiche delle password

  5. Comprensione dell'utilità logrotate

Come creare criteri di affinità e anti-affinità in OpenStack

Comprendere i permessi dei file Linux

Comprensione dei processi su Linux

Comprensione del file /etc/group

Comprendere le autorizzazioni di base dei file e la proprietà in Linux

grep:cattura di gruppo