Implementare la resilienza Web PIA con Coherence*Web

Aggiungi la resilienza Web con Coherence*Web per i tuoi server Web PeopleSoft Internet Architecture (PIA). Coherence*Web è configurato su ciascun server Web PIA ed è eseguito in parallelo, ma separato dai server WebLogic PIA. Questa operazione viene denominata Topologia fuori processo per il Web Coherence*. Viene creato un cluster quando vengono avviati due o più server della cache Web Coherence*. Dopo aver configurato Coherence*Web, i server Web PIA funzioneranno con Coherence*Web e si uniranno a questo cluster.

Configurare Coherence*Web

Impostare l'infrastruttura e gli script necessari per avviare e gestire Coherence*Web. Durante la creazione dello script che avvia il prodotto, è necessario completare alcuni task in più prima di poter eseguire lo script.

Con la versione PeopleTools 8.57, Coherence*Web viene fornito insieme all'installazione di Fusion Middleware. In questo progetto, si trova nella directory: /u01/app/psft/pt/bea/coherence. Questa è una directory condivisa a cui tutti i server Web PIA possono accedere.

  1. Creare directory per la configurazione Web e i file di log di Coherence*.
    • Nodo: tutti i nodi del server Web PIA
    • Utente: psadm2
    $ . ./psft.env
    $ mkdir -p $PS_CFG_HOME/coherence/config
    $ mkdir -p $PS_CFG_HOME/coherence/log
  2. Modificare il file psft.env per aggiungere le seguenti variabili di ambiente al file psft.env.
    • Nodo: tutti i nodi del server Web PIA
    • Utente: 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
    Ricreare l'origine del file di ambiente.
  3. Ottenere l'indirizzo IP privato di ogni istanza di computazione del server Web PIA.

    Nel nostro progetto, ogni server Web PIA dispone di un indirizzo IP privato, definito indirizzo noto (WKA) nella documentazione di Coherence*Web. Questi indirizzi IP privati saranno necessari nei passi successivi.

    • Nodo: tutti i nodi del server Web PIA
    • Utente: psadm2, utente di OCI Console
    1. Eseguire il login a OCI Console.
    2. Fare clic su Computazione, quindi su Istanze.
    3. Selezionare il compartimento che contiene i server Web.
    4. Fare clic su ciascuno dei server Web PIA elencati per visualizzare il proprio indirizzo IP privato. Registrare gli indirizzi.
  4. Creare un file di sostituzione Coherence nella directory COHERENCE_CONFIG.
    È possibile scegliere qualsiasi nome per il file, ma in genere viene chiamato tangosol-coherence-override.xml, e viene utilizzato come riferimento in diversi documenti Web Coherence*.
    • Nodo: tutti i nodi del server Web PIA
    • Utente: psadm2
    Il file XML avrà un contenuto simile al seguente:
    <?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. Specificare l'indirizzo IP privato per ogni server Web PIA.
      In questo esempio di configurazione vengono utilizzati due server Web.
    2. Inserisci il file su TUTTI i server Web PIA. Il contenuto deve essere identico.
    Il parametro <address system-property="coherence.localhost">10.0.103.0/24</address> specifica l'intera subnet privata che serve i server Web PIA. Quando il server della cache Web Coherence* viene avviato, verrà ottenuto l'indirizzo IP privato dell'host locale su cui è in esecuzione.
  5. Creare uno script che avvierà il server della cache Web Coherence* in background su ciascun server Web PIA.
    Per uno script di esempio, vedere startCacheServer.sh. Si trova nella directory wrapper della directory GitHub.
    • Nodo: tutti i nodi del server Web PIA
    • Utente: psadm2

Nota

Lo script verrà eseguito dopo aver configurato la rete Web Coherence*.

Configurare la rete Web Coherence*

Ogni server Web PIA viene eseguito in isolamento e non comunica con gli altri server Web. Per fornire la resilienza tra server a questo livello, i server Web Coherence* formano un cluster e richiedono una configurazione di rete che consenta ai rispettivi server cache di comunicare tra loro.

Per consentire a Coherence*Web di formare un cluster di cache, utilizzare OCI Console per aggiungere regole di entrata e uscita alla lista di sicurezza associata a app_private_seclist. Oltre alle porte 8088 e 8089, verranno utilizzate le porte predefinite specificate nella documentazione Web Coherence*.

Regole di entrata:

Senza conservazione dello stato CIDR di origine Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione
NO 10.0.103.0/24 TCP Tutti 7
NO 10.0.103.0/24 UDP Tutti 7
NO 10.0.103.0/24 TCP Tutti 7.574
NO 10.0.103.0/24 UDP Tutti 7.574
NO 10.0.103.0/24 TCP Tutti 8.088-8.089

Regole di uscita:

Senza conservazione dello stato CIDR di destinazione Protocollo IP Intervallo porte di origine Intervallo di porte di destinazione
NO 0.0.0.0/0 TCP Tutti Tutti
NO 0.0.0.0/0 UDP Tutti Tutti
  1. Eseguire il login a OCI Console.
  2. Aggiungere le regole di entrata e uscita alla lista di sicurezza associata a app_private_seclist.
  3. Eseguire i comandi firewall-cmd riportati di seguito come root in ogni istanza di computazione per abilitare le porte elencate nella tabella in ciascuna istanza di computazione Web PIA.
    Modificare per il proprio ambiente.
    $ 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. Avviare il primo server della cache Web Coherence* (iad-psft-hcm-web01).

    Utilizzare lo script startCacheServer.sh situato nella directory Basic Tasks in GitHub per avviare un server delle cache, eseguendo i seguenti comandi su un'istanza di computazione come psadm2. Di seguito si presume che la directory dello script si trovi nella directory PATH dell'amministratore.

    $ startCacheServer.sh
    Quando viene avviato il primo server cache, l'output avrà un aspetto simile al seguente:
    …
    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

    È possibile verificare che la configurazione venga selezionata correttamente visualizzando gli indirizzi IP elencati nella sezione WellKnownAddresslist.

    Poiché è stato avviato un solo server cache, esiste un solo membro (l'istanza di computazione su cui è stato avviato il server cache): iad-psft-hcm-web01.

  5. Utilizzare lo stesso script per avviare il server cache nella seconda istanza di computazione di livello intermedio (iad-psft-hcm-web02).
    $ startCacheServer.sh
    Dovrebbe unirsi al cluster e il file di log dovrebbe avere un aspetto simile al seguente:
    …
    
    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
        )
    
    …

    Lo snippet del file di log sopra mostra due membri nel cluster, entrambi con il ruolo CoherenceServer.

  6. Cercare il file di log del server cache avviato per primo nell'istanza di computazione iad-psft-hcm-web01. Le voci simili a quelle riportate di seguito indicano che è stata stabilita una connessione 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 prima volta che si avviano i server cache uno alla volta e si controllano ciascuno per verificare che sia configurato correttamente. In futuro, quando è necessario avviare i livelli intermedi, è possibile avviare tutti i server cache Web Coherence*in una sola volta.

  7. Se su ogni istanza di computazione viene visualizzato un solo membro, i server della cache Web Coherence* non possono "vedersi" tra loro.
    Ciò è dovuto al blocco di una o più porte di rete. Un modo per eseguire il test delle porte bloccate è utilizzare la utility Netcat (nc), che deve essere installata in ogni istanza di calcolo Web PIA.
    1. Utilizzare la utility yum per installare la utility nc) in ogni istanza di calcolo Web PIA come utente root
      # yum install -y nc
    2. Eseguire il login come root per eseguire il test delle porte per i pacchetti TCP e UDP sui server Web PIA.
      Ad esempio, per verificare se la porta 7574 è aperta su iad-psft-web01, avviare un listener Netcat che ascolta i pacchetti UDP sulla porta 7574:
      # nc -u -l iad-psft-web01 7574

      Il comando nc attenderà, lasciarlo lì.

    3. In una sessione separata, eseguire il login come root su iad-psft-web02. Avviare un client UDP Netcat che si connette a iad-psft-web01 sulla porta 7574:
       # nc -u iad-psft-web01 7574

      Il comando nc rimarrà in attesa.

    4. Su quel terminale, digitare "test" e premere Invio.
      La parola "test" dovrebbe essere visualizzata sull'altro terminale.
    5. Digitare "test" sul terminale del server in cui nc è in ascolto e premere Enter.
      Dovrebbe apparire nel terminale del cliente.
    6. Se il test riesce, cambiare ruolo ed eseguire il listener nc su iad-psft-web02 e il client su iad-psft-web01 e ripetere il test.
    7. Se il test non riesce, è probabile che la causa sia una o più delle seguenti:
      • Nessuna regola di entrata che consente il protocollo UDP per la porta 7574 nella lista di sicurezza pertinente per la subnet del server Web PIA.
      • Nessuna regola di uscita che consente il protocollo UDP per la porta 7574 nella lista di sicurezza pertinente per la subnet del server Web PIA.
      • Il comando firewall-cmd non è stato eseguito su ciascun server Web PIA per consentire il traffico UDP per la porta 7574.
      Coherence*Web fornisce una utility di test del datagramma per testare le connessioni sia per TCP che per UDP. Per ulteriori informazioni, vedere Uso della utility Datagram Test.

Configurare il server Web PIA per il Web Coherence*

Con i server cache Web Coherence* configurati e in esecuzione su tutte le istanze di calcolo del server Web PIA, è ora possibile configurare i server Web PIA.

Le versioni recenti dei file di configurazione PeopleTools hanno già la maggior parte della configurazione richiesta, ha commentato. Per abilitare l'accesso ai server della cache Web Coherence*, attenersi alla procedura appropriata per l'ambiente in uso.

Eseguire le operazioni riportate di seguito su tutti i nodi del server Web PIA come utente psadm2.

  1. Assicurarsi che il cookie di sessione e i nomi di dominio di rete siano gli stessi per tutti i server Web PIA nel file weblogic.xml. Il file weblogic.xml si trova in $PS_CFG_HOME/ webserv/HR92U033/applications/peoplesoft/PORTAL.war/WEB-INF. Per questo esempio, il dominio è HR92U033.
  2. Nello stesso file weblogic.xml, spostare la stringa end comment dal di sotto del tag <persistent-store-type>coherence-web</persistent-store-type> al di sopra, in modo che non faccia più parte del commento:
    Di seguito è riportato un esempio del file 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. Nel file web.xml, annullare il commento alla sezione che inizia con "Parametri Coherence*Web". Questa sezione contiene tutti i parametri richiesti per Coherence*Web.
    Il file web.xml si trova nella stessa directory del file weblogic.xml.
    Di seguito è riportato un esempio di questa sezione specifica.
    <!-- 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. Aggiungere i parametri aggiuntivi al PIA setEnv.sh situato nella directory $PS_CFG_HOME/webserver/HR92U033/bin.
    Questo file contiene un commento per Coherence. Di seguito è riportato uno snippet per il file setEnv.sh in cui sono stati aggiunti i parametri di avvio Web PIA:
    Di seguito è riportato un esempio di questa sezione specifica.
    # 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
    Note
    • Ci sono trattini immediatamente prima di ogni parametro (il ritorno a capo può dividere il display)
    • È necessario definire COHERENCE_PARAMETERS prima di esportare JAVA_OPTION_LINUX
    • È necessario specificare Dtangosol.coherence.override=file:/peoplesoft/local/ps_config/coherence/config/tangosol-coherence-override.xml in modo che il server WebLogic PIA possa registrarsi correttamente come client Web Coherence*.
  5. Riavviare il server Web PIA utilizzando gli script di avvio e chiusura PeopleSoft personalizzati.
    $ stopWS.sh 
    $ startWS.sh
  6. Ripetere questi passaggi per ogni nodo del server Web PIA.
Quando ogni server Web PIA viene riavviato, si unirà al cluster server cache Web Coherence* come client. Ogni log del server cache deve mostrare i server WebLogic che stabiliscono una connessione e uniscono il cluster con un ruolo WeblogicServer. Ecco uno snippet dal 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)

I log del server cache su ciascun server Web PIA dovrebbero mostrare qualcosa di simile a quanto sopra. La distribuzione PeopleSoft ora dispone della resilienza del server Web.

Test della resilienza Web PIA

Eseguire le operazioni riportate di seguito per verificare e verificare che Coherence*Web fornisca la resilienza Web.

  1. Arrestare tutti i server Web PIA tranne uno.
  2. Utilizzando un browser Web, eseguire il login all'applicazione PeopleSoft.
  3. Esplora, fai un po' di lavoro. Avviare una transazione, ma non completarla.
  4. Avviare un secondo server Web PIA e consentirne l'avvio completo. Controllare il load balancer dalla console OCI per assicurarsi che lo stato del secondo server Web PIA mostri OK.
  5. Arrestare il server Web PIA rimasto nel passo 1.
  6. Nel browser Web connesso all'applicazione PeopleSoft, continuare la transazione.
    È possibile rilevare una leggera pausa, ma non si dovrebbe ricevere un errore, è necessario accedere di nuovo, o perdere qualsiasi lavoro.
    Se si verifica un errore come "token non autorizzato", controllare quanto riportato di seguito.
    • I cookie di sessione e i nomi di dominio devono essere gli stessi per tutti i file weblogic.xml del server Web PIA.
    • Il set backend del load balancer OCI deve essere configurato con Abilita persistenza cookie applicazione e è necessario specificare il nome del cookie.
    • Tutti i server della cache Web Coherence* devono essere in grado di visualizzarsi e di formare un cluster.
    • Tutti i server Web PIA devono essere entrati nel cluster del server cache come client WeblogicServer.
    • Doppio controllo delle configurazioni di rete, incluse le regole di entrata e uscita della lista di sicurezza, i comandi firewall-cmd e così via.