Přeskočit obsah

Od operačního systému k Dockeru

V této fázi nejen nainstalujete Docker, ale také celkově připravíte stroj na instalaci TeskaLabs LogMan.io.

Pokud jste přeskočili instalaci na holém hardwaru a provedli instalaci na virtuálním serveru, věnujte pozornost požadavkům.

Požadavky

  • Běžící server s nainstalovaným operačním systémem.
  • Přístup na server přes SSH, uživatel je tladmin s oprávněním vykonávat sudo.
  • Pomalé úložiště připojené na /data/hdd.
  • Rychlé úložiště připojené na /data/ssd.

Časové pásmo UTC

Časové pásmo operačního systému pro TeskaLabs LogMan.io MUSÍ být nastaveno na UTC.

Kroky

1) Přihlaste se na server přes SSH jako uživatel tladmin

ssh tladmin@<ip-of-the-server>

2) Nakonfigurujte přístup přes SSH

Nainstalujte veřejný SSH klíč pro uživatele tladmin:

cat > /home/tladmin/.ssh/authorized_keys

Omezení přístupu:

sudo vi /etc/ssh/sshd_config

Změny v /etc/ssh/sshd_config:

  • PermitRootLogin na no
  • PubkeyAuthentication na yes
  • PasswordAuthentication na no

3) Nakonfigurujte parametry jádra Linuxu

Zapište tento obsah do souboru /etc/sysctl.d/01-logman-io.conf

vm.max_map_count=262144
net.ipv4.ip_unprivileged_port_start=80
fs.inotify.max_user_instances=1024
fs.inotify.max_user_watches=1048576
fs.inotify.max_queued_events=16384

Parametr vm.max_map_count zvyšuje maximální počet mmaps v subsystému virtuální paměti Linuxu. Je to potřeba pro Elasticsearch.

Parametr net.ipv4.ip_unprivileged_port_start umožňuje neprivilegovaným procesům naslouchat na portu 80 (a více). To je potřeba, aby NGINX mohl naslouchat na tomto portu a nevyžadoval zvýšená oprávnění.

4) Nainstalujte Docker

Docker je nezbytný pro nasazení všech mikroservis LogMan.io v kontejnerech, konkrétně Apache Kafka, Elasticsearch, NGINX a jednotlivé streamingové pumpy atd.

Vytvořte logický svazek dockerlv s EXT4 souborovým systémem:

sudo lvcreate -L100G -n dockerlv systemvg
sudo mkfs.ext4 -L docker-ssd /dev/systemvg/dockerlv
sudo mkdir /var/lib/docker

Zadejte následující řádek do /etc/fstab:

/dev/disk/by-label/docker-ssd   /var/lib/docker ext4 defaults,noatime 0 1

Připojte svazek:

sudo mount /var/lib/docker

Nainstalujte balíček Docker:

sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo usermod -aG docker tladmin

Znovu se přihlaste na server, aby se projevila změna skupiny.

5) Deaktivujte Docker bridge síť

Docker vytváří bridge síť (docker0) ve výchozím nastavení, která není potřebná pro TeskaLabs LogMan.io. Toto je způsob, jak deaktivovat výchozí bridge síť Dockeru.

Vytvořte soubor /etc/docker/daemon.json s následujícím obsahem:

{
    "bridge": "none"
}

6) Nainstalujte Wireguard

Wireguard je rychlá a nejbezpečnější VPN technologie. TeskaLabs LogMan.io využívá Wireguard pro interní komunikaci v rámci clusteru.

Rozsah IP adres Wireguard sítě je 172.17.10.0/24. Každý uzel clusteru získá jednu IP adresu z tohoto rozsahu, první uzel dostane 172.17.10.1, druhý 172.17.10.2 a tak dále.

sudo apt install wireguard
sudo su -
cd /etc/wireguard/
umask 077
wg genkey > wg0.key
wg pubkey < wg0.key > wg0.pub

Vytvořte /etc/wireguard/wg0.conf s následujícím obsahem. Upravte sekce [Peer], aby odrážely rozložení vašeho clusteru. Pokud instalujete variantu s jedním uzlem, bude přítomna pouze jedna sekce [Peer].

[Interface]
PrivateKey = <obsah souboru wg0.key>
ListenPort = 41194
Address = 172.17.10.1/24
MTU = 1412

[Peer]
# První uzel
PublicKey = <obsah souboru wg0.pub>
Endpoint = <IP adresa prvního uzlu>:41194
AllowedIPs = 172.17.10.1/32
PersistentKeepalive = 60

[Peer]
# Druhý uzel
PublicKey = <obsah souboru wg0.pub ze uzlu lmb2>
Endpoint = <IP adresa druhého uzlu>:41194
AllowedIPs = 172.17.10.2/32
PersistentKeepalive = 60
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0.service

7) Nakonfigurujte rozlišení názvů hostitelů (volitelně)

Cluster TeskaLabs LogMan.io vyžaduje, aby každý uzel mohl rozlišit IP adresu jakéhokoli jiného uzlu clusteru podle jeho názvu. Pokud nakonfigurovaný DNS server tuto schopnost neposkytuje, názvy uzlů a jejich IP adresy musí být vloženy do /etc/hosts.

sudo vi /etc/hosts

Příklad /etc/hosts

172.17.10.1 lma1
172.17.10.2 lmb1
172.17.10.3 lmx1

Všimněte si, že IP adresy jsou převzaty z rozsahu Wireguard.

8) Restartujte server

sudo reboot

Je důležité aplikovat všechny výše uvedené parametry.