Přeskočit obsah

Instalace TSM On-Premise

Základní koncept

Produkt TSM je primárně vyvíjen tak, aby optimálně běžel v cloud prostředí - Kubernetes či OpenShift. Dokument popisuje instalaci u zákazníka v případě, že není možná (či preferovaná) cloud varianta.

Jedná se o tzv. standalone instalaci na on-premise hardware, případně na virtualizovaném serveru (ať už Hyper-V nebo VMware).

To, aby vše fungovalo podobně jako v cloud prostředí, je popsáno v dalších částech tohoto dokumentu.

Poznámka

V kontejnerizovaním prostředí (kubernetes) může běžet více služeb (hostname) na stejném portu, to je zajištěno vytvořením objektu typu service (podobné DNS záznamu).

Při instalaci na on-premise (na samostatném hardware či virtualizovaném serveru) není nic takového možné, v případě, že chceme zajistit dostatečnou bezpečnost běžících služeb.

Všechny mikroslužby TSM jsou při spuštění bindovány na IP adresu 127.0.0.1, každá na samostatný port: 8081,8082,8082 atd. Nad těmito službami jsou pomocí nastavení v nginx proxy vytvořeny virtual hosts.

Pohled na takovéto nastavení:

flowchart TB n[Nginx Proxy\n0.0.0.0:80,443]-->v1 n-->v2 n-->v3 n-->v4 v1[virtual-host-1:80\nhost: tsm-service-discovery]-->p1 v2[virtual-host-2:80\nhost: tsm-user-management]-->p2 v3[virtual-host-3:80\nhost: tsm-customer]-->p3 v4[virtual-host-N:80]-->p4 p1([127.0.0.1:8081]) --o m1[tsm-mikroslužba-1\npkg: tsm-service-discovery.jar] p2([127.0.0.1:8082]) --o m2[tsm-mikroslužba-2\npkg: tsm-user-management.jar] p3([127.0.0.1:8083]) --o m3[tsm-mikroslužba-3\npkg: tsm-customer.jar] p4([127.0.0.1:...N]) --o m4[tsm-mikroslužba-...N]

Aby fungoval DNS překlad mezi názvem hostname a IP adresou 127.0.0.1, je nutné přidat následující záznamy do souboru /etc/hosts:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
127.0.0.1 tsm-address-management
127.0.0.1 tsm-calendar
127.0.0.1 tsm-catalog
127.0.0.1 tsm-config-form
127.0.0.1 tsm-customer
127.0.0.1 tsm-dms
127.0.0.1 tsm-gateway
127.0.0.1 tsm-inventory
127.0.0.1 tsm-ordering
127.0.0.1 tsm-process-definition
127.0.0.1 tsm-service-discovery
127.0.0.1 tsm-ticket
127.0.0.1 tsm-user-management

Komunikace mezi mikroslužbami

Jako příklad uvádíme HTTP komunikaci mezi tsm-gateway a tsm-user-management. Obecně takto mezi sebou komukují všechny mikroslužby TSM.

HTTP spojení mezi jednotlivými mikroslužbami TSM probíhá následovně:

  1. tsm-gateway najde IP adresu tsm-user-management pomocí záznamu v /etc/hosts (řádek, kde je uvedeno: 127.0.0.1 tsm-user-management)
  2. Vytvoří se TCP spojení na 127.0.0.1:80 (na tomto rozhraní poslouhá nginx proxy)
  3. nginx proxy má nakonfigurováno, že HTTP požadavky s hlavičkou Host: tsm-user-management má přeposlat na službu, která poslouchá na 127.0.0.1:8081 (přes direktivu proxy_pass).

Celá HTTP komunikace zakreslená do grafu:

flowchart TB gw[tsm-gateway]-->h(/etc/hosts\n127.0.0.1 tsm-user-management) h-->ip([127.0.0.1:80])--o proxy subgraph proxy["Nginx Proxy"] virt(Virtual host\nserver_name => tsm-user-management\nlisten => 80\nproxy_pass => 127.0.0.1:8081) end proxy-->ipum([127.0.0.1:8081])--o um[tsm-user-management]

Části instalace

Instalace TSM je rozdělena do několika částí:

Jednotlivé části jsou propojeny následujícím způsobem:

flowchart TB subgraph m[Mikroslužby] direction TB m1[Mikroslužba..1] m2[Mikroslužba..2] m3[Mikroslužba..3] mn[Mikroslužba..N] m1 --> m2 & m3 --> mn end m-->db[(Postgres\nrelační data)] m-->es[(ElasticSearch\nindex)] m-->kafka[(Kafka\nmessage bus)] es-->k[Kibana\nlogy, vizualizace dat] subgraph mon[Monitoring] direction TB p[(Prometherus)]-->g[Grafana] end m-->mon

Mikroslužby

Jsou tvořeny jar balíčky, základní konfigurací v yaml souborech a systemd skripty. jar balíčka jsou samostatné servlet containery, každá mikroslužba běží na samostatném portu (8081, 8082 ...)

Relační databáze

Primárně TSM provozujeme na Postgres databázi. Preferujeme verzi 11, 12. Databáza je plně ve správě zákazníka (na produkci doporučujeme 2x instance, asynchronně synchronizované, 1x v read only režimu). DataLite dodává základní dump databáze, případně customizujeme doplňky. Tedy je nutné provést prvotní import základních struktur.

Infrastrukturní komponenty

Komponenty nutné k běhu TSM. Instalují se buď na stejném serveru jako jar balíčky, případně mohou být kompletně samostatně. Preferujeme variantu, kdy každá komponenta běží na samostatném (i virtuálním) serveru. Mezi tyto komponenty patří elasticsearch, kafka, zookeeper, kibana (pouze doporučená komponenta)

Monitoring

Jako samostatnou část doporučujeme instalovat monitoringovací aplikace. Tato část není součástí standardní instalace, jedná se o doporučenou část. Někdy je vhodné zvolit existující řešení zákazníka (Icinga, InfluxDB). DataLite doporučuje nasadit následující součásti pro monitoring: prometheus, node_exporter (na každý virtuální server), grafana (+dashboardy), jmx_exporter, případně loki (prometheus pro logy), promtail (sběr logů). Jsme schopni dodat existující dashboardy pro grafanu.