Przejdź do treści

Aktualizacja wersji Mediation Controller w trakcie pracy

Ważne

Dokumentacja aktualizacji wersji Mediation Controller w trakcie pracy jest przeznaczona dla każdego Mediation Controller działającego na Debianie 11. Wersję Debiana można sprawdzić następującym poleceniem (do wykonania przez SSH lub dostęp konsolowy):

1
cat /etc/debian_version

Informacja

Przypominamy, że przejście na root na maszynach z Debianem trzeba wykonać następującym poleceniem:

1
su -

Planowanie i przygotowanie

Otwarcie ruchu sieciowego

Przy zmianie wersji produktu wiele pakietów musi zostać pobranych z repozytoriów Debiana z powodu przejścia z wersji Debian 11 na 12. Dostęp przez TCP 80 do security.debian.org i ftp.fr.debian.org musi być otwarty.

Aby przetestować otwarcie ruchu na maszynie, można uruchomić synchronizację repozytoriów Debiana. Jeśli wyświetlą się komunikaty o błędach dotyczące dostępu do repozytoriów Debiana, oznacza to, że ruch sieciowy nie jest otwarty, prawdopodobnie blokowany przez firewall firmowy. Synchronizację repozytoriów można uruchomić następującym poleceniem:

1
apt update

Pobranie mirrora i niezbędnych narzędzi

Mirror CyberElements Cleanroom 4.6 można pobrać z tego odnośnika (wymaga utworzenia konta klienta): Systancia Marketplace

Poza mirrorem do procesu aktualizacji wersji będą potrzebne narzędzia podmiotów trzecich:

  • Klient SSH (w systemie Windows można użyć narzędzia PuTTY)
  • Klient SCP (w systemie Windows można użyć narzędzi WinSCP lub FileZilla)

Instalacja i użycie narzędzia screen

Narzędzie screen umożliwia otwarcie kilku terminali powłoki w jednej konsoli. Użycie tego narzędzia jest niezbędne do aktualizacji do wersji CyberElements Bastion, aby usunąć zależność od stabilności łączności sieciowej. Bez narzędzia screen instalacja zostałaby bowiem przerwana w razie zerwania łączności SSH z serwerami CyberElements Bastion.

Dzięki użyciu narzędzia screen przy ponownym połączeniu z konsolą powłoki urządzeń CyberElements Bastion można odzyskać terminal, w którym wykonywany był proces aktualizacji.

Pakiet screen należy zainstalować za pomocą następującego wiersza poleceń:

1
apt install --no-install-recommends screen

Aby otworzyć nowy terminal screen, należy wykonać następujące polecenie:

1
screen -S <ID>

Zastąp <ID> nazwą identyfikującą sesję.

Przykład

Przy zmianach wersji CyberElements identyfikator cye-upgrade jest łatwo rozpoznawalny. Polecenie wyglądałoby więc następująco:

1
screen -S cye-upgrade

Aby odzyskać terminal otwarty przez screen, wystarczy wykonać następujące polecenie:

1
screen -r <ID>

Zastąp <ID> nazwą zdefiniowaną przy otwieraniu sesji.

Przykład

Terminal otwarty wcześniej z identyfikatorem cye-upgrade można odzyskać następującym poleceniem:

1
screen -r cye-upgrade

Aby zamknąć terminal po zakończeniu aktualizacji wersji, wpisz w terminalu polecenie exit lub skrót klawiaturowy ctrl+d.

Wrócisz w ten sposób do konsoli. Komunikat „screen is terminating” potwierdza, że terminal został zamknięty.

Zwiększenie miejsca na dysku dla wirtualnych appliance

W wirtualnych appliance Systancia Cleanroom 4.4 lub 4.5 do partycji /usr trzeba dodać 2 GB miejsca na dysku. Ta operacja jest konieczna, aby mieć wystarczająco miejsca na dysku na aktualizację wersji i uniknąć zablokowania w trakcie operacji.

Przy łączeniu się z Mediation Controller, czy to przez SSH, czy w trybie konsolowym, komunikat powitalny informuje, że jesteś połączony z maszyną Systancia. Dodatkowy wiersz wskazuje wersję appliance.

Przykład

Wirtualna appliance Mediation Controller w wersji 4.5 da następujący wynik:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
            ____            _                   _
        / ___| _   _ ___| |_ __ _ _ __   ___(_) __ _
        \___ \| | | / __| __/ _  | '_ \ / __| |/ _  |
            ___) | |_| \__ \ || (_| | | | | (__| | (_| |
        |____/ \__, |___/\__\__,_|_| |_|\___|_|\__,_|
                |___/
#################################################################
# WARNING:                                                      #
# You must have specific authorization to access this machine.  #
# Unauthorized access to this machine is prohibited and will be #
# considered as intrusion.                                      #
# Unauthorized users will be logged, monitored, and could be    #
# prosecuted.                                                   #
#################################################################
Systancia Cleanroom 4.5.0 B77

Jeśli maszyna nie jest wirtualną appliance dostarczoną w wersji 4.4 lub 4.5, ten rozdział można pominąć i przejść do aktualizacji wersji.

Kopia zapasowa zdecydowanie zalecana

Poniższe kroki zmieniają partycjonowanie dysku Mediation Controller. Jeśli wprowadzono zmiany ręczne, poniższe instrukcje mogą nie być odpowiednie, co spowoduje zablokowanie maszyny.

Przed dalszymi działaniami wykonaj kopię zapasową maszyny lub w razie potrzeby zduplikuj maszynę wirtualną. Snapshotów nie można użyć, ponieważ — szczególnie w VMware — blokują one możliwość zwiększenia dysku.

Na poziomie hipernadzorcy zwiększ miejsce na dysku maszyny wirtualnej o dodatkowe 2 GB. Jeśli zwiększenie dysku nie jest możliwe, sprawdź, czy nie ma snapshotów, a jeśli ich nie ma, wyłącz maszynę wirtualną, o ile zwiększanie w trakcie pracy nie jest obsługiwane.

Po zwiększeniu miejsca na dysku na poziomie maszyny wirtualnej konieczne są następujące polecenia, do wykonania jako root, aby zwiększyć partycję /usr:

1
2
3
4
5
6
echo 1 > /sys/class/block/sda/device/rescan
start_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}'`
echo -e "d\n2\nn\ne\n2\n\n\nn\n$start_lvm_partition\n\nt\n5\n8E\nw" | fdisk /dev/sda
pvresize /dev/sda5
lvresize -l +100%FREE /dev/mapper/SystanciaLVMGroup-usr
resize2fs /dev/mapper/SystanciaLVMGroup-usr

Aktualizacja wersji

Aktualizacja pakietów Debiana

Ponieważ aktualizacja CyberElements Bastion wymaga aktualizacji systemu Debian, zaleca się prawidłowe zaktualizowanie pakietów Debian 11, zanim nastąpi przejście na Debian 12. Aby to zrobić, wykonaj poniższe polecenia jako root (aktualizacja systemu, a następnie usunięcie niepotrzebnych pakietów):

1
2
3
apt update
apt upgrade -y
apt autoremove -y

Mogą pojawić się komunikaty proszące o zmianę konfiguracji kilku plików konfiguracyjnych. W takich przypadkach wybierz opcję zachowania obecnej konfiguracji.

Przygotowanie sterowników Microsoft SQL Server

Dodatkowe kroki są wymagane, jeśli zainstalowane są sterowniki Microsoft SQL Server (tak jest w przypadku wirtualnych appliance dostarczanych przez Systancia).
Aby sprawdzić, czy są obecne na serwerze, można wykonać jako root następujące polecenie:

1
apt list --installed ms*

Jeśli nie pojawi się żadna odpowiedź, sterowniki nie są zainstalowane i możesz przejść do kroku przygotowania mirroru.
W przeciwnym razie, jeśli sterowniki są zainstalowane, powinny zostać wypisane dwa pakiety: msodbcsql17 i mssql-tools. Postępuj według instrukcji tej sekcji.

Przykłady

Serwer, na którym sterowniki nie są zainstalowane, dałby dla poprzedniego polecenia następujący wynik:

1
Listing... Done

Serwer, na którym sterowniki są zainstalowane, da wynik podobny do tego (wersje pakietów mogą się różnić):

1
2
3
Listing... Done
msodbcsql17/bullseye,now 17.10.6.1-1 amd64 [installed]
mssql-tools/bullseye,now 17.10.1.1-1 amd64 [installed]

Następujące polecenia są konieczne, aby zainstalować konkretną wersję pakietów i zapewnić powodzenie aktualizacji wersji:

1
env ACCEPT_EULA=Y apt install -y --allow-downgrades odbcinst=2.3.6-0.1+b1 odbcinst1debian2=2.3.6-0.1+b1 libodbc1=2.3.6-0.1+b1 unixodbc=2.3.6-0.1+b1 mssql-tools=17.9.1.1-1 msodbcsql17=17.9.1.1-1

Skonfiguruj repozytorium Microsoft odpowiednie dla Debiana 12, aby przygotować aktualizację wersji:

1
echo "deb [arch=amd64] https://packages.microsoft.com/debian/12/prod bookworm main" > /etc/apt/sources.list.d/mssql-release.list

Przygotowanie mirrora CyberElements Cleanroom 4.6

Mirror pobrany w fazie przygotowania (plik z rozszerzeniem tgz) musi zostać przesłany na serwer przez SCP. Należy go umieścić w katalogu /tmp/.

Następnie przygotuj mirror, wykonując następujące polecenia jako root (pozostałe pliki po poprzedniej aktualizacji wersji zostaną usunięte):

1
2
3
mkdir -p /opt/systancia/repository
rm -rf /opt/systancia/repository/*
tar xvzf /tmp/*.tgz -C /opt/systancia/repository/

Konfiguracja APT

Menedżer pakietów APT jest skonfigurowany tak, aby pobierać pakiety Debian 11; trzeba go skonfigurować ponownie, aby pobierał pakiety Debian 12. Konieczna jest też aktualizacja odniesienia do lokalnego mirrora CyberElements Bastion. Aby to zrobić, wykonaj poniższe polecenia jako root:

1
2
echo -e 'deb http://security.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware\ndeb http://ftp.fr.debian.org/debian bookworm main contrib non-free non-free-firmware\ndeb http://ftp.fr.debian.org/debian bookworm-updates main contrib non-free non-free-firmware' > /etc/apt/sources.list
echo "deb file:///opt/systancia/repository/ bookworm ipdiva" > /etc/apt/sources.list.d/systancia.list

Poza skonfigurowaniem nowych repozytoriów zdecydowanie zalecamy zastosowanie poniższego ustawienia, aby polecić APT, by nie instalował zalecanych zależności, które nie są bezwzględnie konieczne, i tym samym zmniejszyć liczbę instalowanych komponentów. Poniższe polecenie stosuje to ustawienie jakoroot:

1
echo -e 'APT::Install-Recommends false;\nAPT::Install-Suggests false;' > /etc/apt/apt.conf.d/99norecommends

Na koniec konieczne jest zaktualizowanie listy pakietów w repozytoriach następującym poleceniem:

1
apt update

Uruchomienie aktualizacji wersji

Połącz się z serwerem Mediation Controller przez SSH, przejdź na root, a następnie otwórz sesję screen jak wskazano powyżej.

Zacznij od zaktualizowania pewnych określonych pakietów, aby aktualizacja wersji mogła zostać przeprowadzona. Przy wykonaniu pierwszego polecenia należy się spodziewać komunikatu o błędzie, ale drugie polecenie ten błąd naprawi:

1
2
apt install -y python3-cleanroom-django-mssql python3-ipdiva-ua-parser python3-ipdiva-user-agents python3-ipdiva-django2
apt install -y --fix-broken

Przy aktualizacji wersji Mediation Controller z Debiana 11 do Debiana 12 pakiet collectd zostaje zaktualizowany i przestaje być zgodny z plikiem konfiguracyjnym generowanym przez CyberElements Bastion (/etc/collectd/collectd.conf). Może to spowodować błąd w trakcie aktualizacji.

Aby tego uniknąć, wyłącz collectd:

1
2
systemctl stop collectd 
systemctl disable collectd

Następnie aktualizację można uruchomić następującym poleceniem:

1
apt dist-upgrade -y

W trakcie aktualizacji zostanie Ci zadanych kilka pytań, czy zachować pliki konfiguracyjne i zaktualizować je zgodnie ze standardową konfiguracją Debiana 12, czy zachować obecną konfigurację specyficzną. Oto nasze zalecenia dla większości plików, na jakie możesz natrafić:

Plik konfiguracyjny Zalecane działanie
/etc/issue Zachowaj, odpowiedz N
/etc/issue.net Zachowaj, odpowiedz N
/etc/security/limits.conf Zachowaj, odpowiedz N
/etc/login.defs Zachowaj, odpowiedz N
/etc/shibboleth/shibboleth2.xml Zachowaj, odpowiedz N
/etc/shibboleth/shibd.logger Zastosuj zmiany, odpowiedz Y
/etc/default/ntpsec Zastosuj zmiany, odpowiedz Y
/etc/snmp/snmpd.conf Zastosuj zmiany, odpowiedz Y
/etc/logrotate.d/IPdivaServer Zastosuj zmiany, odpowiedz Y
/etc/ssh/sshd_config Zachowaj, odpowiedz Keep the local version currently installed
/etc/ssh/ssh_config Zastosuj zmiany, odpowiedz Y
/etc/apache2/ports.conf Zachowaj, odpowiedz N
/etc/init.d/apache2 Zachowaj, odpowiedz N
/etc/modsecurity/modsecurity.conf-recommended Zastosuj zmiany, odpowiedz Y
/etc/ipdiva/httpd/commonParameters.conf Zastosuj zmiany, odpowiedz Y
/etc/ipdiva/care/djangosettings.ini Zastosuj zmiany, odpowiedz Y
/etc/crontab Zastosuj zmiany, odpowiedz Y
/etc/openssl.cnf Zastosuj zmiany, odpowiedz Y
/etc/audit/rules.d/audit.rules Zachowaj, odpowiedz N
/etc/pam.d/su Zachowaj, odpowiedz N
/etc/sysctl.conf Zachowaj, odpowiedz N

Zaakceptuj komunikat konfiguracyjny pakietu glibc:

Zaakceptuj automatyczne ponowne uruchomienie usług:

Po zakończeniu aktualizacji wykonaj następujące polecenia, aby ponownie włączyć collectd, usunąć niepotrzebne pakiety i ponownie uruchomić maszynę:

1
2
3
4
systemctl start collectd
systemctl enable collectd
apt autoremove -y
reboot

Działania właściwe dla serwerów Mediation Controller w architekturze Cluster

Na serwerze Mediation Controller SLAVE wykonaj następujące polecenia, aby ponownie zsynchronizować sekret współdzielony między Mediation Controller MASTER i SLAVE:

1
2
hostManagerCtl masterSynchro /etc/ipdiva/secure/secret /etc/ipdiva/secure/secret
systemctl restart apache2

Aktualizacja wersji instancji bazy danych PostgreSQL

Na serwerze Mediation Controller zaktualizuj instancję bazy danych PostgreSQL z wersji 13 do wersji 15. W tym celu wykonaj poniższe instrukcje z odpowiednimi uprawnieniami root.

Przed migracją sprawdź stan instancji PostgreSQL:

1
pg_lsclusters

Wykonaj następujące polecenia, aby zaktualizować instancję bazy danych do PostgreSQL w wersji 15:

1
2
3
4
pg_dropcluster --stop 15 main
systemctl stop postgresql
pg_upgradecluster 13 main
systemctl start postgresql

Sprawdź, czy instancja bazy danych została poprawnie zaktualizowana. Powinny pojawić się dwie instancje: jedna w wersji 13 i druga w wersji 15, przy czym ta druga jest jedyną aktywną. Sprawdzenie wykonuje się następującym poleceniem:

1
pg_lsclusters

Jeśli aktualizacja wersji się udała, instancję bazy danych w wersji 13 można usunąć:

1
pg_dropcluster 13 main

Można rozpocząć usuwanie pakietów PostgreSQL w wersji 13:

1
apt -y --purge autoremove postgresql-client-13 postgresql-13

Migracja bazy danych CyberElements Bastion

Konfiguracja produktu jest przechowywana w bazie danych, którą trzeba zmigrować, aby mogła zawierać konfiguracje zmian wprowadzonych przez nową wersję. Operację wykonuje się na Mediation Controller jako root.

Architektura Cluster

W przypadku architektury Cluster operację trzeba wykonać tylko z jednego Mediation Controller, niezależnie od tego, który to będzie.

Trzeba również wykonać następujące polecenie:

1
python3 /var/lib/ipdiva/care/manage.py migrate

Migrację danych uruchamia się poleceniem odpowiadającym temu:

1
python3 /var/lib/ipdiva/care/manage.py migrate --database=<org_clr>

Gdzie <org_clr> trzeba zamienić na nazwę migrowanej organizacji. Zwróć uwagę, że jeśli Mediation Controller ma wiele organizacji (multi-tenant), będziesz musiał wykonać polecenie tyle razy, ile jest organizacji do migracji.

Przykład

Dla platformy CyberElements Bastion, która ma organizacje systancia i systancia-test, będziesz musiał wykonać następujące polecenia:

1
2
python3 /var/lib/ipdiva/care/manage.py migrate --database=systancia
python3 /var/lib/ipdiva/care/manage.py migrate --database=systancia-test

Po migracji bazy danych trzeba ponownie uruchomić usługę Apache2:

1
systemctl restart apache2

Przywracanie konfiguracji

Niektóre konfiguracje zostały nadpisane w trakcie aktualizacji wersji i trzeba je przywrócić.

Plik commonParameters.conf:

Przenieś znaczniki <Location> dotyczące serwerów HTML5 Gateway, znajdujące się zwykle na końcu pliku, z pliku /etc/ipdiva/httpd/commonParameters.conf.dpkg-old do /etc/ipdiva/httpd/commonParameters.extra.conf (utwórz ten plik, jeśli nie istnieje). Jeśli nie ma żadnego znacznika <Location>, można skopiować poniższe przykłady.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<Location /HTML5/>
    Order allow,deny
    Allow from all
    ProxyPass http://127.0.0.1:1234/systanciaHTML5-6.0/ flushpackets=on
    ProxyPassReverse http://127.0.0.1:1234
</Location>

<Location /HTML5/websocket-tunnel>
    Order allow,deny
    Allow from all
    ProxyPass ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
    ProxyPassReverse ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
</Location>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<Location /HTML5-1/>
    Order allow,deny
    Allow from all
    ProxyPass http://127.0.0.1:1234/systanciaHTML5-6.0/ flushpackets=on
    ProxyPassReverse http://127.0.0.1:1234
</Location>

<Location /HTML5-1/websocket-tunnel>
    Order allow,deny
    Allow from all
    ProxyPass ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
    ProxyPassReverse ws://127.0.0.1:1234/systanciaHTML5-6.0/websocket-tunnel
</Location>

<Location /HTML5-2/>
    Order allow,deny
    Allow from all
    ProxyPass http://127.0.0.1:1235/systanciaHTML5-6.0/ flushpackets=on
    ProxyPassReverse http://127.0.0.1:1235
</Location>

<Location /HTML5-2/websocket-tunnel>
    Order allow,deny
    Allow from all
    ProxyPass ws://127.0.0.1:1235/systanciaHTML5-6.0/websocket-tunnel
    ProxyPassReverse ws://127.0.0.1:1235/systanciaHTML5-6.0/websocket-tunnel
</Location>

Plik djangosettings.ini:

Skopiuj informację z wiersza 2 „allowed_hosts” pliku /etc/ipdiva/care/djangosettings.ini.dpkg-old do pliku /etc/ipdiva/care/djangosettings.ini. Można to zautomatyzować następującym poleceniem jako root:

1
sed -i "2c\\`sed -n '2p' /etc/ipdiva/care/djangosettings.ini.dpkg-old`" /etc/ipdiva/care/djangosettings.ini

Zastosowanie przywróceń:

Aby zastosować przywrócenia, konieczne jest ponowne uruchomienie usługi Apache2 jako root:

1
systemctl restart apache2

Walidacja

Po zakończeniu aktualizacji wersji trzeba zwalidować infrastrukturę CyberElements Bastion, aby upewnić się, że działa poprawnie, przed powrotem do produkcji. Jeśli walidacja się nie uda, rozważ wycofanie zmian przez przywrócenie kopii zapasowych serwerów CyberElements Bastion.

Przejdź do interfejsu administratora organizacji, a następnie do menu „About” na pasku sterowania, aby sprawdzić, czy wersja Mediation Controller została poprawnie zaktualizowana do 4.6.

Można rozpocząć pierwsze testy działania platformy, zalecamy jednak używanie wersji 4.6 Edge Gateway, aby zapewnić optymalną wydajność aplikacji CyberElements Bastion.