Preskočiť na obsah

Postup nasadenia vysokej dostupnosti pre OpenStack Horizon

Tento dokument popisuje postup nasadenia prístupovej vrstvy vysokej dostupnosti pre webové rozhranie OpenStack Horizon v prostredí spravovanom nástrojom Juju. Postup je určený pre administrátorov, ktorí realizujú nasadenie v prostredí s existujúcim Juju modelom.


1. Rozšírenie inštancií OpenStack Dashboard

Pridanie ďalších jednotiek služby openstack-dashboard na vybrané LXD kontajnery:

juju add-unit openstack-dashboard --to lxd:1
juju add-unit openstack-dashboard --to lxd:2
juju add-unit openstack-dashboard --to lxd:3
juju add-unit openstack-dashboard --to lxd:4
juju add-unit openstack-dashboard --to lxd:5

Overenie stavu:

juju status openstack-dashboard
juju status openstack-dashboard --format=short

Všetky jednotky musia byť v stave active/idle.


2. Nasadenie HAProxy

juju deploy haproxy --channel latest/stable --num-units 3 --to lxd:0,lxd:1,lxd:2
juju status haproxy

3. Nasadenie Keepalived a naviazanie na HAProxy

juju deploy keepalived --channel latest/stable --num-units 3 --to lxd:0,lxd:1,lxd:2
juju relate keepalived:juju-info haproxy:juju-info
juju config keepalived virtual_ip="<VIP>"
juju status keepalived

Nahraďte <VIP> zvolenou virtuálnou IP adresou zo staticky rezervovaného rozsahu správcovskej siete.

Overenie, že VIP je aktívna práve na jednom uzle:

juju ssh haproxy/0 "ip -br a | grep <VIP> || true"
juju ssh haproxy/1 "ip -br a | grep <VIP> || true"
juju ssh haproxy/2 "ip -br a | grep <VIP> || true"

Validný stav: presne jeden príkaz vráti nenulový výstup s adresou VIP.


4. Konfigurácia HAProxy backendu

juju config haproxy services='
- service_name: horizon_http
  service_host: "0.0.0.0"
  service_port: 80
  service_options: [mode tcp, option tcplog, balance leastconn]
  server_options: "check"
  servers:
    - [ "dashboard-0",  "<IP-dashboard-0>",  "70", "check" ]
    - [ "dashboard-1",  "<IP-dashboard-1>",  "70", "check" ]
    - [ "dashboard-2",  "<IP-dashboard-2>",  "70", "check" ]
    - [ "dashboard-3",  "<IP-dashboard-3>",  "70", "check" ]
    - [ "dashboard-4",  "<IP-dashboard-4>",  "70", "check" ]
    - [ "dashboard-5",  "<IP-dashboard-5>",  "70", "check" ]

- service_name: horizon_https
  service_host: "0.0.0.0"
  service_port: 443
  service_options: [mode tcp, option tcplog, balance leastconn]
  server_options: "check"
  servers:
    - [ "dashboard-0",  "<IP-dashboard-0>",  "433", "check" ]
    - [ "dashboard-1",  "<IP-dashboard-1>",  "433", "check" ]
    - [ "dashboard-2",  "<IP-dashboard-2>",  "433", "check" ]
    - [ "dashboard-3",  "<IP-dashboard-3>",  "433", "check" ]
    - [ "dashboard-4",  "<IP-dashboard-4>",  "433", "check" ]
    - [ "dashboard-5",  "<IP-dashboard-5>",  "433", "check" ]
'

Nahraďte <IP-dashboard-N> skutočnými IP adresami jednotlivých inštancií openstack-dashboard z výstupu juju status openstack-dashboard.


5. Zjednotenie tajného kľúča Horizon

Vygenerujte náhodný reťazec a nastavte ho na všetkých inštanciách:

juju config openstack-dashboard secret="<SECRET_KEY>"
juju exec --application openstack-dashboard -- "sudo systemctl restart apache2"

Overenie, že všetky inštancie používajú rovnakú hodnotu:

juju exec --application openstack-dashboard -- \
  "sudo grep SECRET_KEY /etc/openstack-dashboard/local_settings.py"

Každá inštancia musí vrátiť rovnakú hodnotu SECRET_KEY.


6. Overenie funkčnosti

Funkčný test dostupnosti cez VIP:

curl -vkI http://<VIP>/auth/login/ | egrep -i 'set-cookie:|srvname|location:|http/'

Pre HTTPS (ak je nakonfigurované):

curl -vk https://<VIP>

7. Nastavenie peering módu HAProxy (voliteľné)

juju config haproxy peering_mode="active-active"

Poznámky

  • Postup predpokladá existujúci funkčný Juju model s nasadeným OpenStack prostredím.
  • Pred prepnutím produkčného prístupu na VIP overte funkčnosť celej vrstvy podľa krokov 1–6.
  • Po nasadení aktualizujte DNS záznam pre webové rozhranie Horizon tak, aby smeroval na VIP.
  • Pre bežnú prevádzku a riešenie incidentov pozri Administrátorskú príručku.