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.
Pokud není časové pásmo již nastaveno na UTC, spusťte následující příkaz pro jeho konfiguraci:

sudo timedatectl set-timezone 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

Odstraňte výchozí konfiguraci:

sudo rm /etc/ssh/sshd_config.d/50-cloud-init.conf

3) Nakonfigurujte síť

Odstraňte výchozí cloud-init konfiguraci:

sudo rm /etc/netplan/50-cloud-init.yaml

Vytvořte novou Netplan konfiguraci:

sudo vi /etc/netplan/netplan.yaml

Tip

Podívejte se na kapitolu Networking pro více podrobností o správné konfiguraci sítě.

Aplikujte novou síťovou konfiguraci:

sudo netplan apply

4) 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í.

5) 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.

6) 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"
}

7) 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 192.0.2.0/24. Každý uzel clusteru získá jednu IP adresu z tohoto rozsahu, první uzel dostane 192.0.2.1, druhý 192.0.2.2 a tak dále.

Co je to podsíť 192.0.2.0/24?

Celý blok 192.0.2.0/24 je definován v RFC 5737 jako podsíť TEST-NET-1. Jeho použití interně v TeskaLabs LogMan.io minimalizuje riziko konfliktu s existujícím soukromým IP rozsahem v síti. Můžete použít jakoukoli jinou soukromou síť podle svých potřeb a požadavků.

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]. Na každém uzlu nakonfigurujte sekci Interface s odpovídajícím privátním klíčem a IP adresou příslušného uzlu.

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

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

[Peer]
# Druhý uzel
PublicKey = <obsah souboru wg0.pub ze uzlu lm2>
Endpoint = <IP adresa druhého uzlu lm2>:41194
AllowedIPs = 192.0.2.2/32
PersistentKeepalive = 60

[Peer]
# Třetí nebo jakýkoli jiný uzel
PublicKey = <obsah souboru wg0.pub ze uzlu lm3>
Endpoint = <IP adresa uzlu lm3>:41194
AllowedIPs = 192.0.2.3/32
PersistentKeepalive = 60
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0.service

8) 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

192.0.2.1 lm1
192.0.2.2 lm2
192.0.2.3 lm3

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

Použijte tyto IP adresy při nastavování LogMan.io v následujících krocích.

9) Restartujte server

sudo reboot

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