Implantación de la Resiliencia Web de PIA con Coherence*Web

Agregue resiliencia web con Coherence*Web para sus servidores web de arquitectura de Internet (PIA) PeopleSoft. Coherence*Web se configura en cada servidor web de PIA y se ejecuta en paralelo, pero separado de los servidores WebLogic de PIA. Esto se denomina topología fuera de proceso para Coherence*Web. Se forma un cluster cuando se inician dos o más servidores de caché de Coherence*Web. Después de configurar Coherence*Web, configurará los servidores web de PIA para que funcionen con Coherence*Web y, a continuación, se unirán a este cluster.

Configurar Coherence*Web

Configure la infraestructura y los scripts necesarios para iniciar y gestionar Coherence*Web. Aunque creará el script que inicia el producto, podrá completar algunas tareas más antes de ejecutar el script.

Con PeopleTools 8.57, Coherence*Web se incluye en la instalación de Fusion Middleware. En este proyecto, está en el directorio: /u01/app/psft/pt/bea/coherence. Este es un directorio compartido al que pueden acceder todos los servidores web de PIA.

  1. Cree directorios para la configuración de Coherence*Web y los archivos log.
    • Nodo: todos los nodos del servidor web PIA
    • Usuario: psadm2
    $ . ./psft.env
    $ mkdir -p $PS_CFG_HOME/coherence/config
    $ mkdir -p $PS_CFG_HOME/coherence/log
  2. Edite el archivo psft.env para agregar las siguientes variables de entorno al archivo psft.env.
    • Nodo: todos los nodos del servidor web PIA
    • Usuario: psadm2
    export COHERENCE_HOME=$BASE_DIR/pt/bea/coherence
    export COHERENCE_CONFIG=$PS_CFG_HOME/coherence/config
    export COHERENCE_LOG=$PS_CFG_HOME/coherence/log
    Vuelva a asignar el archivo de entorno.
  3. Obtenga la dirección IP privada de cada instancia informática del servidor web de PIA.

    En nuestro proyecto, cada servidor web de PIA tiene una dirección IP privada, denominada dirección conocida (WKA) en la documentación de Coherence*Web. Necesitará estas direcciones IP privadas en pasos posteriores.

    • Nodo: todos los nodos del servidor web PIA
    • Usuario: psadm2, usuario de la consola de OCI
    1. Conéctese a la consola de OCI.
    2. Haga clic en Recursos informáticos y, a continuación, en Instancias.
    3. Seleccione el compartimento que contiene los servidores web.
    4. Haga clic en cada uno de los servidores web de PIA mostrados para ver su dirección IP privada. Registre las direcciones.
  4. Cree un archivo de sustitución de Coherence en el directorio COHERENCE_CONFIG.
    Puede elegir cualquier nombre para el archivo, pero generalmente se denomina: tangosol-coherence-override.xml, y se hace referencia a él con ese nombre en varios documentos de Coherence*Web.
    • Nodo: todos los nodos del servidor web PIA
    • Usuario: psadm2
    El archivo XML tendrá contenido similar al siguiente:
    <?xml version="1.0"?>
    <!DOCTYPE coherence SYSTEM "coherence-override.dtd">
    <!--
    This operational configuration override file is set up for use with Coherence
    -->
    <coherence>
    <cluster-config>
    <unicast-listener>
      <well-known-addresses>
       <socket-address id="1">
          <address>10.0.103.85</address>
       </socket-address>
       <socket-address id="2">
          <address>10.0.103.203</address>
      </socket-address>
    </well-known-addresses>
    <port system-property="tangosol.coherence.localport">8088</port>
    <address system-property="coherence.localhost">10.0.103.0/24</address>
    </unicast-listener>
    </cluster-config>
    </coherence>
    1. Especifique la dirección IP privada para cada servidor web de PIA.
      En este ejemplo de configuración, se utilizan dos servidores web.
    2. Coloque el archivo en TODOS los servidores web de PIA. El contenido debe ser idéntico.
    El parámetro <address system-property="coherence.localhost">10.0.103.0/24</address> especifica toda la subred privada que sirve a los servidores web de PIA. Cuando se inicie el servidor de caché Coherence*Web, obtendrá la dirección IP privada del host local en la que se está ejecutando.
  5. Cree un script que inicie el servidor de caché Coherence*Web en segundo plano en cada servidor web PIA.
    Consulte startCacheServer.sh para ver un script de ejemplo. Se encuentra en el directorio de envoltorio en GitHub.
    • Nodo: todos los nodos del servidor web PIA
    • Usuario: psadm2

Note:

Ejecute el script después de configurar la red Coherence*Web.

Configurar la red Coherence*Web

Cada servidor web PIA se ejecuta de forma aislada y no se comunica con los demás servidores web. Para proporcionar resiliencia entre servidores en esta capa, los servidores Coherence*Web forman un cluster y requieren una configuración de red que permita que sus servidores de caché se comuniquen entre sí.

Para permitir que Coherence*Web forme un cluster de caché, utilice la consola de OCI para agregar reglas de entrada y salida a la lista de seguridad asociada a app_private_seclist. Además de los puertos 8088 y 8089, utilizará los puertos por defecto especificados en la documentación de Coherence*Web.

Reglas de entrada:

Sin Estado CIDR de origen Protocolo IP Rango de puertos de origen Rango de puertos de destino
NO 10.0.103.0/24 TCP Todas 7
NO 10.0.103.0/24 UDP Todas 7
NO 10.0.103.0/24 TCP Todas 7.574
NO 10.0.103.0/24 UDP Todas 7.574
NO 10.0.103.0/24 TCP Todas 8.088-8.089

Reglas de salida:

Sin Estado CIDR de destino Protocolo IP Rango de puertos de origen Rango de puertos de destino
NO 0.0.0.0/0 TCP Todas Todas
NO 0.0.0.0/0 UDP Todas Todas
  1. Inicie sesión en la consola de OCI.
  2. Agregue las reglas de entrada y salida a la lista de seguridad asociada a app_private_seclist.
  3. Ejecute los siguientes comandos firewall-cmd como root en cada instancia informática para activar los puertos que se muestran en la tabla en cada una de las instancias informáticas web de PIA.
    Modificar para el entorno.
    $ firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.0.103.0/24 port port=7 protocol=tcp accept' –permanent
    $ firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.0.103.0/24 port port=7 protocol=udp accept' –permanent
    $ firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.0.103.0/24 port port=8088-8089 protocol=tcp accept' –permanent
    $ firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.0.103.0/24 port port=7574 protocol=tcp accept' –permanent
    $ firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.0.103.0/24 port port=7574 protocol=udp accept' --permanent
    $ firewall-cmd –reload
  4. Inicie el primer servidor de caché de Coherence*Web (iad-psft-hcm-web01).

    Utilice la secuencia de comandos startCacheServer.sh ubicada en el directorio Basic Tasks en GitHub para iniciar un servidor de caché; para ello, ejecute los siguientes comandos en una instancia informática como psadm2. A continuación, se asume que el directorio de secuencia de comandos está en PATH del administrador.

    $ startCacheServer.sh
    Cuando se inicia el primer servidor de caché, la salida será similar a la siguiente:
    …
    2022-08-31 21:15:11.539/0.639 Oracle Coherence 12.2.1.3.0 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/u01/app/psft/pt/bea/coherence/lib/coherence.jar!/tangosol-coherence.xml" 
    …
    2022-08-31 21:15:16.137/5.237 Oracle Coherence GE 12.2.1.3.0 <Info> (thread=main, member=n/a): Started cluster Name=psadm2's cluster, ClusterPort=7574
    
    WellKnownAddressList(
      10.0.103.203
      10.0.103.85
      )
    
    MasterMemberSet(
      ThisMember=Member(Id=1, Timestamp=2022-08-31 21:15:12.825, Address=10.0.103.85:8088, MachineId=10879, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web01,process:21537, Role=CoherenceServer)
      OldestMember=Member(Id=1, Timestamp=2022-08-31 21:15:12.825, Address=10.0.103.85:8088, MachineId=10879, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web01,process:21537, Role=CoherenceServer)
      ActualMemberSet=MemberSet(Size=1
        Member(Id=1, Timestamp=2022-08-31 21:15:12.825, Address=10.0.103.85:8088, MachineId=10879, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web01,process:21537, Role=CoherenceServer)
        )
      MemberId|ServiceJoined|MemberState|Version
        1|2022-08-31 21:15:12.825|JOINED|12.2.1.3.0
      RecycleMillis=1200000
      RecycleSet=MemberSet(Size=0

    Para verificar que la configuración se ha seleccionado correctamente, consulte las direcciones IP que se muestran en la sección WellKnownAddresslist.

    Como solo ha iniciado un servidor de caché, solo hay un miembro (la instancia informática en la que se ha iniciado el servidor de caché): iad-psft-hcm-web01.

  5. Utilice el mismo script para iniciar el servidor de caché en la segunda instancia informática de capa media (iad-psft-hcm-web02).
    $ startCacheServer.sh
    Debe unirse al cluster y el archivo log debe tener un aspecto similar al siguiente:
    …
    
    2022-08-31 21:15:36.513/0.628 Oracle Coherence 12.2.1.3.0 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/u01/app/psft/pt/bea/coherence/lib/coherence.jar!/tangosol-coherence.xml" 
    …
    2022-08-31 21:15:38.307/2.421 Oracle Coherence GE 12.2.1.3.0 <Info> (thread=main, member=n/a): Started cluster Name=psadm2's cluster, ClusterPort=7574
    
    WellKnownAddressList(
      10.0.103.203
      10.0.103.85
      )
    
    MasterMemberSet(
      ThisMember=Member(Id=2, Timestamp=2022-08-31 21:15:37.981, Address=10.0.103.203:8088, MachineId=10880, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web02,process:12859, Role=CoherenceServer)
      OldestMember=Member(Id=1, Timestamp=2022-08-31 21:15:12.825, Address=10.0.103.85:8088, MachineId=10879, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web01,process:21537, Role=CoherenceServer)
      ActualMemberSet=MemberSet(Size=2
        Member(Id=1, Timestamp=2022-08-31 21:15:12.825, Address=10.0.103.85:8088, MachineId=10879, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web01,process:21537, Role=CoherenceServer)
        Member(Id=2, Timestamp=2022-08-31 21:15:37.981, Address=10.0.103.203:8088, MachineId=10880, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web02,process:12859, Role=CoherenceServer)
        )
      MemberId|ServiceJoined|MemberState|Version
        1|2022-08-31 21:15:12.825|JOINED|12.2.1.3.0,
        2|2022-08-31 21:15:37.981|JOINED|12.2.1.3.0
      RecycleMillis=1200000
      RecycleSet=MemberSet(Size=0
        )
    
    …

    El fragmento de archivo log anterior muestra dos miembros en el cluster, ambos con el rol CoherenceServer.

  6. Consulte el archivo log del servidor de caché que inició primero en la instancia informática iad-psft-hcm-web01. Debe ver entradas similares a las siguientes que muestran que se ha establecido una conexión a iad-psft-hcm-web02.
    2022-08-31 21:15:38.179/27.279 Oracle Coherence GE 12.2.1.3.0 <D6> (thread=Cluster, member=1): TcpRing connected to Member(Id=2, Timestamp=2022-08-31 21:15:37.981, Address=10.0.103.203:8088, MachineId=10880, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web02,process:12859, Role=CoherenceServer)

    La primera vez que inicie los servidores de caché de uno en uno y compruebe cada uno para verificar que está configurado correctamente. En el futuro, cuando necesite iniciar las capas medias, puede iniciar todos los servidores de caché de Coherence*Web a la vez.

  7. Si en cada instancia informática solo ve un miembro, los servidores de caché de Coherence*Web no pueden "ver" los unos a los otros.
    Esto se debe a que se bloquean uno o más puertos de red. Una forma de probar los puertos que se bloquean es utilizar la utilidad Netcat (nc), que se debe instalar en cada instancia informática web de PIA.
    1. Utilice yum para instalar la utilidad nc) en cada instancia informática web de PIA como usuario root
      # yum install -y nc
    2. Inicie sesión como root para probar puertos para paquetes TCP y UDP en sus servidores web PIA.
      Por ejemplo, para probar si el puerto 7574 está abierto en iad-psft-web01, inicie un listener de Netcat que reciba paquetes UDP en el puerto 7574:
      # nc -u -l iad-psft-web01 7574

      El comando nc esperará, déjelo allí.

    3. En una sesión independiente, conéctese como root en iad-psft-web02. Inicie un cliente UDP Netcat que se conecte a iad-psft-web01 en el puerto 7574:
       # nc -u iad-psft-web01 7574

      El comando nc esperará.

    4. En ese terminal, escriba algo como "test" y pulse Intro.
      La palabra "prueba" debe aparecer en el otro terminal.
    5. Escriba "test" en el terminal del servidor donde recibe nc y pulse Intro.
      Debe aparecer en el terminal del cliente.
    6. Si la prueba se realiza correctamente, cambie de roles y ejecute el listener de nc en iad-psft-web02 y el cliente en iad-psft-web01 y repita la prueba.
    7. Si la prueba no se realiza correctamente, es probable que una o más de las siguientes causas:
      • No hay ninguna regla de entrada que permita el protocolo UDP para el puerto 7574 en la lista de seguridad relevante para la subred del servidor web PIA.
      • No hay ninguna regla de salida que permita el protocolo UDP para el puerto 7574 en la lista de seguridad relevante para la subred del servidor web PIA.
      • El comando firewall-cmd no se ha ejecutado en cada servidor web PIA para permitir el tráfico UDP para el puerto 7574.
      Coherence*Web proporciona una utilidad de prueba de datagramas para probar conexiones tanto para TCP como para UDP. Consulte Using the Datagram Test Utility para obtener más detalles.

Configurar el servidor web PIA para Coherence*Web

Con los servidores de caché Coherence*Web configurados y en ejecución en todas las instancias informáticas del servidor web PIA, ahora puede configurar los servidores web PIA.

Las versiones recientes de los archivos de configuración PeopleTools ya tienen la mayor parte de la configuración necesaria, con comentarios. Para activar el acceso a los servidores de caché de Coherence*Web, siga los pasos, ajustándolos según corresponda para su entorno.

Realice lo siguiente en todos los nodos del servidor web PIA, como usuario psadm2.

  1. Asegúrese de que los nombres de dominio de red y cookie de sesión sean los mismos para todos los servidores web de PIA en el archivo weblogic.xml. El archivo weblogic.xml se encuentra en $PS_CFG_HOME/ webserv/HR92U033/applications/peoplesoft/PORTAL.war/WEB-INF. En este ejemplo, el dominio es HR92U033.
  2. En el mismo archivo weblogic.xml, mueva la cadena end comment de debajo de la etiqueta <persistent-store-type>coherence-web</persistent-store-type> a encima de ella, de modo que ya no forme parte del comentario:
    A continuación, se muestra un ejemplo del archivo weblogic.xml:
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
    <description>PeopleSoft Internet Architecture</description>
      <session-descriptor>
      <id-length>32</id-length>
      <cookie-name>iad-hcm-8080-PORTAL-PSJSESSIONID</cookie-name>
      <cookie-domain>.appprivatesu.ebscloudmaavcn.oraclevcn.com</cookie-domain>
      <monitoring-attribute-name>USERID</monitoring-attribute-name>
      <persistent-store-table>wl_servlet_sessions</persistent-store-table>
      <http-proxy-caching-of-cookies>true</http-proxy-caching-of-cookies>
    <!-- Coherence*Web
    -->
      <persistent-store-type>coherence-web</persistent-store-type>
      </session-descriptor>
        <container-descriptor>
          <servlet-reload-check-secs>-1</servlet-reload-check-secs>
          <session-monitoring-enabled>true</session-monitoring-enabled>
      </container-descriptor>
      <context-root>/</context-root>
    </weblogic-web-app>
  3. En el archivo web.xml, elimine el comentario de la sección que empieza por "Coherence*Web parameters". Esta sección contiene todos los parámetros necesarios para Coherence*Web.
    El archivo web.xml está en el mismo directorio que el archivo weblogic.xml.
    A continuación se muestra un ejemplo de esta sección específica:
    <!-- Coherence*Web parameters
    -->
      <context-param>
        <description>With this set to "true", attributes that are deemed to be
          mutable (detected with a simple check) and which are accessed through a get,
          are deemed to be suspect in that they may have been changed in application code.
          Suspect attributes are treated as changed. Defaults to "false".</description>
        <param-name>coherence-enable-suspect-attributes</param-name>
        <param-value>true</param-value>
      </context-param>
      <context-param>
        <description>This value specifies a class name of the optional
          com.tangosol.coherence.servlet.HttpSessionCollection.AttributeScopeController
          interface implementation to use.</description>
        <param-name>coherence-scopecontroller-class</param-name>
        <param-value>com.tangosol.coherence.servlet.AbstractHttpSessionCollection$GlobalScopeController</param-value>
      </context-param>
      <context-param>
        <description>Specifies a cache delegator class that is responsible for manipulating
         (getting, putting, or deleting) data in the distributed cache
        </description>
        <param-name>coherence-cache-delegator-class</param-name>
        <param-value>com.tangosol.coherence.servlet.LocalSessionCacheDelegator</param-value>
      </context-param>
      <context-param>
        <description>This value, if set to true, specifies that non-serializable attributes
          should be preserved as local ones. This parameter requires a load balancer to
          be present to retrieve non-serializable attributes for a session
        </description>
        <param-name>coherence-preserve-attributes</param-name>
        <param-value>true</param-value>
      </context-param>
      <context-param>
        <description>
          This value specifies a class name of the com.tangosol.coherence.servlet.HttpSessionCollection
          $SessionDistributionController interface implementation
        </description>
        <param-name>coherence-distributioncontroller-class</param-name>
        <param-value>com.tangosol.coherence.servlet.AbstractHttpSessionCollection$HybridController</param-value>
      </context-param>
  4. Agregue los parámetros adicionales al PIA setEnv.sh ubicado en el directorio $PS_CFG_HOME/webserver/HR92U033/bin.
    Hay un comentario en este archivo para Coherence. Aquí hay un fragmento para el archivo setEnv.sh donde hemos agregado los parámetros de inicio web de PIA:
    A continuación se muestra un ejemplo de esta sección específica:
    # Coherence*Web related parameters
    # COHERENCE_PARAMETERS=-Dtangosol.coherence.session.localstorage=false
    # Optionally add -Dtangosol.coherence.override=file:OVERRIDE_FILE_PATH
    COHERENCE_PARAMETERS="-Dtangosol.coherence.override=file:/peoplesoft/local/ps_config/coherence/config/tangosol-coherence-override.xml -Dtangosol.coherence.session.localstorage=false -Djava.net.preferIPv4Stack=true"
    # Example: JAVA_OPTIONS_LINUX="$JAVA_OPTIONS_LINUX $COHERENCE_PARAMETERS"
    # export JAVA_OPTIONS_LINUX
    JAVA_OPTIONS_LINUX="$JAVA_OPTIONS_LINUX $COHERENCE_PARAMETERS"
    export JAVA_OPTIONS_LINUX
    # Refer to Coherence*Web documentation
    Notas:
    • Hay guiones inmediatamente antes de cada parámetro (el ajuste de palabras puede dividir la visualización)
    • Debe definir COHERENCE_PARAMETERS antes de exportar JAVA_OPTION_LINUX
    • Debe especificar Dtangosol.coherence.override=file:/peoplesoft/local/ps_config/coherence/config/tangosol-coherence-override.xml para que el servidor WebLogic de PIA se pueda registrar correctamente como cliente Coherence*Web.
  5. Reinicie el servidor web PIA mediante los scripts de inicio y cierre personalizados de PeopleSoft.
    $ stopWS.sh 
    $ startWS.sh
  6. Repita estos pasos para cada nodo del servidor web PIA.
A medida que se reinicia cada servidor web de PIA, se unirá al cluster del servidor de caché web de Coherence*Web como clientes. Cada log del servidor de caché debe mostrar los servidores WebLogic que establecen una conexión y se unen al cluster con el rol WeblogicServer. A continuación, se muestra un fragmento del log:
2021-10-28 23:27:01.237/160.748 Oracle Coherence GE 12.2.1.3.0 <D6> (thread=Cluster, member=1): TcpRing connected to Member(Id=3, Timestamp=2021-10-28 23:27:01.044, Address=10.0.103.85:8089, MachineId=10879, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web01,process:16067, Role=WeblogicServer)
…
2021-10-28 23:28:14.958/234.469 Oracle Coherence GE 12.2.1.3.0 <D6> (thread=Cluster, member=1): TcpRing connecting to Member(Id=4, Timestamp=2021-10-28 23:28:14.768, Address=10.0.103.203:8089, MachineId=10880, Location=site:appprivatesu.ebscloudmaavcn.oraclevcn.com,machine:iad-psft-hcm-web02,process:14708, Role=WeblogicServer)

Los logs del servidor de caché en cada servidor web de PIA deben mostrar algo similar a lo anterior. El despliegue PeopleSoft ahora tiene resiliencia de servidor web.

Prueba de la resiliencia web de PIA

Realice lo siguiente para probar y validar que Coherence*Web proporciona resiliencia web.

  1. Cierre todos los servidores web PIA menos uno.
  2. Mediante un explorador web, conéctese a la aplicación PeopleSoft.
  3. Vaya, haga algo de trabajo. Inicie una transacción, pero no la complete.
  4. Inicie un segundo servidor web PIA y permita que se active por completo. Compruebe el equilibrador de carga de la consola de OCI para asegurarse de que el estado del segundo servidor web de PIA sea Aceptar.
  5. Cierre el servidor web PIA que quedó en el paso 1.
  6. En el explorador web conectado a la aplicación PeopleSoft, continúe con la transacción.
    Puede detectar una pequeña pausa, pero no debe recibir un error, tener que volver a iniciar sesión o perder el trabajo.
    Si se produce un error como "Token no autorizado", revise lo siguiente:
    • La cookie de sesión y los nombres de dominio deben ser los mismos para todos los archivos weblogic.xml del servidor web de PIA.
    • El juego de backends del equilibrador de carga de OCI se debe configurar con Activar persistencia de cookies de aplicación y se debe especificar el nombre de cookie.
    • Todos los servidores de caché de Coherence*Web deben poder verse entre sí y haber formado un cluster.
    • Todos los servidores web de PIA deben haberse unido al cluster de servidor de caché como clientes WeblogicServer.
    • Vuelva a comprobar las configuraciones de red, incluidas las reglas de entrada y salida de la lista de seguridad, los comandos firewall-cmd, etc.