Saltar a contenido

Actualización en caliente del Mediation Controller

Importante

La documentación de actualización en caliente del Mediation Controller está destinada a cualquier Mediation Controller que funcione con Debian 11. La versión de Debian puede comprobarse con el siguiente comando (que debe ejecutarse por SSH o mediante acceso a la consola):

1
cat /etc/debian_version

Información

Recordatorio: el cambio a root en las máquinas Debian debe realizarse con el siguiente comando:

1
su -

Planificación y preparación

Apertura de flujos

Al montar el producto de versión, deben descargarse numerosos paquetes de los repositorios de Debian, debido al paso de la versión 11 a la 12 de Debian. Debe abrirse el acceso TCP 80 a security.debian.org y a ftp.fr.debian.org.

Para probar la apertura de los flujos en la máquina, puede lanzarse una sincronización de los repositorios de Debian. Si se muestran mensajes de error relativos al acceso a los repositorios de Debian, el flujo de red no está abierto y probablemente esté bloqueado por el cortafuegos corporativo. La sincronización de los repositorios puede iniciarse con el comando siguiente:

1
apt update

Descarga del espejo y de las herramientas necesarias

El espejo de CyberElements Cleanroom 4.6 puede descargarse desde este enlace (requiere la creación de una cuenta de cliente): Systancia Marketplace

Además del espejo, se necesitarán herramientas de terceros para el proceso de montada de versión:

  • Un cliente SSH (en Windows puede utilizarse la herramienta PuTTY)
  • Un cliente SCP (en Windows pueden utilizarse las herramientas WinSCP o FileZilla)

Instalación y uso de la herramienta screen

La herramienta screen permite abrir varios terminales de shell en una sola consola. Es imprescindible utilizarla para montar la versión CyberElements Bastion, con el fin de eliminar la dependencia de la estabilidad de la conectividad de red. De hecho, sin la herramienta screen, la instalación se detendría en caso de corte de la conectividad SSH con los servidores CyberElements Bastion.

Al utilizar la herramienta screen, cuando vuelva a conectarse a la consola de shell del equipo CyberElements Bastion podrá recuperar el terminal en el que se ejecutaba el proceso de actualización.

El paquete screen debe instalarse con la línea de comandos siguiente:

1
apt install --no-install-recommends screen

Para abrir un nuevo terminal screen, debe ejecutarse el comando siguiente:

1
screen -S <ID>

Sustituya <ID> por un nombre que identifique la sesión.

Ejemplo

Para las montadas de versión de CyberElements, el identificador cye-upgrade es fácilmente identificable. El comando sería por tanto el siguiente:

1
screen -S cye-upgrade

Para recuperar un terminal abierto con screen, basta con ejecutar el comando siguiente:

1
screen -r <ID>

Sustituya <ID> por el nombre definido al abrir la sesión.

Ejemplo

El terminal abierto anteriormente con el identificador cye-upgrade puede recuperarse con el comando siguiente:

1
screen -r cye-upgrade

Para cerrar el terminal una vez finalizada la montada de versión, introduzca el comando exit o el atajo de teclado ctrl+d en el terminal.

Volverá así a la consola. El mensaje « screen is terminating » confirma que el terminal se ha cerrado.

Ampliación del espacio en disco de las appliances virtuales

Las appliances virtuales Systancia Cleanroom 4.4 o 4.5 requieren añadir una ampliación de disco de 2 GB a la partición /usr. Esta operación es necesaria para disponer de espacio en disco suficiente para la actualización y evitar quedarse bloqueado durante la operación.

Al conectarse al Mediation Controller, ya sea por SSH o en modo consola, un mensaje de bienvenida le informa de que está conectado a una máquina Systancia. Una línea adicional indica la versión de la appliance.

Ejemplo

Una appliance virtual Mediation Controller en versión 4.5 dará el siguiente resultado:

 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

Si la máquina no es una appliance virtual suministrada con la versión 4.4 o 4.5, puede omitirse este capítulo y pasar directamente a la actualización.

Se recomienda encarecidamente realizar una copia de seguridad

Los pasos siguientes modifican el particionado del disco del Mediation Controller. Si se han realizado cambios manuales, es posible que estas instrucciones no sean adecuadas y que la máquina quede bloqueada.

Antes de continuar, realice una copia de seguridad de la máquina o, si es necesario, duplique la máquina virtual. No pueden utilizarse instantáneas porque, especialmente con VMware, impiden ampliar un disco.

En el hipervisor, amplíe en 2 GB adicionales el espacio en disco de la máquina virtual. Si no es posible ampliar el disco, compruebe que no haya instantáneas y, en caso contrario, apague la máquina virtual si la ampliación en caliente no está soportada.

Una vez ampliado el espacio en disco a nivel de la máquina virtual, son necesarios los siguientes comandos, que deben ejecutarse como root, para ampliar la partición /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

Actualización

Actualización de los paquetes de Debian

Como la montada de versión de CyberElements Bastion exige montar la versión de Debian, se recomienda actualizar correctamente los paquetes de Debian 11 antes de pasar a Debian 12. Para ello, ejecute los comandos siguientes como root (actualización del sistema y después retirada de los paquetes innecesarios):

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

Pueden aparecer mensajes que pidan modificar la configuración de varios ficheros de configuración. En esos casos, seleccione la opción que conserva la configuración actual.

Preparación de los controladores de Microsoft SQL Server

Son necesarias operaciones adicionales si los controladores de Microsoft SQL Server están instalados (es el caso de las appliances virtuales suministradas por Systancia).
Para comprobar si están presentes en el servidor, puede ejecutarse el siguiente comando como root:

1
apt list --installed ms*

Si no aparece ninguna respuesta, los controladores no están instalados y puede pasar a la etapa de preparación del espejo.
En caso contrario, si los controladores están instalados, deberían aparecer dos paquetes: msodbcsql17 y mssql-tools. Siga las instrucciones de esta sección.

Ejemplos

Un servidor en el que los controladores no están instalados daría el siguiente resultado con el comando anterior:

1
Listing... Done

Un servidor en el que los controladores están instalados dará un resultado similar a este (las versiones de los paquetes pueden 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]

Los siguientes comandos son necesarios para instalar una versión concreta de los paquetes y garantizar que la actualización se realice correctamente:

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 el repositorio de Microsoft adaptado a Debian 12 para preparar la actualización:

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

Preparación del espejo CyberElements Cleanroom 4.6

El espejo recuperado durante la fase de preparación (fichero con la extensión tgz) debe enviarse al servidor mediante SCP. Debe colocarse en el directorio /tmp/.

A continuación, prepare el espejo ejecutando los comandos siguientes como root (se eliminarán los ficheros residuales de una montada de versión anterior):

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

Configuración de APT

El gestor de paquetes APT está configurado para recuperar los paquetes de Debian 11; debe reconfigurarse para recuperar los de Debian 12. También es necesario actualizar la referencia al espejo local de CyberElements Bastion. Para ello, ejecute los comandos siguientes como root:

1
2
3
4
echo -e 'deb http://security.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb http://ftp.fr.debian.org/debian bookworm main contrib non-free non-free-firmware
deb 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

Además de configurar los nuevos repositorios, recomendamos encarecidamente aplicar el ajuste siguiente para indicar a APT que no instale las dependencias recomendadas que no son estrictamente necesarias, con el fin de reducir el número de componentes instalados. El comando siguiente aplica ese ajuste comoroot:

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

Por último, es necesario actualizar la lista de paquetes de los repositorios con el comando siguiente:

1
apt update

Lanzamiento de la actualización

Acceda por SSH al servidor Mediation Controller y cambie a root, después abra un screen como se ha indicado anteriormente.

Empiece por actualizar algunos paquetes específicos para que la actualización pueda llevarse a cabo. Es normal que aparezca un mensaje de error al ejecutar el primer comando; el segundo comando lo corrige:

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

Al actualizar un Mediation Controller de Debian 11 a Debian 12, el paquete collectd se actualiza y pasa a ser incompatible con el fichero de configuración generado por CyberElements Bastion (/etc/collectd/collectd.conf). Esto puede provocar un error durante la actualización.

Para evitarlo, desactive collectd:

1
2
systemctl stop collectd 
systemctl disable collectd

A continuación, puede iniciarse la actualización con el siguiente comando:

1
apt dist-upgrade -y

Durante la actualización se le formularán varias preguntas sobre si conservar los ficheros de configuración y actualizarlos conforme a la configuración estándar de Debian 12, o mantener la configuración específica existente. Estas son nuestras recomendaciones para la mayoría de los ficheros que puede encontrar:

Fichero de configuración Acción recomendada
/etc/issue Conservar, responder N
/etc/issue.net Conservar, responder N
/etc/security/limits.conf Conservar, responder N
/etc/login.defs Conservar, responder N
/etc/shibboleth/shibboleth2.xml Conservar, responder N
/etc/shibboleth/shibd.logger Aplicar los cambios, responder Y
/etc/default/ntpsec Aplicar los cambios, responder Y
/etc/snmp/snmpd.conf Aplicar los cambios, responder Y
/etc/logrotate.d/IPdivaServer Aplicar los cambios, responder Y
/etc/ssh/sshd_config Conservar, responder Keep the local version currently installed
/etc/ssh/ssh_config Aplicar los cambios, responder Y
/etc/apache2/ports.conf Conservar, responder N
/etc/init.d/apache2 Conservar, responder N
/etc/modsecurity/modsecurity.conf-recommended Aplicar los cambios, responder Y
/etc/ipdiva/httpd/commonParameters.conf Aplicar los cambios, responder Y
/etc/ipdiva/care/djangosettings.ini Aplicar los cambios, responder Y
/etc/crontab Aplicar los cambios, responder Y
/etc/openssl.cnf Aplicar los cambios, responder Y
/etc/audit/rules.d/audit.rules Conservar, responder N
/etc/pam.d/su Conservar, responder N
/etc/sysctl.conf Conservar, responder N

Acepte el mensaje de configuración del paquete glibc:

Acepte el reinicio automático de los servicios:

Una vez finalizada la actualización, ejecute los siguientes comandos para reactivar collectd, eliminar los paquetes innecesarios y reiniciar la máquina:

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

Acciones específicas de los Mediation Controllers en Cluster

En el servidor Mediation Controller SLAVE, ejecute los siguientes comandos para resincronizar el secreto compartido entre el Mediation Controller MASTER y el SLAVE:

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

Actualización de la instancia de base de datos PostgreSQL

En el servidor Mediation Controller, actualice la instancia de base de datos PostgreSQL de la versión 13 a la versión 15. Para ello, ejecute las siguientes instrucciones con los permisos root adecuados.

Compruebe el estado de las instancias de PostgreSQL antes de la migración:

1
pg_lsclusters

Ejecute los siguientes comandos para actualizar la instancia de base de datos a la versión 15 de PostgreSQL:

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

Compruebe que la instancia de base de datos se ha actualizado correctamente. Deben aparecer dos instancias, una en versión 13 y otra en versión 15, siendo esta última la única activa. La comprobación se realiza con el siguiente comando:

1
pg_lsclusters

Si la actualización se ha realizado correctamente, puede eliminarse la instancia de base de datos en versión 13:

1
pg_dropcluster 13 main

Puede iniciarse la eliminación de los paquetes PostgreSQL de la versión 13:

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

Migración de la base de datos de CyberElements Bastion

La configuración del producto se almacena en la base de datos, que debe migrarse para que pueda contener los ajustes de los cambios introducidos por la nueva versión. La operación se realiza en el Mediation Controller como root.

Arquitectura Cluster

En una arquitectura Cluster, la operación debe realizarse desde un solo Mediation Controller, sin importar cuál.

También es necesario ejecutar el siguiente comando:

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

La migración de los datos se lanza con un comando equivalente a este:

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

Donde <org_clr> debe sustituirse por el nombre de la organización que se va a migrar. Tenga en cuenta que, si el Mediation Controller tiene varias organizaciones (multi-tenant), deberá ejecutar el comando tantas veces como organizaciones haya que migrar.

Ejemplo

Para una plataforma CyberElements Bastion que tenga las organizaciones systancia y systancia-test, deberá ejecutar los siguientes comandos:

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

Tras la migración de la base de datos, debe reiniciarse el servicio Apache2:

1
systemctl restart apache2

Restauración de las configuraciones

Algunas configuraciones se han sobrescrito durante el proceso de actualización y deben restaurarse.

Fichero commonParameters.conf:

Traslade las etiquetas <Location> relativas a las HTML5 Gateways, que suelen encontrarse al final del fichero, desde /etc/ipdiva/httpd/commonParameters.conf.dpkg-old hasta /etc/ipdiva/httpd/commonParameters.extra.conf (cree el fichero si no existe). Si no hay ninguna etiqueta <Location>, pueden copiarse los ejemplos siguientes.

 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>

Fichero djangosettings.ini:

Copie la información de la línea 2 « allowed_hosts » del fichero /etc/ipdiva/care/djangosettings.ini.dpkg-old al fichero /etc/ipdiva/care/djangosettings.ini. Esto puede automatizarse con el siguiente comando, ejecutado como root:

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

Aplicación de las restauraciones:

Para aplicar las restauraciones es necesario reiniciar el servicio Apache2 como root:

1
systemctl restart apache2

Validación

Una vez finalizada la actualización, debe validarse la infraestructura CyberElements Bastion para asegurarse de que funciona correctamente antes de volver a ponerla en producción. Si la validación falla, considere dar marcha atrás restaurando las copias de seguridad de los servidores CyberElements Bastion.

Acceda a la interfaz de administración de una organización y, a continuación, vaya al menú « About » de la barra de control para comprobar que la versión del Mediation Controller se ha actualizado correctamente a la 4.6.

Pueden iniciarse las primeras pruebas de funcionamiento de la plataforma, pero recomendamos utilizar la versión 4.6 de Edge Gateway para garantizar un rendimiento óptimo de las aplicaciones CyberElements Bastion.