Přeskočit obsah

Installing TSM On-Premise

Basic concept

The TSM product is primarily developed to run optimally in acloud environment - Kubernetes or OpenShift. The document describes the installation at the customer in case a cloud variant is not possible (or preferred).

This is a so-called standalone installation on on-premise hardware, or on a virtualized server (either Hyper-V or VMware).

Making everything work similarly to a cloud environment is described in later sections of this document.

Note

In a containerized environment (kubernetes), multiple services (hostname) can run on the same port, this is ensured by creating a service object (similar to a DNS record).

When installing on on-premise (on separate hardware or virtualized server), nothing like this is possible, if we want to ensure sufficient security of running services.

All TSM microservices are bound to the IP address 127.0.0.1 at startup, each to a separate port:8081, 8082,8082, etc. Above these services, they are created using the settings in the nginx proxy. 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.