Najlepsza technologia do konteneryzacji mojej aplikacji wraz z bazą

0

Witam.
Mam serwer z jednym adresem publicznym adresem IP.
Na nim zainstalowany apache,mariadb.
Na serwerze działa 50 aplikacji java na tomcacie. Każda aplikacja działa na innym porcie, apache robi reverse
proxy i tak na jednym adresie ip działa 50 aplikacji, do bazy danych połączenie lokalne.

Struktura wygląda mniej więcej tak

/apps/Aplikacja1
/apps/Aplikacja2

Katalog Aplikacja ma podkatalogi

Aplikacja/
├── files (pliki użytkownika ładowane do aplikacji oraz generowanie przez aplikację )
├── lib(openjdk)
├── logs
└── tomcat

Każda taka aplikacja ma osobną bazę danych.
Codziennie jest robiony backup bazy i plików klienta, na osobny serwer.
Co miesiąc jest robiona aktualizacja: baza danych skrypt sql(zmiana struktury ) , aplikacja podmiana pliku war, tomcat (podmiana katalogu tomcata i skopiowanie plików konfiguracyjnych), podmiana katalogu openjdk.

Chciałbym to zmienić aby każda aplikacja była osobną instancją. Jedno coś zawierające aplikację(tomcat),openjdk,maridb.
Chciałbym do tego podłączyć zabbix , dla samego hosta(pojedynczego kontenera), bazy danych , javy(jxm).
Nie bardzo wiem czy docker do tego będzie pasował czy lepiej wybrać proxmox z lxd lub openvz.
Które z tych rozwiązań jest łatwiejsze do utrzymania w powyższej sytuacji.
Może istnieją jakieś inne rozwiązania.
Czy mógłbym liczyć na jakąś radę. opinię?

0

Chcesz mieć bazę i app w jednym kontenerze ? Według mnie to błąd. Ja bym postawił serwer baz danych osobno o serwera aplikacyjnego I tam trzymał bazę dla każdego klienta. Jak będziesz podnosił aplikację to wystarczy odpalić docker compose dla każdego klienta z odpowiednią konfiguracja.

0

Tak, chciałby umieścić aplikację i bazę danych w jednym kontenerze, myślałem bardziej tutaj o lxd niż o docker.
Chciałbym tak zrobić dlatego że mamy jednego klienta który bardzo obciąża bazę oraz serwer, chciałbym móc sterować przydzielonymi zasobami.
Na tą chwilę jeżeli jeden z klientów bardziej obciąży bazę danych to inni nie są w stanie korzystać z programu.
Jeżeli miałby kontener klienta to mógłbym przeanalizować zachowanie działania aplikacji oraz bazy danych

0

No to postaw bazę na kontenerach, nie jest rewelacyjny pomysł ale rozwiąże twój problem . A jak będzie regenerowal kontenery z.niwa wersja to będziesz musiał bazę wgrywać z backupu.

Co do analizy. A dlaczego tego nie jesteś wstanie zrobić teraz? Dodaj logi i zobaczysz gdzie ci nie wydala

0

Mam 5 baz na jednym serwerze mariadb, wiem że jedna z nich generuje obciążenie, włączając general_log_file nie jestem w stanie rozróżnić z której bazy pochodzą zapytania, bo nie wiem jak miałbym to inaczej przeanalizować niż czytając logi, a nie mogę sobie pozwolić na wyłączenie pozostałych

0

A w aplikacji masz jakieś logi?

1

Czy mi się wydaje, czy Ty chcesz z jednego serwera bazodanowego zrobić 50 tylko po to, żeby namierzyć klienta który mocno obciąża bazę? Zdajesz sobie sprawę, że każdy taki serwer ma swój narzut? Pomnóż to x50 i robią się z tego konkretne liczby.

Pomysł wciśnięcia apki z bazą w jeden kontener też jest kompletnie nietrafiony - nie potrzebujesz wciskać ich obu w jeden kontener żeby sterować ich zasobami.

Ja bym spróbował podejść do tego od innej strony - zamiast próbować ograniczyć zasoby na poziomie bazy, spróbuj wprowadzić rate limiting na poziomie api.

0

Kubernetes

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.