CoreCP

Servers indelen in uitrol-golven

Een nieuwe versie gaat nooit in één keer naar alle servers. Hij loopt in golven: eerst een canary, dan golf 1, dan de rest, met een wachttijd en een gezondheidscontrole tussen elk paar. Welke server in welke golf zit, bepaal jij.

Geschreven voor: Beheerder

Een nieuwe versie gaat nooit in één keer naar alle servers. Hij loopt in golven: eerst een canary, dan golf 1, dan de rest, met een wachttijd en een gezondheidscontrole tussen elk paar. Welke server in welke golf zit, bepaal jij.

Bij vier servers doe je dat door ze te slepen. Bij tweehonderd niet. Deze pagina gaat over de manier die wél schaalt: je beschrijft je vloot met regels, en het paneel leidt daar de indeling uit af — ook voor servers die je volgende maand pas toevoegt.

Alleen beheerders. Resellers en eindklanten zien dit scherm nooit.

Open Vloot → Releases. Onderaan staan drie dingen, in de volgorde waarin je ze gebruikt: de regels, het bord met de golven, en de uitzondering.


In het kort

Wat je wiltHoe
Een hele groep servers in één golfSchrijf een regel: "tag = nl → golf 2"
Een paar servers verplaatsenVink ze aan en kies Verplaats selectie naar
Eén server ergens andersSleep hem, of open hem en kies een golf
Weten waarom een server ergens zitKijk naar het badge achter zijn naam
Zien wat een regel gaat doen vóór je hem opslaatKlik Testen

1. Geef je servers labels

Een regel selecteert op vier dingen: nodegroep, regio, rol en tag. De eerste twee kent het paneel al (de groep waarin de server zit, en de rollen die erop draaien); regio en tags geef je zelf.

  1. Klik op een server in het bord. Er schuift een paneel open.
  2. Onder Labels kies je een sleutel (region of tag), typ je een waarde en klik je Label toevoegen.

region heeft altijd één waarde — een server in twee regio's zou elke regio-regel dubbelzinnig maken. tag mag er zoveel hebben als je wilt.

Vanaf de terminal kan het ook, en dat is handig voor een hele reeks tegelijk:

# root@panel1
$ corecp-panel waves label stck1.corecp.dev region=nl tag=ssd
NODE              KEY     VALUE
stck1.corecp.dev  region  nl
stck1.corecp.dev  tag     ssd

2. Schrijf een regel — en test hem eerst

  1. Klik Regel toevoegen bij Indelingsregels.
  2. Geef hem een korte naam (nl-naar-golf-2), kies Wanneer (bijvoorbeeld tag), typ de waarde en kies de golf.
  3. Klik Testen.

Testen schrijft niets. Je krijgt per server te zien wat er écht zou gebeuren, en dat is niet hetzelfde als "welke servers passen bij de regel":

  • naar golf X verplaatsen — die gaan bewegen;
  • blijft staan (al goed) — die zitten er al;
  • blijft staan — handmatig ingedeeld — iemand heeft die server met de hand neergezet, en dat gaat boven elke regel;
  • blijft staan — regel Y pakt hem eerder — een regel die hoger in de lijst staat, claimt hem het eerst.

Onder de lijst staat de optelsom, en de zin "Er is nog niets opgeslagen." Klopt het beeld? Klik Opslaan. Het paneel past de regel meteen toe en zegt hoeveel servers er zijn verplaatst.

3. De volgorde is het beleid

Regels worden van boven naar beneden gelezen en de eerste die past, wint. Met de pijltjes ↑ en ↓ zet je een regel eerder of later. Elke wijziging herberekent de vloot meteen.

Een voorbeeld dat vaak voorkomt:

1  dns-naar-golf-1    rol = dns      → golf 1
2  nl-naar-golf-2     regio = nl     → golf 2
3  rest-naar-golf-3   rol = web      → golf 3

Een Nederlandse DNS-server komt dan in golf 1, niet in golf 2 — want regel 1 staat er eerder. Wil je het andersom, zet dan regel 2 bovenaan.

4. Nog niet ingedeeld

Een nieuwe server komt niet automatisch in een golf terecht. Hij landt in de groep Nog niet ingedeeld, en blijft daar tot een regel hem pakt of jij hem toewijst.

Dat is met opzet: een machine waarvan niemand de impact heeft ingeschat, hoort niet per ongeluk in de eerste, risicovolste golf te belanden. Maar het is ook geen eindstation — een server in die groep krijgt geen enkele uitrol. Het bord zegt dat er ook bij, en een uitrolplan noemt de namen die het daarom overslaat.

De snelste oplossing is meestal: geef de server het label dat je al gebruikt, en een bestaande regel pakt hem vanzelf op zodra je het bord opnieuw opent.

5. Bulk: meerdere servers tegelijk

  1. Typ in het zoekveld waar je op wilt filteren — een naam, een regio, een rol, een tag. Het bord versmalt mee.
  2. Vink de servers aan die je wilt verplaatsen.
  3. Kies rechtsboven een golf en klik Verplaats selectie naar.

Dat is één handeling, één auditregel, en alle geselecteerde servers staan daarna gemarkeerd als handmatig — dus geen enkele regel verplaatst ze later terug.

6. Waarom zit deze server hier?

Achter elke servernaam staat een badge:

BadgeBetekenis
handmatigIemand heeft hem hier neergezet. De naam staat in de tooltip. Geen regel verplaatst hem nog.
regel <naam>Deze regel heeft hem ingedeeld. Verandert de regel, dan verandert zijn golf mee.
automatischHij is ingedeeld vóórdat er regels bestonden. Een regel mag hem overnemen.
geen regelHij staat in Nog niet ingedeeld.

7. Een uitzondering blijft een uitzondering

Slepen werkt gewoon nog. Pak een server op en laat hem op een andere golfkaart los — voor die ene machine die om een eigen reden ergens anders hoort. Zo'n verplaatsing is handmatig en overleeft elke herberekening van de regels.

Vraagt het paneel om een bevestiging?

Indelen niet. Een server in een golf zetten installeert niets, raakt geen enkele machine en is ongedaan te maken door hem terug te slepen. Daar hoort geen wachtwoordprompt bij.

Uitrollen wel. Een release doorzetten of een uitrol starten raakt de hele vloot. Daar vraagt het paneel opnieuw om je tweede factor, in een net dialoog — je vult je code in, klikt Bevestigen, en de handeling die je wilde doen wordt gewoon voortgezet. Je raakt niets kwijt.

Alles ook vanaf de terminal

# root@panel1
$ corecp-panel waves board            # het hele bord, met de reden per server
$ corecp-panel waves rules            # de regels, in volgorde
$ corecp-panel waves rule test nl-naar-golf-2 --on region --is nl --to wave-2
$ corecp-panel waves rule add  nl-naar-golf-2 --on region --is nl --to wave-2
$ corecp-panel waves move stck1.corecp.dev wave-1 --busy
$ corecp-panel waves apply --dry-run  # wat zou een herberekening veranderen

Zie ook