ASAB Maestro Model
Model je YAML soubor nebo více souborů popisujících požadované uspořádání clusteru. Je hlavním bodem interakce mezi uživatelem a ASAB Maestro. Model je místem, kde lze přizpůsobit instalaci LogMan.io.
Modelový soubor(y)
Modelové soubory jsou uloženy v knihovně ve složce /Site/
.
Modelový soubor uživatelské úrovně je /Site/model.yaml
.
Administrátor tento soubor upravuje ručně, tj. v knihovně.
Může existovat více modelových souborů. Zejména spravované modelové části jsou odděleny do specifických souborů. Všechny modelové soubory jsou sloučeny do jedné modelové datové struktury, když je model aplikován.
Varování
Neupravit modelové soubory označené jako automaticky generované.
Struktura modelu
Příklad souboru /Site/model.yaml
:
define:
type: rc/model
services:
nginx:
instances:
1: {node: "node1"}
2: {node: "node2"}
2: {node: "node3"}
mongo:
- {node: "node1"}
- {node: "node2"}
- {node: "node3"}
myservice:
instances:
id1: {node: "node1"}
webapps:
/: My Web application
/auth: SeaCat Auth WebUI
/influxdb: InfluxDB UI
applications:
- name: "ASAB Maestro"
version: v23.32
- name: "My Application"
version: v1.0
params:
PUBLIC_URL: https://ateska-lmio
Sekce define
define:
type: rc/model
Určuje typ tohoto YAML souboru uvedením type: rc/model
.
Sekce services
Tato sekce uvádí všechny služby v clusteru. Ve výše uvedeném příkladu jsou služby "nginx", "mongo" a "myservice".
Každý název služby musí odpovídat příslušnému deskriptoru v knihovně.
Sekce services
je předepsána následovně:
services:
<service_id>:
instances:
<instance_no>:
node: <node_id>
<instance-level overrides>
...
<service-level overrides>
Přidání nové instance
Sekce instances
záznamu služby v services
musí specifikovat, na kterém uzlu má být každá instance spuštěna.
Toto je kanonická, plně rozšířená forma:
myservice:
instances:
1:
node: node1
2:
node: node2
3:
node2
Služba myservice
je naplánována ke spuštění ve třech instancích (číslo instance 1, 2 a 3) na uzlech node1
a node2
.
Následující formy jsou dostupné pro stručnost:
myservice:
instances: {1: node1, 2: node2, 3: node2}
myservice:
instances: ["node1", "node2", "node2"]
Poslední příklad definuje pouze jednu instanci (číslo 1) služby myservice
, která bude naplánována na uzel node1
:
myservice:
instances: node1
Odstraněné instance
Některé služby vyžadují pevný počet instancí po celou dobu životního cyklu clusteru, zejména pokud jsou některé instance odstraněny.
Přejmenování a přesun instancí
Při jakémkoli přejmenovávání nebo přesunu instancí z jednoho uzlu na druhý mějte na paměti, že mezi "starou" a "novou" instancí neexistuje žádná reference. To znamená, že jedna instance je odstraněna a druhá vytvořena. Pokud přesunete instanci služby z jednoho uzlu na druhý, buďte si vědomi, že data uložená na tomto uzlu a spravovaná nebo používaná službou nejsou přesunuta.
ZooKeeper
Číslo instance ve službě ZooKeeper slouží technologii ZooKeeper k identifikaci instance v rámci clusteru. Proto změna čísla instance znamená odstranění jednoho uzlu ZooKeeper ze clusteru a přidání nového.
Odstraněná instance je číslo dvě:
myservice:
instances:
1: {node: "node1"}
# Zde se dříve nacházela další instance, ale nyní je odstraněna
3: {node: "node2"}
Ve zkrácené formě je nutné použít null
:
myservice: ["node1", null, "node2"]
Přepis hodnot z deskriptoru
Chcete-li přepsat hodnoty z deskriptoru, můžete zadat tyto hodnoty na označeních <instance-level overrides>
nebo <service-level overrides>
.
V následujícím příkladu je počet cpu
nastaven na 2 v Docker Compose a také sekce asab
z deskriptoru asab-governator
je přepsána na úrovni instance:
services:
...
asab-governator:
instances:
1:
node: node1
descriptor:
cpus: 2
asab:
config:
remote_control:
url:
- http://nodeX:8891/rc
Stejný přepis, ale na úrovni služby:
services:
...
asab-governator:
instances: [node1, node2]
descriptor:
cpus: 2
asab:
config:
remote_control:
url:
- http://nodeX:8891/rc
Sekce webapps
Sekce webapps
popisuje, které webové aplikace mají být do clusteru nainstalovány.
Podívejte se na kapitolu NGINX pro více detailů.
Sekce applications
Sekce aplikací uvádí aplikace z knihovny, které mají být zahrnuty.
applications:
- name: <application name>
version: <application version>
...
Aplikace žije v knihovně ve složce /Site/<application name>/
.
Verze je specifikována v souboru version
ve složce /Site/<application name>/Versions/<application version>.yaml
.
Více aplikací může být nasazeno společně ve stejném clusteru, pokud existuje více záznamů aplikací v sekci applications
modelu.
Soubor verze
Příklad souboru verze
/Site/ASAB Maestro/Versions/v23.32.yaml
:
define:
type: rc/version
product: ASAB Maestro
version: v23.32
versions:
zookeeper: '3.9'
nginx: '1.25.2'
mongo: '7.0.1'
asab-remote-control: latest
asab-governator: stable
asab-library: v23.15
asab-config: v23.31
seacat-auth: v23.37-beta
asab-iris: v23.31
Sekce params
Tato sekce obsahuje páry klíč/hodnota pro úrovně clusteru (globální) parametrizaci stránky.
Rozšíření na úrovni modelu
Některé technologie umožňují, aby model specifikoval rozšíření jejich konfigurace.
Příklad rozšíření na úrovni modelu NGINX:
define:
type: rc/model
...
nginx:
https:
location /:
- gzip_static on
- alias /webroot/lmio-webui/dist
Více modelových souborů
Kromě uživatelské úrovně modelového souboru (/Site/model.yaml
) zde najdete také generované modelové soubory pojmenované podle tohoto vzoru: /Site/model-*.yaml
.
Modelové soubory jsou sloučeny do jednoho velkého modelu těsně před zpracováním pomocí ASAB Remote Control.