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
- Die Zugangsdaten für Ihr Virtuelles Rechenzentrum
- Die Zugangsdaten für mein.HKN.de
- Mindestens zwei vServer für Ihre Domäne in Ihrem VRZ
- Eine Floating-IP
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 VRZ 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 Subnetzhkn@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