Zarządzanie historią konfiguracji w serwerach aplikacji z rodziny EuroAP

Zarządzanie historią konfiguracji

Dzisiejszy artykuł poświęcony jest zarządzaniu historią konfiguracji w serwerach aplikacji z rodziny EuroAP. Omówimy automatyczny mechanizm tworzenia kopii zapasowych oraz tworzenie przez administratorów migawek.

Gdy w poprzednich artykułach omawialiśmy pliki konfiguracyjne, to zaznaczyliśmy, że istnieją foldery EUROAP_HOME/standalone/configuration/standalone_xml_history, EUROAP_HOME/domain/configuration/domain_xml_history oraz EUROAP_HOME/domain/configuration/host_xml_history. W dalszej części odwołamy się tylko do standalone, ale opisane mechanizmy są takie same dla plików host.xml i domain.xml.

Folder EUROAP_HOME/standalone/configuration/standalone_xml_history tworzy się po pierwszym uruchomieniu serwera aplikacji. Zawiera tworzoną automatycznie przez EuroAP historię konfiguracji oraz tworzone przez administratora migawki.

W katalogu EUROAP_HOME/standalone/configuration/standalone_xml_history mamy 3 pliki xml oraz 2 foldery. Pliki przechowują konfigurację standalone:

  • standalone.initial.xml – oryginalna konfiguracja. Nigdy nie jest nadpisywana
  • standalone.boot.xml – konfiguracja podczas ostatniego udanego uruchomienia systemu. Jest nadpisywana za każdym udanym uruchomieniem
  • standalone.last.xml – ostatnia z powodzeniem zapisana konfiguracja. Nadpisywana za każdym razem, gdy serwerowi aplikacji uda się zapisać konfigurację. Jeśli wyrzuci błąd, to tutaj możemy podejrzeć, co udało się zapisać oraz jaki był stan konfiguracji przed wyrzuceniem błędu.

Automatyczne tworzenie kopii zapasowych

Folder current na początku jest pusty. Później zapełnia się kolejnymi wersjami konfiguracji. Prześledźmy na żywym organizmie, co się tam dzieje. Zaczynamy od czystej, świeżo zainstalowanej instancji, którą uruchomiliśmy, używając standardowej konfiguracji:

$ EUROAP_HOME/bin/standalone.sh

Folder EUROAP_HOME/standalone/configuration/standalone_xml_history prezentuje się następująco:

$ ll -R standalone_xml_history/
standalone_xml_history/:
drwxr-xr-x. 10:25 current/
drwxr-xr-x. 10:25 snapshot/
-rw-------. 01:14 standalone.boot.xml
-rw-------. 01:14 standalone.initial.xml
-rw-------. 01:14 standalone.last.xml

standalone_xml_history/current:

Teraz zrobimy dwie zmiany w konfiguracji, śledząc jednocześnie zawartość folderu standalone_xml_history:

[standalone@localhost:9990 /] /system-property=zmienna:add(value="TestXmlHistory")
{"outcome" => "success"}
[standalone@localhost:9990 /] /system-property=zmienna2:add(value="TestXmlHistory2")
{"outcome" => "success"}
$  ll -R standalone_xml_history/                               
standalone_xml_history/:
drwxr-xr-x. 11:09 current/
drwxr-xr-x. 10:25 snapshot/
-rw-------. 01:14 standalone.boot.xml
-rw-------. 01:14 standalone.initial.xml
-rw-r--r--. 11:09 standalone.last.xml

standalone_xml_history/current:
-rw-------. 01:14 standalone.v1.xml
$  ll -R standalone_xml_history/                               
standalone_xml_history/:
drwxr-xr-x. 11:16 current/
drwxr-xr-x. 10:25 snapshot/
-rw-------. 01:14 standalone.boot.xml
-rw-------. 01:14 standalone.initial.xml
-rw-r--r--. 11:16 standalone.last.xml

standalone_xml_history/current:
-rw-------. 01:14 standalone.v1.xml
-rw-r--r--. 11:09 standalone.v2.xml

Gdy przyjrzymy się godzinom tworzenia plików, widać, że:

  1. Plik standalone.last.xml jest backupowny jako current/standalone.v1.xml. Następne będą backupowane jako N+1.
  2. Nowa konfiguracja jest aplikowana i zapisywana do standalone.last.xml.

Domyślnie zapamiętywane jest 100 zmian konfiguracji. Możemy to zmienić za pomocą właściwości systemowej jboss.config.current-history-length. Podobnie możemy sterować tym, jak długo historia będzie dostępna (domyślnie 30 dni) za pomocą boss.config.history-days.

Migawki

W katalogu EUROAP_HOME/standalone/configuration/standalone_xml_history/snapshot trzymane są zrobione przez administratora migawki. Migawka w tym kontekście to po prostu nazwana kopia konfiguracji serwera aplikacji.

Migawkę tworzymy z poziomu CLI za pomocą polecenia :take-snapshot:

[standalone@localhost:9990 /] :take-snapshot(comment=PrzedZmianami)
{
    "outcome" => "success",
    "result" => "EUROAP_HOME/standalone/configuration/standalone_xml_history/s
napshot/20200922-142436725PrzedZmianami-standalone.xml"
}

Gdy nie podamy nazwy, migawka będzie identyfikowana znacznikiem czasowym:

[standalone@localhost:9990 /] :take-snapshot
{
    "outcome" => "success",
    "result" => "EUROAP_HOME/standalone/c
onfiguration/standalone_xml_history/snapshot/2
0200922-114718081standalone.xml"
}

Za pomocą polecenia :list-snapshots możemy sprawdzić, jakie migawki już stworzyliśmy:

[standalone@localhost:9990 /] :list-snapshots
{
    "outcome" => "success",
    "result" => {
        "directory" => "/home/ala/demo73/EuroAP-7.3/standalone/configuration/standalone_xml_hi
story/snapshot",
        "names" => [
            "20200922-142436725PrzedZmianami-standalone.xml",
            "20200922-142219628standalone.xml"
        ]
    }
}

Jeżeli któraś nam się nie podoba, to możemy ją usunąć za pomocą polecenia :delete-snapshot.

Tworzenie i zarządzanie migawkami wygląda tak samo zarówno dla trybu standalone, jak i domain. W trybie zarządzanej domeny należy jednak pamiętać, że polecenia domyślnie wykonywane są na domenie. Aby wykonać polecenie na hoście, trzeba na niego wskazać. Zatem polecenia tworzące migawki dla domeny i hosta master wyglądają następująco:

[domain@localhost:9990 /] :take-snapshot
{
    "outcome" => "success",
    "result" => "EUROAP_HOME/domain/configuration/domain_xml_history/snapshot/
20200922-143138304domain.xml"
}


[domain@localhost:9990 /] /host=master/:take-snapshot
{
    "outcome" => "success",
    "result" => "EUROAP_HOME/domain/configuration/host_xml_history/snapshot/20
200922-143146557host.xml",
    "server-groups" => undefined
}

Ładowanie migawek

Aby uruchomić serwer aplikacji w trybie standalone z zapisaną migawką konfiguracji, należy użyć przełącznika --server-config:

EUROAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/PoWaznychZmianachstandalone.xml

W trybie domain należy użyć odpowiednio przełączników --host-config oraz --domain-config:

EUROAP_HOME/bin/domain.sh --domain-config=domain_xml_history/snapshot/20200922-121854157domain.xml --host-config=host_xml_history/snapshot/20200922-122332978host.xml

Podsumowanie

EuroAP i pokrewne serwery aplikacji (np. JBoss®) mają wbudowany mechanizm do tworzenia kopii zapasowej konfiguracji. Wyniki jego działania możemy obserwować w katalogach EUROAP_HOME/standalone/configuration/standalone_xml_history, EUROAP_HOME/domain/configuration/domain_xml_history oraz EUROAP_HOME/domain/configuration/host_xml_history.