Modification à chaud de la configuration des serveurs WebLogic 12.2.1.3


La version 12.2.1.3 de Oracle WebLogic Server introduit une nouvelle fonctionnalité qui permet de modifier à chaud la configuration d’un serveur via un simple fichier XML : Temporary Configuration Overriding.

L’objectif est simple : Modifier la configuration d’un ou plusieurs serveurs Weblogic du domaine à partir d’informations contenues dans un simple fichier xml. Ce fichier doit être placé dans le sous-répertoire  optconfig du domaine. Ce répertoire n’existe pas par défaut, il faut le créer. Ce fichier XML constitue une surcharge du fichier config.xml du domaine.

 

 

Outre le côté assez rapide de la mise en oeuvre, cette fonctionnalité présente l’avantage de limiter dans le temps la modification qui est apportée aux serveurs. En effet, il est obligatoire d’indiquer dans le fichier une date et une heure d’expiration au-delà desquelles la modification sera annulée pour revenir à la configuration originale. Ceci peut être très pratique par exemple pour activer temporairement des flags de debug sur un serveur comme le montre le fichier ci-dessous :

Exemple de fichier de configuration
<?xml version='1.0' encoding='UTF-8'?>
<dom:domain
 xmlns:dom="http://xmlns.oracle.com/weblogic/domain"
 xmlns:f="http://xmlns.oracle.com/weblogic/domain-fragment"
 xmlns:s="http://xmlns.oracle.com/weblogic/situational-config" >
   <s:expiration> 2019-05-22T19:24-08:00 </s:expiration>
  <dom:name>wls12213Domain</dom:name>
  <dom:server>
    <dom:name>ms2</dom:name>
	<dom:server-log>
		<dom:stdout-severity f:combine-mode="replace">Debug</dom:stdout-severity>
	</dom:server-log>
    <dom:server-debug>
		      <dom:debug-http f:combine-mode="replace">true</dom:debug-http>
      <dom:class-loader f:combine-mode="replace">false</dom:class-loader>
    </dom:server-debug>
  </dom:server>
  </dom:domain>

Les détails du fonctionnement de cette nouveauté sont disponible dans cette documentation.

Voilà pour le fonctionnement, quelques remarques maintenant.

Le répertoire optconfig est scruté régulièrement par les serveurs, toutes les 5 secondes par défaut. Le délai entre 2 lectures du répertoire n’est modifiable que par WLST :

Modification du délai entre 2 lectures du répertoire optconfig
connect(...)
edit()
startEdit()
domainConfig()
as=cmo.lookupServer('AdminServer')
as.setSitConfigPollingInterval(30) 
save()
activate()
disconnect()

Cette fonctionnalité est active par défaut et il n’est pas possible de la désactiver.

Évidement, seuls les paramètres dynamiques de la configuration, c’est à dire ne nécessitant pas de redémarrage sont pris en compte par cette fonctionnalité.

C’est la classe weblogic.management.provider.internal.situationalconfig.SituationalConfigManagerImpl qui est en charge de cette fonctionnalité.

On est en droit de se demander si cette nouvelle fonctionnalité constitue une faille de sécurité ou non. En effet, toute modification à chaud de la configuration des serveurs effectuées avec les autres outils (console ou WLST par exemple) nécessitent de s’authentifier. Pas celle-là. Oracle a été sollicité sur ce point et a répondu officiellement que cette fonctionnalité ne constitue en rien une faille de sécurité.

 

Conclusion

Ca sent la fonctionnalité développée pour les environnements cloud !

Elle est intéressante par exemple dans le cadre du support quand il est nécessaire d’activer temporairement certains paramètres comme les flags de debug. Je trouve dommage qu’elle soit active par défaut et qu’on ne puisse pas la désactiver.

Son mode de fonctionnement justifie encore un peu plus la nécessité d’avoir un utilisateur dédié pour lancer les instances WebLogic et que lui-seul puisse avoir un droit en écriture sur le répertoire du domaine et ses sous-répertoires.