Ir para o conteúdo

Upgrade de versão a quente do Mediation Controller

Importante

A documentação do upgrade de versão a quente do Mediation Controller destina-se a qualquer Mediation Controller que funcione com Debian 11. A versão de Debian pode ser verificada com o comando seguinte (a executar por SSH ou em acesso de consola):

1
cat /etc/debian_version

Informação

Recordamos que a mudança para root nas máquinas Debian deve ser efetuada com o comando seguinte:

1
su -

Planeamento e preparação

Abertura dos fluxos

Ao fazer o upgrade do produto, é necessário transferir muitos pacotes dos repositórios Debian, devido à passagem da versão 11 para a versão 12 do Debian. O acesso TCP 80 a security.debian.org e a ftp.fr.debian.org deve estar aberto.

Para testar a abertura dos fluxos na máquina, pode iniciar-se uma sincronização dos repositórios Debian. Se forem apresentadas mensagens de erro relativas ao acesso aos repositórios Debian, o fluxo de rede não está aberto, provavelmente bloqueado pelo firewall da empresa. A sincronização dos repositórios pode ser iniciada com o comando seguinte:

1
apt update

Transferência do mirror e das ferramentas necessárias

O mirror de CyberElements Cleanroom 4.6 pode ser transferido a partir desta ligação (requer a criação de uma conta de cliente): Systancia Marketplace

Além do mirror, serão necessárias ferramentas de terceiros para o processo de upgrade:

  • Um cliente SSH (no Windows, pode utilizar-se a ferramenta PuTTY)
  • Um cliente SCP (no Windows, podem utilizar-se as ferramentas WinSCP ou FileZilla)

Instalação e utilização da ferramenta screen

A ferramenta screen permite abrir vários terminais de shell numa única consola. É indispensável utilizar esta ferramenta para o upgrade para a versão CyberElements Bastion, a fim de eliminar a dependência da estabilidade da ligação de rede. De facto, sem a ferramenta screen, a instalação seria interrompida em caso de corte da ligação SSH com os servidores CyberElements Bastion.

Ao utilizar a ferramenta screen, ao voltar a ligar-se à consola de shell do equipamento CyberElements Bastion, é possível recuperar o terminal no qual o processo de atualização foi executado.

O pacote screen deve ser instalado com a linha de comandos seguinte:

1
apt install --no-install-recommends screen

Para abrir um novo terminal screen, deve executar-se o comando seguinte:

1
screen -S <ID>

Substitua <ID> por um nome que identifique a sessão.

Exemplo

Nos upgrades de versão de CyberElements, o identificador cye-upgrade é facilmente reconhecível. O comando seria, portanto, o seguinte:

1
screen -S cye-upgrade

Para recuperar um terminal aberto com screen, basta executar o comando seguinte:

1
screen -r <ID>

Substitua <ID> pelo nome definido na abertura da sessão.

Exemplo

O terminal anteriormente aberto com o identificador cye-upgrade pode ser recuperado com o comando seguinte:

1
screen -r cye-upgrade

Para fechar o terminal quando o upgrade estiver concluído, introduza no terminal o comando exit ou o atalho de teclado ctrl+d.

Regressa então à consola. A mensagem «screen is terminating» confirma que o terminal foi fechado.

Ampliação do espaço em disco das appliances virtuais

As appliances virtuais Systancia Cleanroom 4.4 ou 4.5 exigem que seja acrescentada uma ampliação de disco de 2 GB à partição /usr. Esta operação é necessária para dispor de espaço em disco suficiente para o upgrade de versão e evitar ficar bloqueado durante a operação.

Ao ligar-se ao Mediation Controller, seja por SSH ou em modo consola, uma mensagem de boas-vindas informa-o de que está ligado a uma máquina Systancia. Uma linha adicional indica a versão da appliance.

Exemplo

Uma appliance virtual Mediation Controller na versão 4.5 dará o resultado seguinte:

 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

Se a máquina não for uma appliance virtual fornecida com a versão 4.4 ou 4.5, este capítulo pode ser ignorado, passando diretamente ao upgrade de versão.

Cópia de segurança fortemente recomendada

As etapas seguintes alteram o particionamento do disco do Mediation Controller. Se tiverem sido feitas alterações manuais, é possível que estas instruções não sejam adequadas e que a máquina fique bloqueada.

Antes de continuar, faça uma cópia de segurança da máquina ou, se necessário, duplique a máquina virtual. Não podem ser utilizados snapshots porque, em particular com o VMware, impedem a ampliação de um disco.

No hipervisor, amplie em 2 GB adicionais o espaço em disco da máquina virtual. Se não for possível ampliar o disco, verifique que não existem snapshots e, caso contrário, desligue a máquina virtual se a ampliação a quente não for suportada.

Uma vez ampliado o espaço em disco ao nível da máquina virtual, são necessários os comandos seguintes, a executar como root, para ampliar a partição /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

Upgrade de versão

Atualização dos pacotes Debian

Uma vez que o upgrade do CyberElements Bastion exige o upgrade do Debian, recomenda-se atualizar corretamente os pacotes do Debian 11 antes de passar para o Debian 12. Para isso, execute os seguintes comandos como root (atualização do sistema e depois remoção dos pacotes desnecessários):

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

Podem aparecer mensagens a pedir-lhe para modificar a configuração de vários ficheiros de configuração. Nesses casos, selecione a opção que mantém a configuração atual.

Preparar os controladores do Microsoft SQL Server

São necessárias operações adicionais se os controladores do Microsoft SQL Server estiverem instalados (é o caso das appliances virtuais fornecidas pela Systancia).
Para verificar se estão presentes no servidor, pode executar-se o comando seguinte como root:

1
apt list --installed ms*

Se não aparecer qualquer resposta, os controladores não estão instalados e pode passar à etapa de preparação do espelho.
Caso contrário, se os controladores estiverem instalados, devem ser listados dois pacotes: msodbcsql17 e mssql-tools. Siga as instruções desta secção.

Exemplos

Um servidor no qual os controladores não estão instalados daria o resultado seguinte com o comando anterior:

1
Listing... Done

Um servidor no qual os controladores estão instalados dará um resultado semelhante a este (as versões dos pacotes podem diferir):

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]

Os comandos seguintes são necessários para instalar uma versão específica dos pacotes e garantir que o upgrade de versão seja bem-sucedido:

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

Configure o repositório da Microsoft adaptado ao Debian 12 para preparar o upgrade de versão:

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

Preparação do mirror CyberElements Cleanroom 4.6

O mirror obtido durante a fase de preparação (ficheiro com a extensão tgz) deve ser enviado para o servidor por SCP. Deve ser colocado no diretório /tmp/.

Em seguida, prepare o mirror executando os comandos seguintes como root (os ficheiros residuais de um upgrade de versão anterior serão eliminados):

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

Configuração do APT

O gestor de pacotes APT está configurado para obter os pacotes do Debian 11; deve ser reconfigurado para obter os pacotes do Debian 12. É igualmente necessário atualizar a referência ao espelho local do CyberElements Bastion. Para isso, execute os seguintes comandos como 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

Além da configuração dos novos repositórios, recomendamos vivamente aplicar a definição seguinte, para indicar ao APT que não instale as dependências recomendadas que não sejam estritamente necessárias, a fim de reduzir o número de componentes instalados. O comando seguinte aplica esta definição como root:

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

Por último, é necessário atualizar a lista de pacotes dos repositórios com o comando seguinte:

1
apt update

Desencadear o upgrade de versão

Aceda ao servidor Mediation Controller por SSH e mude para root, depois abra um screen como indicado acima.

Comece por atualizar alguns pacotes específicos para que o upgrade de versão possa ser realizado. É normal que apareça uma mensagem de erro ao executar o primeiro comando; o segundo comando corrige-o:

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

Ao atualizar um Mediation Controller de Debian 11 para Debian 12, o pacote collectd é atualizado e passa a ser incompatível com o ficheiro de configuração gerado pelo CyberElements Bastion (/etc/collectd/collectd.conf). Isto pode provocar um erro durante a atualização.

Para o evitar, desative o collectd:

1
2
systemctl stop collectd 
systemctl disable collectd

Em seguida, o upgrade de versão pode ser iniciado com o comando seguinte:

1
apt dist-upgrade -y

Durante o upgrade de versão, serão colocadas várias questões sobre se deve conservar os ficheiros de configuração e atualizá-los conforme a configuração standard do Debian 12, ou manter a configuração específica existente. Seguem-se as nossas recomendações para a maioria dos ficheiros que poderá encontrar:

Ficheiro de configuração Ação recomendada
/etc/issue Conservar, responda N
/etc/issue.net Conservar, responda N
/etc/security/limits.conf Conservar, responda N
/etc/login.defs Conservar, responda N
/etc/shibboleth/shibboleth2.xml Conservar, responda N
/etc/shibboleth/shibd.logger Aplicar as alterações, responda Y
/etc/default/ntpsec Aplicar as alterações, responda Y
/etc/snmp/snmpd.conf Aplicar as alterações, responda Y
/etc/logrotate.d/IPdivaServer Aplicar as alterações, responda Y
/etc/ssh/sshd_config Conservar, responda Keep the local version currently installed
/etc/ssh/ssh_config Aplicar as alterações, responda Y
/etc/apache2/ports.conf Conservar, responda N
/etc/init.d/apache2 Conservar, responda N
/etc/modsecurity/modsecurity.conf-recommended Aplicar as alterações, responda Y
/etc/ipdiva/httpd/commonParameters.conf Aplicar as alterações, responda Y
/etc/ipdiva/care/djangosettings.ini Aplicar as alterações, responda Y
/etc/crontab Aplicar as alterações, responda Y
/etc/openssl.cnf Aplicar as alterações, responda Y
/etc/audit/rules.d/audit.rules Conservar, responda N
/etc/pam.d/su Conservar, responda N
/etc/sysctl.conf Conservar, responda N

Aceite a mensagem de configuração do pacote glibc:

Aceite o reinício automático dos serviços:

Uma vez concluído o upgrade de versão, execute os comandos seguintes para reativar o collectd, remover os pacotes desnecessários e reiniciar a máquina:

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

Ações específicas dos Mediation Controller em Cluster

No servidor Mediation Controller SLAVE, execute os comandos seguintes para ressincronizar o segredo partilhado entre o Mediation Controller MASTER e o SLAVE:

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

Upgrade da instância de base de dados PostgreSQL

No servidor Mediation Controller, atualize a instância de base de dados PostgreSQL da versão 13 para a versão 15. Para isso, execute as instruções seguintes com os direitos root adequados.

Verifique o estado das instâncias PostgreSQL antes da migração:

1
pg_lsclusters

Execute os comandos seguintes para atualizar a instância de base de dados para a versão 15 do PostgreSQL:

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

Verifique que a instância de base de dados foi atualizada com êxito. Devem aparecer duas instâncias, uma na versão 13 e outra na versão 15, sendo esta última a única ativa. A verificação é feita com o comando seguinte:

1
pg_lsclusters

Se o upgrade de versão foi bem-sucedido, a instância de base de dados na versão 13 pode ser eliminada:

1
pg_dropcluster 13 main

A eliminação dos pacotes PostgreSQL da versão 13 pode ser iniciada:

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

Migração da base de dados do CyberElements Bastion

A configuração do produto é armazenada na base de dados, que tem de ser migrada para poder conter as configurações das alterações introduzidas pela nova versão. A operação é realizada no Mediation Controller como root.

Arquitetura Cluster

Numa arquitetura Cluster, a operação deve ser realizada a partir de um único Mediation Controller, qualquer que ele seja.

É também necessário executar o comando seguinte:

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

A migração dos dados é desencadeada com um comando equivalente a este:

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

Em que <org_clr> deve ser substituído pelo nome da organização a migrar. Tenha em conta que, se o Mediation Controller tiver várias organizações (multi-tenant), terá de executar o comando tantas vezes quantas as organizações a migrar.

Exemplo

Para uma plataforma CyberElements Bastion que tenha as organizações systancia e systancia-test, terá de executar os comandos seguintes:

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

Após a migração da base de dados, o serviço Apache2 tem de ser reiniciado:

1
systemctl restart apache2

Restaurar as configurações

Algumas configurações foram substituídas durante o processo de upgrade de versão e têm de ser restauradas.

Ficheiro commonParameters.conf:

Desloque as etiquetas <Location> relativas aos HTML5 Gateway, que se encontram normalmente no fim do ficheiro, do ficheiro /etc/ipdiva/httpd/commonParameters.conf.dpkg-old para /etc/ipdiva/httpd/commonParameters.extra.conf (crie o ficheiro se não existir). Se não existir nenhuma etiqueta <Location>, podem ser copiados os exemplos seguintes.

 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>

Ficheiro djangosettings.ini:

Copie a informação da linha 2 «allowed_hosts» do ficheiro /etc/ipdiva/care/djangosettings.ini.dpkg-old para o ficheiro /etc/ipdiva/care/djangosettings.ini. Isto pode ser automatizado com o comando seguinte, executado como root:

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

Aplicar os restauros:

Para aplicar os restauros, é necessário reiniciar o serviço Apache2 como root:

1
systemctl restart apache2

Validação

Uma vez concluído o upgrade de versão, a infraestrutura CyberElements Bastion deve ser validada para garantir que funciona corretamente antes do regresso à produção. Se a validação falhar, considere uma marcha atrás através do restauro das cópias de segurança dos servidores CyberElements Bastion.

Aceda à interface de administração de uma organização e, em seguida, vá ao menu «About» da barra de controlo para verificar que a versão do Mediation Controller foi corretamente atualizada para a 4.6.

Podem iniciar-se os primeiros testes de funcionamento da plataforma, mas recomendamos utilizar a versão 4.6 do Edge Gateway para garantir um desempenho ótimo das aplicações CyberElements Bastion.