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
Jeśli nie jest wykorzystywany docker-hub contaner registry, pobieramy archiwum z paczką i ją rozpakowujemy.
Kopiujemy zawartość katalogu z nazwą vmki do katalogu /home/bankup/, np. zawartość katalogu bu-mid1 powinna zostać skopiowana na maszynę bu-mid1.
Komenda ls /home/banqup/ powinna zwrócić:
compose portainer-agent mongo.tar portainer-agent.tar rabbit.tarJeż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.tarJeż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 -dBy upewnić się ze wszystkie kontenery działają wywołujemy komendę
docker ps
Powinny być uruchomione 3 kontenery.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ę
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
Pobieramy archiwum z paczką i ją rozpakowujemy.
Kopiujemy zawartość katalogu z nazwą vmki do katalogu /home/bankup/, np. zawartość katalogu bu-app1 powinna zostać skopiowana na maszynę bu-app1.
Komenda ls /home/banqup/ powinna zwrócić:
compose portainer-agent mongo.tar portainer-agent.tar rabbit.tarJeż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/…….tarJeż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 -dBy upewnić się ze wszystkie kontenery działają wywołujemy komendę
docker ps
Powinny być uruchomione …… kontenery.
