…, tedy zatím jen v infrastruktuře našeho .CZ DNS anycastu. Ale začněme pěkně od začátku.
V letošním roce nás čeká pravidelná obměna DNS serverů po uplynutí supportu v neveřejné lokalitě. V této naší třetí české lokalitě neběží žádný DNS stack, ale takzvané standalone DNS servery. Abychom dodrželi požadovanou redundanci, pro každé písmenko DNS anycastu (A, B a D) jsou tu v provozu dva servery. Celkem tedy šest serverů. Pokud bychom nechtěli nic měnit, obměníme prostě stejný počet serverů, provedeme instalaci a konfiguraci a jsme hotovi. Byla by však škoda nevyužít příležitost a v této lokalitě „postavit“ DNS servery trochu jinak.
Mnozí si jistě vzpomenete, že jsme na podzim roku 2020 spustili první instanci našeho autoritativního DNS serverů KNOT 3.0 s podporou XDP. Jelikož by bylo poněkud komplikovanější (i z pohledu relevantního otestování) takový server nasadit v jednom z našich 100GE DNS stacků, rozhodli jsme se tento server zprovoznit právě v neveřejné lokalitě. A to byl vlastně takový první impuls k tomu budovat zde tak trochu „jiné“ DNS servery.
Rozhodli jsme se, že současné servery nahradíme různými speciálními případy, abychom měli náš DNS anycast ještě více odolný. A největší specialitou je právě nasazení prvního ARM serveru do ostrého provozu. Náš důraz na SW a HW diverzitu jsme tak posunuli na ještě vyšší úroveň, nově neběží DNS pro .CZ doménu pouze na x86 architektuře.
Společně s novými konfiguracemi všech serverů jsme se rozhodli snížit jejich počet ze šesti na čtyři. Samozřejmě tak, abychom nijak neomezili provoz v této lokalitě. První tři servery budou totiž i nadále propagovat každý jedno písmenko DNS anycastu. Čtvrtý sice všechny tři, ale díky uměle nastavené BGP metrice bude záměrně znevýhodněn a nebude na něj směrován žádný DNS provoz. A to až do chvíle, dokud na některém z předcházejících serverů BGP propagaci nezastavíme, například z důvodu pravidelných aktualizací nebo servisního zásahu.
Čtyři servery jsme z pohledu HW, provozovaného operačního systému, BGP a DNS démona navrhli takto:
Server |
CPU |
OS |
Routing |
DNS |
|
Server č. 1 |
DELL |
2x INTEL Xeon Gold |
Ubuntu 20.04 LTS |
Bird |
KNOT+XDP |
Server č. 2 |
GIGABYTE |
2x Cavium ThunderX ARM |
Ubuntu 20.04 LTS |
FRRouting |
NSD |
Server č. 3 |
HPE |
1x AMD EPYC |
1x AMD EPYC |
BGPD |
BIND |
Server č. 4 |
Supermicro |
2x INTEL Xeon Gold |
Debian 10 |
Bird |
KNOT bez XDP |
Server číslo 1 je, jak jsem zmínil v úvodu, v provozu. Server číslo 2, v době psaní tohoto blogpostu, již také, a ještě vás seznámím s podrobnostmi jeho nasazením. Servery číslo 3 a 4 budeme v tomto roce pořizovat a jejich nasazení plánujeme provést do poloviny letošního roku.
ARM server
Pojďme konečně ke zmiňovanému ARM serveru. Jedná se o server GIGABYTE R150-T60, který je osazen dvěma ARM procesory Cavium ThunderX, každý nabízí 48 jader, dále je k dispozici až 16 DDR4 quad channel slotů, 10 pozic pro 2,5“ pevné disky, dedikovaný port pro remote-management a co je nejvíce zajímavé, obsahuje onboard 4x 10GbE SFP+ a 3x 40GbE QSPF+ síťové porty. A žádný metalický RJ45 1GbE port. V naší konfiguraci máme kromě obou procesorů použito 128GB RAM a pět 1TB SATA disků v RAID10 s jedním hotspare.
Původně jsme tento server chtěli využít, vzhledem k jeho velkému počtu CPU jader, jako velmi výkonný DNS server, který by mohl nahradit několik méně výkonných serverů na architektuře x86. Poměrně velkou slabinou se ukázaly být použité integrované síťové karty, neboť například oproti síťovým kartám Intel X(L)710, Mellanox ConnectX-5 EX a jiným nabízí ve skutečnosti jen zlomek front, tak velký počet CPU jader by se využil jen z malé části. Proto jsme u tohoto serveru opustili myšlenku na nasazení Knot DNS s podporou XDP a bereme jako výhodu, že používáme integrovanou síťovou kartuCavium ThunderX.
Informace o použitém jaderném modulu síťové karty:
root@dns:~#> modinfo nicvf
filename: /lib/modules/5.4.0-65-generic/kernel/drivers/net/ethernet/cavium/thunder/nicvf.ko
version: 1.0
license: GPL v2
description: Cavium Thunder NIC Virtual Function Driver
author: Sunil Goutham
srcversion: 5F8D06EB22E19547B4A3C99
alias: pci:v0000177Dd0000A034sv0000177Dsd0000A334bc*sc*i*
alias: pci:v0000177Dd0000A034sv0000177Dsd0000A234bc*sc*i*
alias: pci:v0000177Dd00000011sv0000177Dsd0000A11Ebc*sc*i*
alias: pci:v0000177Dd0000A034sv0000177Dsd0000A134bc*sc*i*
depends: cavium_ptp
intree: Y
name: nicvf
vermagic: 5.4.0-65-generic SMP mod_unload aarch64
Při přípravě serveru jsme vyzkoušeli, že je možné bez problémů nainstalovat a používat Debian 10 nebo Ubuntu 20.04 LTS. Nakonec jsme vybrali Ubuntu právě kvůli verzi jádra 5.4 a také proto, že v Debianu systém načetl pouze jeden ze tří 40GbE portů. Samozřejmě jsme vyzkoušeli provoz i na 40GbE, ale v produkčním prostředí jsme server připojili standardně 2x 10GbE, neboť dvakrát čtyřicetigigabit bychom reálně nebyli schopni, vzhledem k výše uvedeným omezením, využít naplno.
Závěrem přikládám fotografii Gigabyte serveru mezi ostatními v racku…
… a výstup z utility htop ukazující počet CPU jader.
Věřím, že ARM, nepočítaje mobilní zařízení, bude mít budoucnost i v serverové oblasti, a těším se, až tyto procesory začnou nabízet i další dodavatelé. Apple se svým novým procesorem M1 ukazuje opravdu zajímavý směr. Že by se chystal postupný konec x86 architektury? Nechme se překvapit…