CLI Grundlagen 6: Wie kann ich einen Load Balancer mit Openstack-CLI anlegen?


Herzlich willkommen zu Openstack-CLI für die OpenCloud Rechenzentren. In diesem Tutorial  zeigen wir Ihnen, wie Sie einen Load-Balancer mit der Kommandozeilenclients erstellen können

Was Sie in diesem Artikel lernen:

  • Anlegen eines Loadbalancers in Ihrem virtuellen Rechenzentrum

Für dieses Tutorial benötigen Sie

 

Admin - Loadbalancer

Als Menschen nutzen wir täglich das Internet für verschiedene Zwecken i.d. das Shoppen oder eine Recherche. Die wachsende Anfragen an die Webserver, die unsere Websuche entgegennehmen sorgen für eine permanente Auslastung der Webserver.  Üblicherweise wird eine Domäne einem Webserver zugewiesen, aber abhängig von dem Bereich in dem der Webserver eingesetzt wird, folgt einem Ausfall eines Webservers finanzielle Schaden. In so einer Situation, können mehrere Server für die Domäne eines Unternehmens oder einer Organisation i.d. ein eShop oder eine Bank die Serverauslastung verringern, indem die mit Hilfe eines Loadbalancers den Webtraffic auf verschiedene Server verteilen.

 

Schritt für Schritt Anleitung: Loadbalancer in OpenStack

 

Szenario:

Wir werden das Tutorial anhand eines  Szenarios Schritt für Schritt durchgehen

Szenariobeschreibung:

      • Zwei Backend-Server in einem privaten Subnetz mit passende HTTP Einstellungen auf TCP-Port 80
      • Subnet public-subnet ist ein gemeinsames Shared-External-Subnetz, das vom Cloud-Betreiber erstellt wurde und über das Internet erreichbar ist.
      • Wir wollen einen aus dem Internet erreichbaren Basis-Loadbalancer konfigurieren, der Webanfragen an die Backend-Server verteilt.

     

    Schritt 1: Erstellung HTTP Load Balancer

    Die Option „–vip-network-id“ muss immer „public“ Netzwerk ihres virtuellen Rechenzentrum sein

    hkn@controller-node:~$ openstack loadbalancer create --name lb1 
    --vip-network-id ext_hkn
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | admin_state_up      | True                                 |
    | availability_zone   |                                      |
    | created_at          | 2022-08-05T14:14:23                  |
    | description         |                                      |
    | flavor_id           |                                      |
    | id                  | 68a7ea87-86f0-4a6c-9ba0-0f2adcea52da |
    | listeners           |                                      |
    | name                | lb1                                  |
    | operating_status    | ONLINE                               |
    | pools               |                                      |
    | project_id          | 35dd3f4ab5d140468f5411292fcc9552     |
    | provider            | amphora                              |
    | provisioning_status | ACTIVE                               |
    | updated_at          | None                                 |
    | vip_address         | 212.46.103.177                       |
    | vip_network_id      | 97d3c747-3626-442c-a3f6-67f372f71f80 |
    | vip_port_id         | dc1c43e7-f89a-486a-a551-bdcefc1ee896 |
    | vip_qos_policy_id   | None                                 |
    | vip_subnet_id       | bf96db7e-4e3e-42d5-9312-e09b81a6b3f1 |
    | tags                |                                      |
    +---------------------+--------------------------------------+
    hkn@controller-node:~$ openstack loadbalancer show lb1

    Schritt 2: Erstellung eines Listeners für den Loadbalancer

    Hinweis:

    • Bevor Sie mit der Verwendung Ihres Application Load Balancer beginnen, müssen Sie einen oder mehrere Listener hinzufügen. Ein Listener ist ein Prozess, der mithilfe des von Ihnen konfigurierten Protokolls und Ports nach Connection-Requests sucht. Die Regeln, die Sie für einen Listener definieren, bestimmen, wie der Load Balancer Anforderungen an seine registrierten Ziele (Eine Anzahl an vServer in einem Backend-Pool) weiterleitet.

     

    hkn@controller-node:~$ openstack loadbalancer listener create 
    --name listener1 --protocol HTTP --protocol-port 80 lb1
    +-----------------------------+--------------------------------+
    | Field                       | Value                          |
    +-----------------------------+--------------------------------+
    | admin_state_up              | True                           |
    | connection_limit            | -1                             |
    | created_at                  | 2022-08-24T14:14:00            |
    | default_pool_id             | None                           |
    | default_tls_container_ref   | None                           |
    | description                 |                                |
    | id                          | 8595e73b-1009-4846-a684-74c    |
    | insert_headers              | None                           |
    | l7policies                  |                                |
    | loadbalancers               | d0c55912-4d8b-4161-b79e87b4    |
    | name                        | listener1                      |
    | operating_status            | ONLINE                         |
    | project_id                  | 35dd3f4ab5d14292fcc9552        |
    | protocol                    | HTTP                           |
    | protocol_port               | 80                             |
    | provisioning_status         | ACTIVE                         |
    | sni_container_refs          | []                             |
    | timeout_client_data         | 50000                          |
    | timeout_member_connect      | 5000                           |
    | timeout_member_data         | 50000                          |
    | timeout_tcp_inspect         | 0                              |
    | updated_at                  | None                           |
    | client_ca_tls_container_ref |                                |
    | client_authentication       |                                |
    | client_crl_container_ref    |                                |
    | allowed_cidrs               |                                |
    | tls_ciphers                 |                                |
    | tls_versions                |                                |
    | alpn_protocols              |                                |
    | tags                        |                                |
    +-----------------------------+--------------------------------+

    Schritt 3: Erstellung eines Pools für den Load-Balancer

    Hinweis:

    • Ein Load-Balancing-Pool ist eine logische Gruppe von den Webservern, die Sie gruppieren, um Datenverkehr zu empfangen und verarbeiten.
      Als
    • Round-Robin ist die standardmäßige Load Balancer Policy. Diese Policy verteilt eingehenden Traffic nacheinander auf die einzelnen Server in einer Backend-Setliste (pool). Nachdem jeder Server eine Verbindung erhalten hat, wiederholt der Load Balancer die Liste in derselben Reihenfolge.

     

    hkn@controller-node:~$ openstack loadbalancer pool create --name pool1 
    --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP
    +----------------------+--------------------------------------+
    | Field                | Value                                |
    +----------------------+--------------------------------------+
    | admin_state_up       | True                                 |
    | created_at           | 2022-08-24T14:29:33                  |
    | description          |                                      |
    | healthmonitor_id     |                                      |
    | id                   | 09b80fc4-ac11-40c6-9b2a-08e1a9519854 |
    | lb_algorithm         | ROUND_ROBIN                          |
    | listeners            | 8595e73b-1009-4846-a684-74cdaa728385 |
    | loadbalancers        | d0c55912-4d8b-4161-b799-7efe5f1e87b4 |
    | members              |                                      |
    | name                 | pool1                                |
    | operating_status     | ONLINE                               |
    | project_id           | 35dd3f4ab5d140468f5411292fcc9552     |
    | protocol             | HTTP                                 |
    | provisioning_status  | ACTIVE                               |
    | session_persistence  | None                                 |
    | updated_at           | None                                 |
    | tls_container_ref    |                                      |
    | ca_tls_container_ref |                                      |
    | crl_container_ref    |                                      |
    | tls_enabled          |                                      |
    | tls_ciphers          |                                      |
    | tls_versions         |                                      |
    | tags                 |                                      |
    | alpn_protocols       |                                      |
    +----------------------+--------------------------------------+
    
    
    hkn@controller-node:~$ openstack loadbalancer pool list

    Schritt 4: Bereitstellung unserer vServer in Pool für den Load-Balancer

    Hinweis:
    Jetzt werden wir unsere vServer in den Pool für Load-Balancer bereitstellen.
    Dazu benötigen wir noch die ID von unserem Subnetz

    hkn@controller-node:~$ openstack loadbalancer network list
    hkn@controller-node:~$ openstack loadbalancer member create 
    --subnet-id 7a46a492 --address 10.40.38.10 --protocol-port 80 pool1
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | address             | 10.40.38.10                          |
    | admin_state_up      | True                                 |
    | created_at          | 2022-08-24T15:22:50                  |
    | id                  | f5ca2c54-655e-4500-83b5-c66a1c274572 |
    | name                |                                      |
    | operating_status    | NO_MONITOR                           |
    | project_id          | 35dd3f4ab5d140468f5411292fcc9552     |
    | protocol_port       | 80                                   |
    | provisioning_status | ACTIVE                               |
    | subnet_id           | 7a46a492                             |
    | updated_at          | None                                 |
    | weight              | 1                                    |
    | monitor_port        | None                                 |
    | monitor_address     | None                                 |
    | backup              | False                                |
    | tags                |                                      |
    +---------------------+--------------------------------------+
    
    
    

    Fertig?

  • Technisch ist das eine vollständige Loadbalancerlösung. Für den produktiven Einsatz sollten hier Health-Monitore ergänzt werden, schließlich soll die Anfrage ja nicht auf einer Instanz landen, die gerade nicht verfügbar ist.

Weitere Befehle zur Bearbeitung und das Löschen des Load-Balancers bzw. Pools und Listeners

hkn@controller-node:~$ openstack loadbalancer pool list
hkn@controller-node:~$ openstack loadbalancer loadbalancer show lb1
hkn@controller-node:~$ openstack loadbalancer pool delete pool1
hkn@controller-node:~$ openstack loadbalancer listener delete listener1
hkn@controller-node:~$ openstack loadbalancer loadbalancer delete lb1