Mejora de la alta disponibilidad en HCL Commerce con IBM Db2 HADR
Puede habilitar IBM Db2 HADR para garantizar que el sitio de HCL Commerce esté disponible para los compradores en casos de anomalía de base de datos o de paradas planificadas. HADR también garantiza que los datos de negocio se puedan recuperar con una interrupción mínima del sitio.
Procedure
- Habilite la recuperación ante desastres de alta disponibilidad en la base de datos de IBM Db2.
-
Habilite el redireccionamiento de cliente automático IBM Db2 (ACR) en HCL Commerce.
Asegúrese de que los datos se conserven en los contenedores Docker mediante las propiedades personalizadas en las fuentes de datos de Transacción y Búsqueda. En el caso de un escenario de adquisición de HADR, esto le permitirá pasar sin problemas de utilizar una base de datos primaria a una de reserva. Las propiedades personalizadas que se deben actualizar y que permitirán el ACR IBM Db2 tanto para el contenedor de Transacción como para el de Búsqueda, son:
- clientRerouteAlternateServerName (es obligatorio),
- clientRerouteAlternatePortNumber (obligatorio),
- maxRetriesForClientReroute (opcional) y
- retryIntervalForClientReroute (opcional).Note: El intervalo de reintento para los reintentos automáticos para el redireccionamiento de cliente se mide en segundos.
-
El Transaction server Docker container se deriva de la arquitectura de WebSphere Application Server. Por lo tanto, cuando despliegue un nuevo contenedor de Docker, utilice los scripts
wsadmin
para actualizar las propiedades anteriores. Para obtener más información, consulte la herramienta wsadmin en el Centro de conocimiento del servidor de aplicaciones IBM WebSphere.. - La transacción de búsqueda se deriva de la arquitectura del servidor de WebSphere Application Server V8.5.5 Liberty. Liberty se configura con archivos de XML y conexiones de base de datos configuradas en el archivo datasource.xml. Al desplegar un nuevo contenedor de Docker, actualice este archivo (mediante programación) para añadir las propiedades anteriores al redireccionamiento automático del cliente.
Example
- Ejemplo 1: Establecimiento de ACR en Transaction server Docker container
- Este ejemplo es para Transaction server. Se escribe mediante Python y utiliza comandos
wsadmin
para configurar el ACR para Transaction server Docker container.El nombre del script es
update_txn_alternate_server.py
.Sus parámetros (los parámetros son los valores respectivos para las propiedades personalizadas de la WebSphere de ACR) son los siguientes:<alternate_server_name>
,<alternate_port_number>
,<max_retries_for_client_reroute>
y<retry_interval_for_client_reroute>
Cree el script dentro del directorio Transaction server Docker container /SETUP/scripts/.
El contenido de este script debe ser el siguiente:# Init variables propertyNames = [ 'clientRerouteAlternateServerName', 'clientRerouteAlternatePortNumber', \ 'maxRetriesForClientReroute', 'retryIntervalForClientReroute' ] propertyValues = [ <alternate_server_name>, <alternate_port_number>, \ <max_retries_for_client_reroute>, <retry_interval_for_client_reroute> ] propertyTypes = [ 'java.lang.String', 'java.lang.Integer', 'java.lang.Integer', \ 'java.lang.Integer' ] # Get the datasource datasource = AdminConfig.getid('/Cell:localhost/Node:localhost/Server:server1/JDBCProvider:WCDataSource_provider/DataSource:WCDataSource/') print 'datasource = ', datasource # Get the property set propertySet = AdminConfig.showAttribute( datasource, 'propertySet') print 'propertySet = ', propertySet # Get the list of properties propertyList = AdminConfig.list('J2EEResourceProperty', propertySet).splitlines() a = [ p.split( '(' )[ 0 ] for p in propertyList ] # Adding or updating ACR custom variables for i in range( len( propertyNames ) ): if propertyNames[ i ] not in a: propertyAttributes = [['name', propertyNames[ i ]], ['value', propertyValues[ i ]], \ ['type', propertyTypes[ i ]], ['description', ''], \ ['required', 'true']] AdminConfig.create( 'J2EEResourceProperty', propertySet, propertyAttributes ) print propertyNames[ i ], ' created' else: propertyAttributes = [['value', propertyValues[ i ]], ['description', ''], \ ['required', 'true']] AdminConfig.modify( propertyNames[ i ], propertyAttributes ) print propertyNames[ i ], ' updated' AdminConfig.save()
Llame al script utilizando la sintaxis de mandato siguiente:/opt/WebSphere/AppServer/profiles/default/bin/wsadmin.sh -conntype NONE -f /SETUP/scripts/update_txn_alternate_server.py alternate_server_name alternate_port_number max_retries_for_client_reroute retry_interval_for_client_reroute
- Ejemplo 2: Establecer el ACR para el contenedor de búsqueda
- Este ejemplo también se escribe mediante Python y configura el ACR para el contenedor de búsqueda. El nombre del script es
update_search_alternate_server.py
y la sintaxis para invocarlo es la siguiente:
Este es el script de Python:python update_search_alternate_server.py alternate_server_name alternate_port_number max_retries_for_client_reroute retry_interval_for_client_reroute
import sys import xml.etree.ElementTree as et filename = '/opt/WebSphere/Liberty/usr/servers/default/configDropins/overrides/datasources.xml' tree = et.parse( filename ) root = tree.getroot() d = root.find( 'dataSource' ) children = d.getchildren() for child in children: if 'properties.db2.jcc' in str( child ): print 'found' print child.tag, child.attrib dict = child.attrib print 'dict = ', dict dict[ 'clientRerouteAlternateServerName' ] = sys.argv[0] dict[ 'clientRerouteAlternatePortNumber' ] = sys.argv[1] max_retries_for_client_reroute = sys.argv[2] retry_interval_for_client_reroute = sys.argv[3] if len( max_retries_for_client_reroute ) != 0: dict[ 'maxRetriesForClientReroute' ] = max_retries_for_client_reroute if len( retry_interval_for_client_reroute ) != 0: dict[ 'retryIntervalForClientReroute' ] = retry_interval_for_client_reroute d.remove( child ) b = et.SubElement( d, 'properties.db2.jcc' ) b.attrib = dict tree.write( filename )