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:
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:
Pre HTTPS (ak je nakonfigurované):
7. Nastavenie peering módu HAProxy (voliteľné)
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.