Skip to main content

Installation

Maxime avatar
Written by Maxime
Updated over 4 months ago

Komponenty paczki

  • SQL Migration script (seed)- w przypadku instalacji inicjalnej skrypt SQL tworzy od początku cała strukturę bazy danych i aplikuje wszystkie zmiany do instalowanej wersji oprogramowania PSD2Hub.

  • Images- kontenery, w ramach paczki przekazywane są następujące obrazy:

    • rest: PSD2Hub REST API

    • connector_polish_api: konektor PolishAPI

    • connector_polish_api_ex: konektor PolishAPI z mechanizmem exchange token

    • consent_service: micro service do obsługi cyklu życia zgody (consent) Consent management

    • identifier_service: micro service do obsługi cyklu życia identyfikatorów

    • sessioncallback_service: usługi callback Callback services

    • batchjob: usługa odświeżania danych w tle

    • session_service: micro service do obsługi cyklu życia sesji

    • user_service: micro service do zarządzania użytkownikami

opisy poszczególnych usług (services): Services

Instalacja

Instalacja Docker + docker-compose

Weryfikacja połączenia między maszynami/azure registry/docker hub itp

Instalacja Rabbit, MongoDB, SQL (w dowolnej kolejności) portainer

Instrukcja instalacji kontenerów z komponentami middleware

  1. Jeśli nie jest wykorzystywany docker-hub contaner registry, pobieramy archiwum z paczką i ją rozpakowujemy.

  2. Kopiujemy zawartość katalogu z nazwą vmki do katalogu /home/bankup/, np. zawartość katalogu bu-mid1 powinna zostać skopiowana na maszynę bu-mid1.

  3. Komenda ls /home/banqup/ powinna zwrócić:
    compose portainer-agent mongo.tar portainer-agent.tar rabbit.tar

  4. Jeżeli powyższy krok zwrócił poprawną wartość przystępujemy do importu obrazów dockerowych.
    4a. Wywołujemy komendę docker load -i /home/banqup/mongo.tar
    4b. Wywołujemy komendę docker load -i /home/banqup/rabbit.tar
    4c. Wywołujemy komendę docker load -i /home/banqup/portainer-agent.tar

  5. Jeżeli powyższe operacje zakończyły się powodzeniem, przechodzimy do uruchamiania kontenerów:
    5a. Wywołujemy komendę cd /home/banqup/portainer-agent
    5b. Wywołujemy komendę docker-compose up -d
    5c. Wywołujemy komendę cd /home/banqup/compose
    5d. Wywołujemy komendę docker-compose up -d

  6. By upewnić się ze wszystkie kontenery działają wywołujemy komendę
    docker ps
    Powinny być uruchomione 3 kontenery.

  7. By upewnić się że rabbitmq działa należy w przeglądarce wejść pod adres <ip serwera>:15672. Powinien pojawić się management portal.

Klastrowanie mongodb:

Wszystkie kontenery mongo powinny mieć flagę unless-stopped.

Zakładana konfiguracja to 2 node’y funkcjonalne i jeden arbiter. Arbiter nie może pełnić roli bazy, bierze tylko udział w głosowaniu w wypadku wyłączenia primary node’a. Dlatego przydzielamy mu minimalne zasoby gwarantujące stabilność. On nic nie liczy.

Po sklastorwaniu konieczna będzie zmiana formatu connection string do mongodb na node1,node2,node3 w .env (przyjmuje liste wszystkich node'ów niezaleznie od roli w klastrze) gdzie node1, node2, node3 to domenowa nazwa hosta konkretnego node’a. Konieczne tylko jeśli wcześniej środowisko działało bez klastra mongo.

Przed klastrowaniem mongo trzeba wygenerowac plik mongo.key, kóry bedzie wykorzytwyany do komunikacji pomiedzy node'ami mongo.

openssl rand -base64 756 > /app/mongo/mongo.key

Ten sam keyfile nalezy wgrac na node2 i node3 i nadac uprawnienia

chown 999:999 -R /app/mongo

chmod 600 /app/mongo/mongo.key

Na systemach UNIX pochodnych keyfile nie moze miec globalnych ani grupowcyh uprawnien.

Na wszystkie node'y nalezy wgrac pliki mongod.conf (na nodzie 3, który ma pelnic role arbitra ten plik ma inna zawartosc niz na node 1 i 2, ze względu na inne zapotrzebowanie zasobów arbitra, te same różnice mamy w mongo).

Plik mongod.conf trzyma konfigurację mongodb, wskazanie na keyfile, nazwę klastra, przydzielony cache itp.

Sciezki:

  • /composes/mongo/mongo.key - plik z kluczem, musi być wgrany na wszystkie maszynki. Node’y używają go do komunikacji między sobą.

  • /composes/mongo/mongoRSInit.js - przykładowe komendy

  • /composes/mongo/mongod.conf - plik konfiguracyjny mongo.

  • /data/mongo - volume, w którym mapowane będą dane mongo.

Klajster po kolei:

1.Podegranie compose z konfiguracją mongodb.

2. Compose up z wykomentowanym commandem z configiem. W pierwszej kolejności chcemy aby stworzyły się userzy/hasła volumes itp. Jeśli jest to pierwszy up komentowanie nie powinno być konieczne, w wypadku usunięcia volumes rozklastrowania komentarz niestety jest konieczny, bo mongo nie zawsze radzi sobie z zachowanym kontekstem.

3. Zależnie od konieczności należy nadać uprawnienia do volumes. It is a docker thing.

4. W następnym kroku wykonujemy właściwe klastrowanie. Można wejśc do kontenera, który ma pełnić rolę primary lub podpiąć się przez robo3t.

Bedąc zalogowanym wykonujemy (na primary):

rs.init() → komenda incjująca klaster.

rs.add(<tunazwasecondary>:27017) → komenda doda secondary node, któy przejmię rolę primary w wypadku awarii.

rs.addArb(<tunazwahostaarbitra>:27017) → komenda doda arbitra.

5. dodatkowo można nadać wyższy priorytet maszynie przewidzianej na primary. W shellu mongo wykonujemy

config = rs.config() → przypisujemy do zmiennej config obiekt z konfiguracją zwracany przez komendę rs.config.

Następnie możemy modyfikować wartości obiektu config. Składnia jak w javascript.

config.members[0].priority = 2

rs.reconfig(config)

Klastrowanie może chwilę zająć. W ramach wątpliwości polecam dokumentację

:slight_smile:

Tips:

cache mongo (deklarowany w mongod.conf) powinien mieć: <zasoby na kontener>/2 - 0.5 gb ramu i minimalnie 256 mb. Zasoby na kontener przydzielamy w compose.

Przygotowanie compose (z szablonu)

Przygotowanie env (uzupełnienie connection stringów do mongo, sql, rabbita)

Docker compose- pliki compose stanowią integralną cześć wydania, są dostarczane przez banqUP i nie powinny być modyfikowane.

Docker env- pliki są zarządzane przez Klienta. Instrukcja: Docker env file

Instalacja kontenerów PSD2Hub

Instrukcja instalacji kontenerów z komponentami PSD2Hub

  1. Pobieramy archiwum z paczką i ją rozpakowujemy.

  2. Kopiujemy zawartość katalogu z nazwą vmki do katalogu /home/bankup/, np. zawartość katalogu bu-app1 powinna zostać skopiowana na maszynę bu-app1.

  3. Komenda ls /home/banqup/ powinna zwrócić:
    compose portainer-agent mongo.tar portainer-agent.tar rabbit.tar

  4. Jeżeli powyższy krok zwrócił poprawną wartość przystępujemy do importu obrazów dockerowych.
    4a. Wywołujemy komendę docker load -i /home/banqup/…….tar
    4b. Wywołujemy komendę docker load -i /home/banqup/…….tar
    4c. Wywołujemy komendę docker load -i /home/banqup/…….tar

  5. Jeżeli powyższe operacje zakończyły się powodzeniem, przechodzimy do uruchamiania kontenerów:
    5a. Wywołujemy komendę cd /home/banqup/portainer-agent
    5b. Wywołujemy komendę docker-compose up -d
    5c. Wywołujemy komendę cd /home/banqup/compose
    5d. Wywołujemy komendę docker-compose up -d

  6. By upewnić się ze wszystkie kontenery działają wywołujemy komendę
    docker ps
    Powinny być uruchomione …… kontenery.

Did this answer your question?