oracle weblogic for devops

36
DOAG 2013 Konferenz+Ausstellung Andreas Koop Geschäftsführung & Consulting WEBLOGIC FOR DEVOPS

Upload: andreas-koop

Post on 03-Jul-2015

574 views

Category:

Documents


2 download

DESCRIPTION

Presentation on Oracle WebLogic Server with focus on DevOps strategy at DOAG 2013 (#doag2013) by Andreas Koop (@enpit).

TRANSCRIPT

Page 1: Oracle WebLogic for DevOps

DOAG 2013 Konferenz+Ausstellung

Andreas KoopGeschäftsführung

& Consulting

WEBLOGIC FOR DEVOPS

Page 2: Oracle WebLogic for DevOps

Andreas KoopGeschäftsführung

& ConsultingÜBER MICH

Beratung, Training Oracle TechnologieADF Certified Implementation Specialist

CommunityDOAG, ADF EMG, ADF German Community, Twitter @multikoop

BlogTechnical http://multikoop.blogspot.comSonstiges http://www.enpit.de/blog

2

Page 3: Oracle WebLogic for DevOps

Training DevelopmentConsultingOracle Business

IntelligenceOracle ADFADF Mobile

OracleWebLogic

OracleWebCenter

ENTERPRISE PRAGMATIC IT

Oracle Fusion Middleware

3

Page 4: Oracle WebLogic for DevOps

Andreas Koop

AGENDA

Wer oder Was ist „DevOps“?

WebLogic „DevOps Features“ Silent Install, JMX, WLST, RESTful Services

Automatisierung mit Vagrant und Puppet

Fazit

4

Page 5: Oracle WebLogic for DevOps

Andreas Koop

KNACKPUNKTE

5

Entwicklung / Integration

Betrieb

AntMavenGradle

wldeploy1x Umgebung...

BashPerl

WLST

10+x Umgebungen...

StabilPerformant

24x7 VerfügbarLogging

Monitoring

Page 6: Oracle WebLogic for DevOps

Andreas Koop

KNACKPUNKTE ZWISCHEN ENTWICKLUNG UND BETRIEB‣ „Silo-Denke“ - Meist keine übergreifende

Zusammenarbeit vorhanden

‣ Es werden meist unterschiedliche Ziele verfolgt (New Features / Versions <-> Gesicherter Lifecycle)

‣ Unterschiedliche Definition von „Fertig!“

‣ Automatisierung unzureichend genutzt

‣ Veränderungswille oft nicht gegeben6

Page 7: Oracle WebLogic for DevOps

Andreas Koop

HERAUSFORDERUNGEN IM BETRIEB GROßER APPS‣ Provisionierung von „Maschinen“

‣ Konfiguration von Servern

‣ Deployment von Apps

‣ (Performance) Monitoring

‣ Hochverfügbarkeit

7

Page 8: Oracle WebLogic for DevOps

Andreas Koop

DEVOPS WIRD GEBOREN

8

Quality AssuranceDev

elopm

ent

Operations

DevOps

Quelle: http://www.collab.net/solutions/devops

plan code build test release deploy operate

Agile Development

Continuous Integration

Continuous Delivery

DevOps

Page 9: Oracle WebLogic for DevOps

Andreas Koop

DEVOPS IST...‣ Ganzheitliche Betrachtung von

Entwicklung und Betrieb

‣ Konfliktminimierung

‣ „Environment as Code“

‣ Automatisierung von Build Test, Release, Deployment

9

Page 10: Oracle WebLogic for DevOps

Andreas Koop

AGENDA

Wer oder Was ist „DevOps“?

WebLogic „DevOps Features“ Silent Install, JMX, WLST, RESTful Services

Automatisierung mit Vagrant und Puppet

Fazit

10

Page 11: Oracle WebLogic for DevOps

Andreas Koop

WEBLOGIC „DEVOPS FEATURES“‣ Silent Installation

‣ JMX MBean Zugang

‣ WLST (Scripting Tool)

‣ Deployment Plans

‣ RESTful Management Services

11

Page 12: Oracle WebLogic for DevOps

Andreas Koop

WEBLOGIC SILENT INSTALLATION (1/2)‣ WebLogic Version < 12.1.2

java -jar wls1036_generic.jar -mode=silent -silent_xml=silent.xml

12

<bea-installer> <input-fields> <data-value name="BEAHOME" value="/opt/oracle/middleware" /> <data-value name="WLS_INSTALL_DIR" value="/opt/oracle/middleware/wlserver_10.3" /> <data-value name="COMPONENT_PATHS" ! value="WebLogic Server/Core| usw.." /> ... <!-- For Windows Installationa -->

<data-value name="INSTALL_NODE_MANAGER_SERVICE" value="yes" /> <data-value name="NODEMGR_PORT" value="5559" /> <data-value name="INSTALL_SHORTCUT_IN_ALL_USERS_FOLDER" value="yes"/>

<!-- <data-value name="LOCAL_JVMS"! value="/opt/oracle/jrockit_160_05"/> -->

</input-fields> </bea-installer>

Weitere Parameter: http://docs.oracle.com/cd/E24329_01/doc.1211/e24492/silent.htm

Page 13: Oracle WebLogic for DevOps

Andreas Koop

WEBLOGIC SILENT INSTALLATION (2/2)‣ WebLogic Version >= 12.1.2

java -jar wls_121200.jar -silent -response /home/oracle/install/wls.rsp

13

[ENGINE] #DO NOT CHANGE THIS.Response File Version=1.0.0.0.0 [GENERIC] #The oracle home location. This can be an existing Oracle Home or a new Oracle HomeORACLE_HOME=/opt/oracle/middleware #Set this variable value to the Installation Type selected. e.g. WebLogic Server, Coherence, Complete with Examples.INSTALL_TYPE=WebLogic Server...

Weitere Parameter: http://docs.oracle.com/middleware/1212/core/OUIRF/silent.htm

Page 14: Oracle WebLogic for DevOps

Andreas Koop

JMX MBEANS‣ Java Management Extension

‣ MBeans haben Attribute und Operationen

‣ WebLogic MBeans bieten Zugang zuKonfigurations- und Laufzeitdaten

14

JMX ermöglicht erst die vollständige Automatisierung von WebLogic Konfigurationen & Monitoring !

Page 15: Oracle WebLogic for DevOps

Andreas Koop

JMX TOOLS‣ Prominent Tools

WLS Admin Console, EM, JConsole, WLST

‣ Less prominent

‣ WLS RESTful Management Services

‣ Jolokia*Remote JMX with JSON over HTTP

‣ wlsagent**Nagios Plugin by remote JMX over HTTP

15

*: http://www.jolokia.org**:https://code.google.com/p/wlsagent/

Page 16: Oracle WebLogic for DevOps

Andreas Koop

JMX JAVA CLIENT (1/2)‣ Open JMX Connection

16

...Map<String, String> map = new HashMap<String,String>();

// User credentialsmap.put(Context.SECURITY_PRINCIPAL, "weblogic");map.put(Context.SECURITY_CREDENTIALS, "welcome1");

// Use a t3 connector with a 20 seconds timeoutmap.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote");map.put("jmx.remote.x.request.waiting.timeout", "20000");

// We build the URL with the sample 'hostname' and 'port' paramsJMXServiceURL url = new JMXServiceURL("service:jmx:t3://adminhost:7001/jndi/weblogic.management.mbeanservers.runtime");connector = JMXConnectorFactory.connect(url, map);connection = connector.getMBeanServerConnection();...

Page 17: Oracle WebLogic for DevOps

Andreas Koop

JMX JAVA CLIENT (2/2)‣ Read MBean Attributes (Sample: ServerRuntime)

17

// Obtain reference to WebLogic server MBean - ServerRuntimeObjectName serverRuntimeMBean = (ObjectName)connection.getAttribute(new ObjectName("com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean"), "ServerRuntime");

// Sample output: ManagedServer1 String serverName = (String)connection.getAttribute(serverRuntimeMBean, "Name");

// Sample output: RUNNINGString serverState = (String)connection.getAttribute(serverRuntimeMBean, "State");...

Page 18: Oracle WebLogic for DevOps

Andreas Koop

WEBLOGIC SCRIPTING TOOL‣ Jython basierte Scriptsprache zur Automatisierung jeglicher WebLogic

Administrationsaufgabe

‣ Read / Write MBeans

‣ Offline

‣ ~ ConfigurationWizard

‣ Online

‣ ~ Administration Console

18

Page 19: Oracle WebLogic for DevOps

Andreas Koop

DOMAIN ERSTELLEN

19

readTemplate(os.environ['WL_HOME'] + '/common/templates/domains/wls.jar')cd('/')cmo.setName('my_domain')cd('Servers/AdminServer')cmo.setListenAddress( 'All Local Addresses' )cmo.setListenPort( int(ADMIN_PORT) )cd( '/' )cd( 'Security/'+DOMAIN_NAME+'/User/' + ADMIN_USER ) cmo.setPassword( ADMIN_PWD )cd('/')setOption( 'JavaHome', os.environ['JAVA_HOME'] ) setOption( "ServerStartMode", "prod")setOption( "OverwriteDomain", "true" )

writeDomain( DOMAIN_DIR )closeTemplate()

Current Management Object

Page 20: Oracle WebLogic for DevOps

Andreas Koop

HOW TO DEPLOY

20

connect('weblogic', 'welcome1', ADMIN_URL)

deploy('myApp', '/path/to/myApp.ear', targets='Cluster1')# targets='Server1'startApplication('myApp')

disconnect()exit()

Page 21: Oracle WebLogic for DevOps

Andreas Koop

HANDLING DIFFERENT ENV REQUIREMENTS WITH PLANS

21

Development Test Production

DataSource DataSource DataSource

plan.xml

web.xml -> session-timeout = 3600

weblogic.xml -> ...

plan.xml

web.xml -> session-timeout = 60

weblogic.xml -> ...

plan.xml

web.xml -> session-timeout = 7200

weblogic.xml -> ...

EAR EAR EAR

......

deploy deploy deploy

+ ++

Page 22: Oracle WebLogic for DevOps

Andreas Koop

WEBLOGIC RESTFUL MANAGEMENT SERVICES‣ Abfrage per REST-URL (XML oder JSON) von

Server StatusApplicationsClustersData Sources

‣ Vorherige Aktivierung in der Admin Console notwendig

22

Page 23: Oracle WebLogic for DevOps

Andreas Koop

WEBLOGIC RESTFUL MANAGEMENT SERVICES‣ http://host:port/management/tenant-monitoring/

servers

‣ Test-Client http://host:port/management/ajaxtest.html

23

Page 24: Oracle WebLogic for DevOps

Andreas Koop

AGENDA

Wer oder Was ist „DevOps“?

WebLogic „DevOps Features“ Silent Install, JMX, WLST, RESTful Services

Automatisierung mit Vagrant und Puppet

Fazit

24

Page 25: Oracle WebLogic for DevOps

Andreas Koop

Konfigurations-werkzeug

JDeveloper

Tools

DATABASE_TEST

WLS_DOMAIN_TEST

DATABASE_INT

WLS_DOMAIN_INT

DATABASE_PROD

WLS_DOMAIN_PROD

HERAUSFORDERUNG GLEICHE UMGEBUNGEN

DevVMTemplate

TestVMTemplate

ProdVMTemplate

VM Provisioning Service

Konfiguration

Konfiguriert und Überwacht

Stellt Basismaschine bereit

Page 26: Oracle WebLogic for DevOps

Andreas Koop

DevVMTemplate

TestVMTemplate

ProdVMTemplate

VM Provisioning Service

Konfiguriert und Überwacht

VM PROVISIONING SERVICE‣ Virtualisierung ermöglicht das schnelle

bereitstellen von Laufzeitumgebungen

‣ Basis für die Anforderung von GLEICHEN Umgebungen

‣ Warum nicht dieses Verfahren auch für Entwicklungsumgebung und Entwickler-Rechner nutzen ?

Beispieltool:

www.vagrantup.com

Page 27: Oracle WebLogic for DevOps

Andreas Koop

Konfigurations-werkzeug

KONFIGURATIONSWERKZEUG

Konfiguration

‣ Umgebungen sind vielzählig und unterliegen einem Wandel (Versionen, Patches, etc)

‣ Wieviele Administratoren werden benötigt, um den Betrieb von 10 Rechner eines Systems im Aufbau GLEICH zu halten ?

‣ Notwendigkeit: Automatisierung, Dokumentation, Konfiguration und Überwachung !

Beispieltool:

https://forge.puppetlabs.com/biemond/orautilsOracle PlugIns für puppet von Edwin Biemond

Page 28: Oracle WebLogic for DevOps

Andreas Koop

KONFIGURATIONS-MANAGEMENT MIT PUPPET‣ Automatisierung von Konfigurationen von

Computer SystemenUsers, Groups, Services, Packages, Deployments, etc..

‣ Verteilung im Netzwerk

28

user { 'oracle': ensure => 'present', home => '/home/oracle', shell => '/bin/bash'...}

host {"node1": ip => "10.10.0.101", host_aliases => ['node1.sample.com','node1']}

...

Master

NodeNode

Node

...

Page 29: Oracle WebLogic for DevOps

Andreas Koop

WLS PUPPET SAMPLE

29

https://forge.puppetlabs.com/biemond/orautilsBased on: Oracle PlugIns für puppet von Edwin Biemond

Page 30: Oracle WebLogic for DevOps

Andreas Koop

VAGRANT / PUPPET / WEBLOGIC SINGLE NODE

30

Local machineOracle VirtualBox

Software Repository (jdk, weblogic_121200.jar)

Source Repository(Github)

Vagrant

Git

Virtual Machine

VM Template Repository (centos64.box, oel64.box,...)

Puppet

Shared folders/vagrant/software

JDK

WLS

WLS Domain

Page 31: Oracle WebLogic for DevOps

Andreas Koop

VAGRANT / PUPPET / WEBLOGIC MULTIPLE NODES

31

Local machineOracle VirtualBox

Software Repository (jdk, weblogic_121200.jar)

Source Repository(Github)

Vagrant

Git

VM Template Repository (centos64.box, oel64.box,...)

...

...

Node1

Node2

NodeAdmin

Page 32: Oracle WebLogic for DevOps

Andreas Koop

MASTER IMAGES MIT PACKER ERSTELLEN‣ Identische VM Images aus Konfiguration erstellen

‣ Multi-Provider SupportVagrant BoxesVMWare Image TemplatesAmazon AMI

32

w w w . p a c k e r . i o

{"builders": [{ "type": "virtualbox", "iso_url": "...ubuntu-12.04.2-server-amd64.iso" }, ... ], [{ "type": "vmware", "iso_url": "...ubuntu-12.04.2-server-amd64.iso" }, ... ], [{ "type": "amazon-instance", "source_ami": "ami-d9d6a6b0" }, ... ],...}

...

VirtualBox Image(for Development e.g.)

VMWare Image(for Development e.g.)

Amazon EC2 Image(for Production e.g.)

...

...

Page 33: Oracle WebLogic for DevOps

Andreas Koop

FAZIT‣ WebLogic Installation / Patching / Konfiguration /

Monitoring lässt sich sehr gut automatisieren

‣ WebLogic Umgebungen „auf Knopfdruck“ möglich mit Vagrant, Puppet und WLST

‣ Höherer Aufwand zu Beginn

‣ Sehr hoher Nutzen mittelfristigRisikominimierungContinous Delivery

33

Page 34: Oracle WebLogic for DevOps

Andreas Koop

WEITERE INFORMATIONEN‣ Was ist DevOps?

http://radar.oreilly.com/2012/06/what-is-devops.html

‣ Accessing WebLogic Server MBeans with JMXhttp://docs.oracle.com/middleware/1212/wls/JMXCU/accesswls.htm

‣ Oracle RESTful Management Serviceshttp://www.oracle.com/technetwork/articles/soa/oliveira-wls-rest-javafx-1723982.htmlhttp://multikoop.blogspot.de/2011/12/restful-management-services-in-oracle.html

‣ Vagrant / Puppet / WLShttp://multikoop.blogspot.de/2013/11/setup-weblogic-12c-environment-with.html

34

Page 35: Oracle WebLogic for DevOps

VIELEN DANK FÜR IHRE AUFMERKSAMKEIT

HABEN SIE NOCH FRAGEN?

Page 36: Oracle WebLogic for DevOps