đ§ Oracle WebLogic â Guide complet (Admin, DevOps, Kubernetes)
Guide IDEOâLab trĂšs densifiĂ© : architecture WebLogic, domaines, clusters, sĂ©curitĂ©, WLST, patching, observabilitĂ©, CI/CD, Docker & Kubernetes Operator.
RĂ©fĂ©rences : documentation Oracle WebLogic 14c (14.1.2), nouveautĂ©s 14.1.2 (dĂ©c. 2024), Kubernetes Operator (repo Oracle). îciteîturn0search0îturn0search1îturn0search6îturn0search3îturn0search13î
WebLogic : vue dâensemble
Serveur Java EE/Jakarta, domaines, AdminServer, Managed Servers, clusters, services (JMS/JTA/JDBC).
DomainAdminClusterArchitecture & composants
Domain / machines / Node Manager / deployments / resources / sécurité / logs.
NodeMgrResourcesLogsInstallation & prérequis
JDK, installer, Oracle Home, inventory, silent install, variables dâenvironnement.
JDK 17/21SilentORACLE_HOMECrĂ©ation dâun domaine
Configuration Wizard, templates, ports, nodemanager, start/stop propre, layout prod.
config.shProd LayoutBoot IdentityAdmin Console & Remote Console
Navigation, ressources, sécurité, déploiements, health, métriques, lock & change center.
ConsoleChange CenterHealthWLST : lâoutil ultime
Automatiser tout : datasources, JMS, users, deploy, start/stop, reporting.
Python/JythonOffline/OnlineGitOpsDéploiements (WAR/EAR)
Stages, targets, plan.xml, rollouts, versioning, zeroâdowntime patterns.
EARTargetsPlanJDBC / Datasources
Pool, validation, XA vs nonâXA, tuning, diagnostics, encryption, secrets.
PoolingXATuningJMS / Messaging
Servers, modules, queues/topics, distributed destinations, SAF, transactions.
JMS ServerDDSAFClusters & HA
Session replication, loadâbalancing, migrations, health monitoring, rolling restart.
HASessionLBOps : start/stop, services
systemd, Node Manager, logs, rotation, diagnostics, scripts de runbook.
systemdRunbookRotationSécurité (Realm, SSL, SSO)
Users/groups, policies, keystores, TLS, SAML/OIDC, audit, durcissement.
SSL/TLSSAMLHardeningObservabilité (Prom/Grafana)
Logs, métriques, exporter, dashboards, capacity planning, SLO/SLI.
GrafanaPrometheusSLOPatching & cycle de vie
OPatch, PSU/CPU, plan de maintenance, rollback, compat, inventaire.
OPatchRollbackInventoryPerformance & tuning
JVM, GC, threads, execute queues, JDBC pool, I/O, latence, profiling.
JVMGCThreadingDocker & Kubernetes Operator
Images, Domain CRD, secrets, ingress, rolling updates, scaling, dayâ2 ops.
OperatorHelmDayâ2CI/CD (Jenkins, GitOps)
Pipelines, artefacts, déploiements contrÎlés, smoke tests, approvals, rollback.
JenkinsGroovyGitOpsTroubleshooting
Logs clés, thread dumps, heap dumps, stuck threads, JDBC leaks, JMS stuck.
ThreadDumpHeapDumpStuckCheatâsheet
Commandes, WLST snippets, checklists prod, ports, fichiers, quick wins.
cmdWLSTrunbookWebLogic, câest quoi ?
Oracle WebLogic Server est un serveur dâapplications Java orientĂ© entreprise : exĂ©cution dâapplications WAR/EAR, support des APIs Java/Jakarta EE (selon versions), intĂ©grations JMS/JTA/JDBC, clustering, sĂ©curitĂ©, et tooling dâadmin.
- Usage typique : SI bancaire/assurance, middleware Oracle, SOA, applis monolithes Java, legacy modernisĂ©, contraintes dâaudit.
- Fort : robustesse, âops knobsâ trĂšs fournis, HA, gouvernance, intĂ©gration FMW.
- CoĂ»t / complexitĂ© : plus Ă©levĂ© quâun Tomcat/Jetty/Spring Boot standalone.
Versioning & repĂšres
| Objet | Ă retenir |
|---|---|
| WebLogic 14c | Version 14.1.2 disponible (installers). îciteîturn0search0îturn0search4î |
| Notes 14.1.2 | Documentation initiale publiĂ©e dĂ©c. 2024. îciteîturn0search1î |
| Interâop | CompatibilitĂ© & scĂ©narios client/serveur Ă©voluent entre 12c/14c/15c. îciteîturn0search8î |
| K8s Operator | Operator Oracle pour exĂ©cuter des domains WLS sur Kubernetes. îciteîturn0search3îturn0search13î |
Le concept de Domaine
Le Domain est lâunitĂ© de configuration : il contient les servers, clusters, deployments, resources (JDBC/JMSâŠ), sĂ©curitĂ©, logs. Il est gĂ©nĂ©ralement stockĂ© dans un rĂ©pertoire DOMAIN_HOME.
3 rĂŽles structurants
- AdminServer : console + MBeans + centre de contrĂŽle (Change Center).
- Managed Server(s) : exécution des applis et ressources.
- Node Manager : agent sur machine, start/stop/restart des servers, utile en prod/cluster.
Domain ââ AdminServer (7001) ââ ClusterA â ââ ms1 (8001) â ââ ms2 (8002) ââ Resources â ââ JDBC (DataSources) â ââ JMS (Modules, Servers) â ââ Security Realm ââ Node Manager (sur chaque machine)
Fichiers clés (prod)
| Chemin | RĂŽle |
|---|---|
DOMAIN_HOME/config/config.xml | Configuration principale du domain (à manipuler avec précaution). |
DOMAIN_HOME/servers/*/logs | Logs servers (Admin + Managed). |
DOMAIN_HOME/security/ | Boot identity, policies, realm config (selon cas). |
DOMAIN_HOME/bin/ | Scripts start/stop, setDomainEnv. |
ORACLE_HOME (binaries) et DOMAIN_HOME (config), versionner lâinfra-as-code (WLST/Ansible), et traiter le domain comme un artefact reconstruit.Services WebLogic quâon rencontre tout le temps
| Service | à quoi ça sert | Points DevOps |
|---|---|---|
| JDBC | Pools de connexions DB + transactions (XA/nonâXA). | Validation, leak detection, sizing, secrets. |
| JMS | Messaging (queues/topics), modules, destinations distribuées. | HA, quotas, stuck messages, saf/ordering. |
| JTA | Transactions distribuées. | XA tuning, timeouts, heuristics, logs. |
| Security Realm | AuthN/AuthZ (users/groups/roles/policies). | SSO, audit, least privilege. |
| MBeans | Management model (monitoring/config). | WLST, exporter metrics, automation. |
Quand WebLogic est pertinent
- ĂcosystĂšme Oracle / Fusion Middleware / SOA / OSB.
- Applications enterprise multi-modules nĂ©cessitant clustering, gouvernance, console dâadmin riche.
- Contraintes fortes : audit, traçabilité, segmentation, environnements stricts.
Quand un runtime plus léger suffit
- Microservices Spring Boot + Actuator + service mesh (K8s) : souvent plus simple et moins cher.
- Applications âstatelessâ simples : Tomcat/Jetty/Undertow.
- Si vous voulez âimmutable infraâ totale : container-first, config externalisĂ©e.
Layout recommandé (binaries vs domains)
/u01/app/oracle ââ middleware/ # ORACLE_HOME (WLS + Coherence) â ââ wlserver â ââ coherence â ââ ... ââ domains/ â ââ prod_domainA/ # DOMAIN_HOME â ââ prod_domainB/ ââ inventory/ # oraInventory (selon install)
- Principe : sĂ©parer lâinstallation (immutable-ish) de la config (domain).
- Gestion : ORACLE_HOME patché par OPatch, domain reconstruit/maßtrisé via WLST/Ansible.
- Secrets : keystores + credentials store + external secret manager (si possible).
Composants & responsabilités
| Composant | Responsabilité | Ops notes |
|---|---|---|
| AdminServer | Console, config, MBeans | Restreindre lâaccĂšs, HA via backup + fast restore |
| Managed Servers | Runtime apps/resources | Cluster, rolling restart, probes health |
| Node Manager | Start/stop serveur | Systemd service, secure listener |
| DB (JDBC) | Persistence | Pool tuning, timeouts, SSL, rotation secrets |
| LB / Ingress | Routage | Sticky sessions vs replication, TLS termination |
Ports & flux : checklist rapide
Exemple (Ă adapter)
AdminServer : 7001 (HTTP) / 7002 (HTTPS) Managed ms1 : 8001 (HTTP) / 8002 (HTTPS) Managed ms2 : 8011 (HTTP) / 8012 (HTTPS) NodeManager : 5556 (SSL) ou 5558 selon conf DB : 1521 (Oracle) / 5432 (PostgreSQL) LB/Ingress : 443 (TLS)
Flux typiques
- Clients â LB/Ingress : 443
- LB â Managed Servers : HTTP/HTTPS (internes)
- Admin console â AdminServer : rĂ©seau dâadmin uniquement
- AdminServer â Managed : management, config, monitoring
- Node Manager â servers : start/stop
Stratégies LB
- Roundârobin : ok si applis stateless ou sessions rĂ©pliquĂ©es.
- Sticky sessions : simple, mais attention aux déséquilibres et aux failovers.
- Health checks : endpoints dédiés + seuils; sortir un node avant un restart.
Pattern âzero downtimeâ
- Drain ms1 au LB
- Redeploy/restart ms1
- Warmup + smoke tests
- Reâenable ms1, puis ms2
Headers & proxy awareness
En environnement proxy/LB, vérifie :
- Headers XâForwardedâFor / XâForwardedâProto
- Réécriture des URLs, redirect HTTPS, HSTS
- Limites : taille headers, timeouts, keepalive
ContrĂŽler le drift
- Source de vérité : scripts WLST + Ansible + templates.
- Déconseillé : modifications manuelles non tracées dans la console.
- Process : PR â review â apply en environnement â validation â prod.
Git repo ââ wlst/ â ââ 10-datasources.py â ââ 20-jms.py â ââ 30-security.py â ââ 40-deploy.py ââ ansible/ â ââ roles/weblogic_domain/ â ââ inventories/prod ââ docs/runbooks/
Backups (pragmatiques)
- Snapshot
DOMAIN_HOME(hors caches/temp) + keystores. - Exporter la config âlogiqueâ via WLST (idempotent) â reconstructible.
- Pour les applis : artefacts versionnés (Nexus/Artifactory/S3).
Prérequis OS (checklist)
- Compte systÚme dédié (ex:
weblogic), droits contrÎlés. - FS : volume séparé pour
ORACLE_HOME,DOMAIN_HOME, logs. - Limits :
nofile,nprocadaptés (systemd ulimits). - Temps : NTP OK (certificats / logs / cluster).
- Réseau : DNS stable, hostnames cohérents, reverse si requis.
/u01/app/oracle propre.Artefacts officiels
Oracle fournit plusieurs installers (generic, quick, slim, etc.). îciteîturn0search0îturn0search4î
| Installer | Cas dâusage |
|---|---|
| Generic | Dev + prod (recommandĂ© si tu veux lâensemble des features). |
| Quick | Dev (rapide) â pas idĂ©al pour industrialiser. |
| Slim | Images containers (K8s) quand console/clients ne sont pas requis. îciteîturn0search4î |
Silent install (pattern)
Objectif : reproductible, non interactif, compatible CI/CD.
# 1) Préparer un JDK (ex: 17) et JAVA_HOME export JAVA_HOME=/usr/lib/jvm/java-17 export PATH=$JAVA_HOME/bin:$PATH # 2) Lancer l'installer (exemple générique) java -jar fmw_14.1.2.0.0_wls.jar -silent -responseFile /tmp/wls.rsp -invPtrLoc /tmp/oraInst.loc # 3) Vérifier l'inventaire / logs cat /u01/app/oracle/inventory/logs/*.log
.rsp) dans Git (sans secrets), et injecte le reste par variables/secret manager.Variables classiques
export ORACLE_HOME=/u01/app/oracle/middleware export WL_HOME=$ORACLE_HOME/wlserver export DOMAIN_HOME=/u01/app/oracle/domains/prod_domainA # facultatif export MW_HOME=$ORACLE_HOME export PATH=$WL_HOME/server/bin:$PATH
Les scripts setDomainEnv.sh (dans DOMAIN_HOME/bin) posent le classpath et la JVM.
Runbooks DevOps
- 1 page : âcomment dĂ©marrer/stopper proprementâ (Admin + cluster)
- 1 page : âoĂč sont les logsâ + patterns dâerreurs
- 1 page : âprocĂ©dure patch/rollbackâ
- 1 page : âprocĂ©dure incident (stuck threads / heap)â
JDK : ce que dit Oracle
WebLogic 14.1.2 est certifiĂ© pour JDK 17 et JDK 21. îciteîturn0search6î
- Choisir une LTS stable et aligner toutes les machines dâun cluster.
- Standardiser : mĂȘme vendor, mĂȘmes options JVM, mĂȘmes patchlevels.
Compat / interop
En coexistence 12c/14c/15c, vĂ©rifie les scĂ©narios dâinterop (protocoles, clients, jars). îciteîturn0search8î
Configuration Wizard (logique)
- Choisir un template (Base WLS / FMW Infrastructure / etc.)
- Définir : Domain name, Admin user, Admin port, Java options
- Créer : Managed Servers, Clusters, Machines
- Configurer : DataSources, JMS, Keystores, SSL (au moins Admin)
# Lancement typique (Linux) $ORACLE_HOME/oracle_common/common/bin/config.sh
Topologie âstarterâ (raisonnable)
MachineA - AdminServer - NodeManager MachineB - ms1 (ClusterA) - NodeManager MachineC - ms2 (ClusterA) - NodeManager + LB devant ms1/ms2
Boot identity (start sans mot de passe en clair)
Pattern : stocker les credentials chiffrĂ©s par WebLogic dans boot.properties (puis ils sont âencryptedâ au premier start).
# Exemple (à placer dans DOMAIN_HOME/servers/AdminServer/security/boot.properties) username=weblogic password=SuperSecret123 # Premier démarrage : WebLogic chiffre le password
Node Manager : rĂŽle
- DĂ©marrer/arrĂȘter/redĂ©marrer Managed Servers via AdminConsole/WLST
- Surveillance et restart contrÎlé
- Mode SSL recommandé (listener sécurisé)
# Démarrer Node Manager (selon installation) $WL_HOME/server/bin/startNodeManager.sh # Config Node Manager : DOMAIN_HOME/nodemanager/nodemanager.properties
systemd (exemple)
# /etc/systemd/system/weblogic-nodemanager.service [Unit] Description=WebLogic Node Manager After=network.target [Service] Type=simple User=weblogic Group=weblogic Environment=JAVA_HOME=/usr/lib/jvm/java-17 ExecStart=/u01/app/oracle/middleware/wlserver/server/bin/startNodeManager.sh Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target
Checklist âgoâliveâ
- â AdminServer non exposĂ©
- â TLS activĂ© (au minimum Admin + LB)
- â Logs rotation + centralisation (ELK/Opensearch/Loki)
- â JVM opts standardisĂ©s + heap sizing
- â Health endpoints + LB checks
- â Backups domain + keystores + artefacts
- â Runbooks incident + patch + rollback
- â WLST/Ansible pour reconstruction
- â ObservabilitĂ© (metrics + dashboards)
- â Tests : smoke / perf / failover
- â Least privilege (users/roles/policies)
Zones que tu vas visiter 80% du temps
- Environment â Servers (Admin/Managed, Ă©tats, ports, logs)
- Environment â Clusters (HA, membership)
- Services â Data Sources (tests connexion, pool)
- Services â Messaging (JMS) (queues, quotas, stuck)
- Deployments (targets, plans, start/stop, versions)
- Security Realms (users/groups/roles/policies/audit)
Actions âprod safeâ
- Lecture/monitoring (OK)
- Tests DataSource (OK)
- Redeploy contrÎlé (OK si process)
- Ăviter les changements non tracĂ©s (sinon drift)
Change Center : comprendre le verrou
WebLogic peut exiger un âlock & editâ avant dâappliquer certaines modifications. En prod, impose une gouvernance :
- FenĂȘtres de changement, traçabilitĂ©, qui a lockĂ©, pourquoi
- Validation (preprod) avant activation prod
- Automatisation WLST/Ansible préférée
Signaux rouges classiques
- Stuck threads / hogging threads
- JDBC pool saturation / connection leaks
- GC pauses trop longues, heap pressure
- JMS stuck messages / quotas
# Réflexe incident 1) Identifier le scope (ms1/ms2 ? cluster ?) 2) Lire logs ciblés (server + access + datasource) 3) Thread dump (si stuck) 4) Vérifier DB / réseau / LB 5) Mitigation (drain + restart node) si nécessaire
Diagnostics utiles
- Server log + access log + GC log + stdout/stderr
- Thread dumps multiâshots (3 Ă 10 secondes dâintervalle)
- Heap dump si OOM/Leak
Antiâpatterns (Ă Ă©viter en prod)
- Modifier la config Ă la main, sans PR, puis oublier â drift garanti
- Mettre AdminServer sur le mĂȘme LB que le trafic client
- Utiliser un user admin partout (pas de séparation des rÎles)
- Absence de rotation logs â disque plein â outage âbĂȘteâ
- Pas de runbook incident/patched â temps de MTTR explose
Deux modes
- Offline WLST : créer/modifier un domain sans serveur démarré (templates, config).
- Online WLST : se connecter Ă AdminServer pour piloter runtime/config.
# Online
connect('weblogic','***','t3s://adminhost:7002')
serverConfig()
cd('/Servers')
ls()Pourquoi câest âlâarme DevOpsâ
- Automatiser la console (datasources, JMS, users, deploy)
- Versionner les changements (PR, review)
- Rebuild domains (immutable mindset)
Exemples WLST (Ă adapter)
Créer une DataSource (online)
connect('weblogic','***','t3s://admin:7002')
edit(); startEdit()
cd('/')
create('AppDS','JDBCSystemResource')
cd('JDBCSystemResources/AppDS/JdbcResource/AppDS')
create('myJdbcDataSourceParams','JDBCDataSourceParams')
cd('JDBCDataSourceParams/NO_NAME_0')
set('JNDINames', jarray.array([String('jdbc/AppDS')], String))
# driver params
cd('../JDBCDriverParams/NO_NAME_0')
set('Url','jdbc:oracle:thin:@//dbhost:1521/ORCLPDB1')
set('DriverName','oracle.jdbc.OracleDriver')
set('PasswordEncrypted','***')
save(); activate()Déployer un EAR sur un cluster
connect('weblogic','***','t3s://admin:7002')
app='/artifacts/myapp-1.2.3.ear'
deploy(appName='myapp', path=app, targets='ClusterA', stageMode='stage')
# redeploy contrÎlé
# redeploy('myapp', path=app, targets='ClusterA')Idempotence : le nerf de la guerre
- Avant
create(): vĂ©rifier si lâobjet existe (ls + try/except) - Comparer la config actuelle vs dĂ©sirĂ©e (desired state)
- Ne pas stocker de secrets en clair dans Git
- Garder des scripts âpetitsâ : 1 script = 1 domaine logique
# pattern simple
try:
cd('/JDBCSystemResources/AppDS')
print('AppDS exists')
except:
cd('/')
create('AppDS','JDBCSystemResource')
print('AppDS created')WLST en CI (Jenkins)
stage('Deploy WebLogic') {
steps {
sh '''
export JAVA_HOME=/usr/lib/jvm/java-17
export ORACLE_HOME=/u01/app/oracle/middleware
$ORACLE_HOME/oracle_common/common/bin/wlst.sh wlst/40-deploy.py \
-DappVersion=${GIT_COMMIT}
'''
}
}WAR, EAR, targets
- Target : AdminServer, managed server(s), cluster.
- Stage mode : stage / nostage / external_stage (selon infra).
- Libraries : shared libs, attention au coupling/upgrade.
Checklist dĂ©ploiement âsafeâ
- â Artefact immuable (build unique)
- â Config externalisĂ©e (plans/env vars)
- â Smoke tests post-deploy
- â Rollback rapide (artefact prĂ©cĂ©dent)
Deployment Plan : séparer code et config
Le plan permet de surcharger des paramĂštres (ex: URLs, JNDI) sans rebuild lâEAR.
# Exemple : myapp.ear myapp-plan.xml # Déploiement # (console ou wlst deploy(..., planPath='myapp-plan.xml'))
Rolling update (cluster)
- Drain ms1 (LB) â redeploy sur ms1 â warmup
- Re-enable ms1
- Drain ms2 â redeploy sur ms2 â warmup
- Re-enable ms2
Artefacts & repo
- Nexus/Artifactory/S3 : stocker
myapp-1.2.3.ear - Taguer : version + git sha + build id
- Conserver N versions (N=20) pour rollback rapide
# Naming robuste myapp-1.2.3+sha.4f2c1a7.ear myapp-plan-prod.xml myapp-plan-preprod.xml
ParamÚtres pool (mnémo)
| ParamĂštre | But | Conseil |
|---|---|---|
| Initial/Min/Max | Capacité pool | Dimensionner sur load + DB limits |
| Connection Reserve Timeout | Timeout dâattente | DĂ©tecter saturation rapidement |
| Test On Reserve | Valider connexion | Ăviter connexions mortes |
| Inactive Connection Timeout | Recycler idle | Réduit leaks invisibles |
AntiâpiĂšges
- Pool max trop Ă©levĂ© â DB sâĂ©croule (trop de sessions)
- Pas de tests â erreurs alĂ©atoires aprĂšs failover DB
- Timeouts incohérents (appli vs WLS vs DB vs LB)
XA vs nonâXA (rĂ©sumĂ©)
- NonâXA : plus simple, plus rapide, pas de transaction distribuĂ©e.
- XA : transactions distribuĂ©es (JTA) â plus complexe, logs, timeouts, heuristics.
Tests & monitoring
- Utiliser âTest Data Sourceâ en console (prĂ©-prod/prod)
- Surveiller : Active connections, waiting, failures, leaks
- Alertes : âreserve timeoutâ et âpool exhaustedâ
# Runbook incident JDBC 1) Vérifier DB (latence, sessions) 2) Vérifier pool (max, waiting) 3) Réduire load (LB) / scale cluster 4) Identifier leak (threads/stack) 5) Fix app + redeploy
Secrets & mots de passe
- Ăviter de committer des passwords dans des scripts
- Utiliser un coffre (Vault/ASM/Secret Manager) + injection runtime
- Permissions FS strictes sur
DOMAIN_HOMEet keystores
ModĂšle mental JMS WebLogic
- JMS Server : héberge les messages (souvent ciblé sur un Managed Server)
- JMS Module : dĂ©finit queues/topics, connection factoriesâŠ
- Subdeployments : mapping module â JMS Server(s)
Points dâattention
- Quotas (bytes/messages)
- Redelivery / error destination
- Transactions (JTA) et timeouts
Distributed Queue/Topic
Pour HA/scalabilité : distribuer les destinations sur plusieurs JMS Servers.
ClusterA JMS Server on ms1 -> member1 JMS Server on ms2 -> member2 Distributed Queue -> member1 + member2
SAF (StoreâandâForward)
SAF sert Ă bufferiser/relayer des messages quand une destination distante nâest pas disponible.
- Utile pour interâdomain / interâDC, tolĂ©rance rĂ©seau
- Surveiller la taille des stores et les backlogs
Runbook JMS incident (exemple)
SymptÎme: producers bloqués / queue qui grossit 1) Vérifier quotas / pause / production rate 2) Vérifier consumers (alive? backlog?) 3) Vérifier transactions / timeouts 4) Vérifier store (disk full?) 5) Mitigation: scale consumers, augmenter quotas, purge contrÎlée (si validée) 6) Post-mortem: cause racine (bug consumer, slow DB, etc.)
Deux grandes approches
- Stateless : le plus simple â LB roundârobin, scale horizontal.
- Stateful : nécessite sticky sessions ou replication/HA store.
Composants HA
- LB + health checks
- Cluster membership + monitoring
- Node Manager + redémarrage contrÎlé
- Backends HA (DB, JMS stores)
Sessions HTTP : sticky vs replication
| Option | Avantages | Inconvénients |
|---|---|---|
| Sticky LB | Simple, performant | Failover session = potentiellement perdu |
| Replication | Meilleur failover | Overhead réseau/CPU, complexité |
Migrations / failover
- Planifier : quelles ressources migrent (JMS, etc.)
- Tester : âkill -9 ms1â, observer bascule
- Documenter : temps de RTO, RPO
Rolling restart (procédure)
Pour chaque managed server: 1) Drain au LB 2) Stop via WLST/Console (graceful) 3) Start via Node Manager 4) Vérifier health + logs 5) Réintégrer au LB
Start/Stop : rĂšgles simples
- Démarrer Node Manager
- Démarrer AdminServer
- Démarrer Managed Servers (un à un) / cluster
- Vérifier health, logs, datasources, JMS
# Stop (graceful) 1) Drain LB 2) stop managed servers 3) stop AdminServer 4) stop Node Manager
Logs utiles (oĂč regarder)
| Type | Emplacement | Quand |
|---|---|---|
| Server log | DOMAIN_HOME/servers/*/logs/*.log | Erreurs runtime |
| Access log | selon conf (server/logs) | Trafic HTTP, codes |
| Stdout | DOMAIN_HOME/servers/*/logs/*.out | Start, exceptions |
| GC log | selon JVM opts | Pauses, tuning |
Rotation : Ă©viter lâoutage âdisque pleinâ
- Activer rotation native + logrotate OS si besoin
- Centraliser (ELK/Opensearch/Loki) : plus simple pour incident
- Mettre des alertes : disk usage > 80%
Runbook minimal (1 page)
- URL Admin (VPN) : https://adminhost:7002/console - URL App (LB) : https://app.example.com - Start: nodemanager -> admin -> managed - Stop : drain LB -> managed -> admin -> nodemanager - Logs: DOMAIN_HOME/servers//logs - Incident stuck: thread dumps x3 + vérifier JDBC + GC - Rollback: redeploy version N-1 + restart node (si requis)
ModĂšle : users/groups/roles/policies
- Users/Groups : identité
- Roles : agrégation de permissions (souvent dynamique)
- Policies : rĂšgles dâaccĂšs aux ressources
Gouvernance recommandée
- Compte âops-readonlyâ (monitoring)
- Compte âops-deployâ (deploy/redeploy)
- Compte âsecurity-adminâ (certs, realm)
- Audit activé + logs centralisés
TLS : points clés
- Choisir : terminaison TLS au LB ou endâtoâend (LB â managed en TLS)
- Keystore/truststore : rotation planifiée
- Désactiver suites obsolÚtes, forcer TLS 1.2+ (selon politique)
# JVM opts (exemples) -Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.2 -Dhttps.protocols=TLSv1.2,TLSv1.3
SSO : SAML / OIDC (selon intégration)
- Centraliser lâidentitĂ© (IdP) : Azure AD / Okta / KeycloakâŠ
- DĂ©finir les claims/groupes â rĂŽles WebLogic
- Tester la révocation / rotation certificats / clock skew
Hardening (quick wins)
- Admin derriĂšre VPN/ZTNA, ACL strictes
- Patch cycle : CPU/PSU planifié (voir modal patching)
- Désactiver services inutiles, samples en prod = NON
- Secrets hors Git, permissions FS minimales
- Audit log activé + SIEM si possible
KPIs utiles (prod)
| Domaine | Mesures | Alertes |
|---|---|---|
| HTTP | RPS, latence p95/p99, 4xx/5xx | 5xx spikes, p99 > seuil |
| JVM | Heap, GC pauses, threads | GC thrash, OOM risk |
| JDBC | Active/waiting, failures | pool exhausted |
| JMS | queue depth, consumers | backlog growth |
Exporter & K8s operator
Sur Kubernetes, lâOperator aide Ă dĂ©ployer/manager des domains WLS. îciteîturn0search3îturn0search13î
Dashboards Grafana : sections suggérées
- Vue âserviceâ : latences / erreurs / saturation
- Vue âclusterâ : Ă©tat nodes, restarts, readiness
- Vue âJVMâ : heap/GC/threads
- Vue âJDBC/JMSâ : pools + queues
SLO/SLI (simple)
- SLI : % requĂȘtes rĂ©ussies (2xx/3xx) sur 30j
- SLO : 99.9% de succĂšs + p95 < 300ms (exemple)
- Error budget : pilote la fréquence de changements
Approche âsafeâ
- Pré-prod toujours patchée avant prod
- FenĂȘtre de maintenance + runbook + rollback
- Automatisation (Ansible) + validation (smoke/perf)
OPatch : pattern générique
# 0) Backup ORACLE_HOME + DOMAIN_HOME (ou snapshot) # 1) Stop servers (managed -> admin) # 2) OPatch inventory $ORACLE_HOME/OPatch/opatch lsinventory # 3) Apply patch $ORACLE_HOME/OPatch/opatch apply # 4) Start + validation # - logs clean # - smoke tests # - dashboards OK
Rollback : plan B
- Préparer la commande / procédure avant de patcher
- Conserver les artefacts patchs et lâĂ©tat dâinventaire
- Tester rollback en pré-prod au moins une fois
Compatibilité / interop
VĂ©rifier les scĂ©narios dâinterop entre versions (clients, protocoles). îciteîturn0search8î
JVM sizing (rĂšgles pragmatiques)
- Heap trop petit â GC frĂ©quents, latence
- Heap trop grand â pauses longues, OOM si fragmentation/leak
- Standardiser les options sur tout le cluster
# Exemples (Ă adapter) -Xms4g -Xmx4g -XX:+UseG1GC -Xlog:gc*:file=/var/log/weblogic/gc.log:time,uptime,level,tags
GC : lire les logs
- Suivre p95/p99 des pauses
- CorrĂ©ler : pics latence HTTP â GC pauses
- Surveiller allocation rate
Threads : stuck/hogging
- Thread dumps + identification des verrous (locks)
- Souvent cause : DB lente, appel externe lent, deadlock app
Méthodologie tuning
- Définir SLO (latence/erreurs)
- Mesurer baseline
- Changer 1 paramĂštre Ă la fois
- Rejouer charge
- Documenter décisions
Pourquoi un Operator ?
LâOperator gĂšre le cycle de vie des domains WebLogic sur Kubernetes : dĂ©ploiement, scaling, rolling, etc. îciteîturn0search3îturn0search13î
- Encapsuler WLS + applis dans des images portables
- DĂ©clarer lâĂ©tat dĂ©sirĂ© via CRD
- Automatiser les opĂ©rations dayâ2
RepĂšres versions
Le repo Operator publie des releases rĂ©guliĂšres (ex: 4.x). îciteîturn0search13î
Images : pattern
# 1) Base image WebLogic (selon recommandations Oracle) # 2) Copier l'app (EAR/WAR) + plan # 3) Injecter scripts init / config # 4) Secrets via K8s Secret (pas dans l'image) # Tag immuable registry/myweblogic:app-1.2.3-sha4f2c1a7
Domain CRD (trÚs simplifié)
apiVersion: "weblogic.oracle/v9"
kind: Domain
metadata:
name: prod-domain
spec:
domainHomeSourceType: Image
image: registry/myweblogic:app-1.2.3
replicas: 2
serverPod:
env:
- name: JAVA_OPTIONS
value: "-Xms4g -Xmx4g"
adminServer:
adminService:
channels:
- channelName: default
clusters:
- clusterName: ClusterA
replicas: 2Dayâ2 Ops : checklist
- Rolling upgrade : image tag â apply â observe
- Backups : artefacts + config + secrets rotation
- Observabilité : exporter + dashboards
- Incident : kubectl logs / describe / events + thread dumps si nécessaire
Pipeline âpropreâ
- Build (Maven/Gradle) â unit tests
- Package EAR/WAR â publish artifact
- Deploy preprod â smoke + perf quick
- Approval â deploy prod (rolling)
- Post-deploy validation + dashboards
Jenkinsfile (squelette)
pipeline {
agent any
stages {
stage('Build') {
steps { sh 'mvn -q -DskipTests=false test package' }
}
stage('Publish') {
steps { sh 'cp target/myapp.ear artifacts/' }
}
stage('Deploy Preprod') {
steps { sh 'wlst.sh wlst/40-deploy.py --env preprod' }
}
stage('Smoke') {
steps { sh 'curl -fsS https://preprod/app/health' }
}
stage('Deploy Prod') {
when { branch 'main' }
steps { sh 'wlst.sh wlst/40-deploy.py --env prod --rolling' }
}
}
}Tests indispensables
- Smoke HTTP (health endpoints)
- Validation JDBC (connectivité)
- Sanity JMS (producer/consumer minimal)
- Temps de réponse p95 sous seuil
Rollback (simple & rapide)
# si prod KO post-deploy 1) redeploy artefact N-1 2) rolling restart si besoin 3) post-mortem + blocage du déploiement
Lecture logs : ordre conseillé
- Access logs (5xx/latences)
- Server logs (exceptions)
- GC logs (pauses)
- DB logs/metrics (latence/sessions)
Thread dumps : méthode
1) Prendre 3 dumps Ă 10s dâintervalle 2) Chercher : mĂȘmes threads bloquĂ©s ? mĂȘmes locks ? mĂȘmes stacks ? 3) Identifier la dĂ©pendance : DB / HTTP externe / lock applicatif 4) Mitigation : drain + restart dâun node si nĂ©cessaire
Heap dumps : quand
- OOMError
- Heap monte sans redescendre (leak probable)
- Analyse avec MAT/YourKit (selon politique)
Cas frĂ©quents â actions
| SymptĂŽme | Cause probable | Action |
|---|---|---|
| Stuck threads | DB lente / appel externe | thread dumps + vérifier pool JDBC |
| 5xx en spike | deploy, config drift, DB | rollback + logs + dashboards |
| Queue JMS grossit | consumer lent/KO | scale consumers, vérifier quotas |
| GC pauses | allocation rate/leak | GC logs + heap analysis |
Commandes & chemins
# Wizard $ORACLE_HOME/oracle_common/common/bin/config.sh # WLST $ORACLE_HOME/oracle_common/common/bin/wlst.sh # Domain scripts $DOMAIN_HOME/bin/startWebLogic.sh $DOMAIN_HOME/bin/stopWebLogic.sh # Logs $DOMAIN_HOME/servers/*/logs # Node Manager $WL_HOME/server/bin/startNodeManager.sh
Ports (exemple)
Admin: 7001/7002 Managed: 8001/8002 ... NodeMgr: 5556
Checklists express
Avant déploiement
- Artefact immuable + plan env
- LB drain possible
- Dashboards prĂȘts
- Rollback N-1 dispo
AprÚs déploiement
- Smoke tests OK
- 5xx stables
- JDBC pool OK
- Queues JMS stables
Snippets WLST âraccourcisâ
# Connexion
connect('weblogic','***','t3s://admin:7002')
# Lister servers
serverConfig(); cd('/Servers'); ls()
# Deploy
deploy(appName='myapp', path='/artifacts/myapp.ear', targets='ClusterA')
# Redeploy
# redeploy('myapp', path='/artifacts/myapp.ear', targets='ClusterA')