Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Web logic multi tenancy fundamentals

200 views

Published on

Web logic multi tenancy fundamentals

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Web logic multi tenancy fundamentals

  1. 1. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 1 Principios básicos de las arquitecturas multitenant en WebLogic Chanda Patel Tim Quinn Product Development, Oracle Marzo/abril de 2016 Aguarde un momento por favor. La sesión comenzará en breve en el horario señalado en el programa. Muchas gracias.
  2. 2. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Temario • Conceptos clave, casos de uso • Grupos de recursos, plantillas de grupos de recursos • Targeting (determinación de destinos), destinos virtuales • Ciclo de vida de particiones • Demo
  3. 3. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Conceptos clave • Funcionalidad multitenant (MT) Capacidad de admitir diversos tenants en una única instancia de software • Partición Una porción virtual de un dominio de WLS. Las particiones son los módulos básicos de la funcionalidad MT en WLS
  4. 4. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Conceptos clave • Microcontenedor de WLS • Cada una se configura y se administra por separado – Configuración de seguridad – Puesta en marcha y apagado – Implementación de aplicaciones, recursos – Targeting – Administradores • ... pero pueden compartir servidores administrados Partición
  5. 5. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Conceptos clave Traffic Director Servidor WebLogic Partición 1 Destino virtual App App Serv. JMS Origen de datos Interfaz JNDI Coherencia Servicio 1 Servicio 2 … Servicio N Partición 1 Base de datos Partición 2 Destino virtual App App Serv. JMS Origen de datos Interfaz JNDI Partición 2
  6. 6. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Caso de uso de PaaS • PaaS (Consolidación) –Consolidación de diversos dominios de WLS en numerosas particiones de un dominio de WLS –Cada dominio antiguo se convierte en tenant del nuevo dominio • Ejemplo con departamentos: –Partición de RRHH (HR) –Partición de Finanzas • Ejemplo con desarrolladores –Partición de John Smith –Partición de Lisa Johnson
  7. 7. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Caso de uso de SaaS • SaaS –Todos los tenants ejecutan el mismo software –El software se define en el dominio, pero se implementa por partición • Ejemplo • Partición de Atención al cliente de Coca-Cola • Partición de Atención al cliente de Pepsi
  8. 8. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos
  9. 9. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • Grupo de recursos (RG) –Conjunto de recursos relacionados e implementaciones de aplicaciones –Cada RG que pertenece a un dominio o partición –Unidad de targeting • Plantilla de grupo de recursos (RGT) –Agrupaciones de recursos reutilizadas, implementaciones de aplicaciones –Un grupo de recursos puede referirse a una RGT Reseña
  10. 10. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • SaaS (software como servicio) –“Software” = aplicaciones + recursos definidos en RGT –Las particiones contienen grupos RG que se refieren a plantillas RGT –Cada partición puede invalidar atributos de recursos de manera diferente • PaaS (plataforma como servicio) –“Plataforma” = WLS expuesto como partición –Los grupos RG (no RGT) incluyen implementaciones de recursos y aplicaciones –Partición ≈ "dominio virtualizado" SaaS vs. PaaS
  11. 11. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • ///Procedimiento similar a la creación de recursos, implementación de aplicaciones en un dominio en 12.1.3, excepto: –SaaS: • Creación de recurso en plantilla de grupo de recursos • Implementación de aplicaciones en plantilla de grupo de recursos –PaaS: • Creación de recurso en grupo de recursos • Implementación de aplicaciones en grupo de recursos Creación de recursos e implementación de aplicaciones
  12. 12. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos startEdit() template = domain.createResourceGroupTemplate('T1') mailSession=template.createMailSession('mailSess1') mailSession.setJNDIName('mail/sess1') props=Properties() props.setProperty('mail.user', 'joe') props.setProperty('mail.host','mail.mycompany') mailSession.setProperties(props) activate() SaaS: Creación de recursos
  13. 13. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos startEdit() progress=deploy(appName='appName', path='pathToAppArchive', resourceGroupTemplate=template.getName(), deploymentOrder=10,securityModel='DDOnly') activate() while not (progress.isCompleted() or progress.isFailed()) : os.time.sleep(2) progress.printStatus() SaaS: Implementación de aplicaciones
  14. 14. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos startEdit() newPart = domain.createPartition('pepsi') # set up partition targeting – see later sections rg = newPart.createResourceGroup('rg-1') rg.setUseDefaultTarget(true) rg.setResourceGroupTemplate(template) activate() startPartitionWait(newPart) SaaS: Creación de partición, grupo de recursos Procedimiento similar para otras particiones
  15. 15. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos startEdit() hrPart = domain.createPartition('HR') # set up partition targeting – see later sections rg = hrPart.createResourceGroup('rg-1') rg.setUseDefaultTarget(true) PaaS: Creación de partición, grupo de recursos
  16. 16. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos mailSession=rg.createMailSession('mailSess1') mailSession.setJNDIName('mail/sess1') props=Properties() props.setProperty('mail.user', 'joe') props.setProperty('mail.host','mail.mycompany') mailSession.setProperties(props) activate() PaaS: Creación de recursos
  17. 17. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos startEdit() progress=deploy(appName='appName', path='pathToAppArchive', partition='HR', resourceGroup='rg-1', deploymentOrder=10,securityModel='DDOnly') activate() while not (progress.isCompleted() or progress.isFailed()) : os.time.sleep(2) progress.printStatus() startPartitionWait(hrPart) PaaS: Implementación de aplicaciones
  18. 18. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • El administrador puede personalizar los recursos para cada partición –En la plantilla se especifican los atributos de los recursos –Cada partición puede invalidar atributos de manera diferente • Principales tipos –///Beans de configuración para invalidación –Planes de implementación de recursos –Planes de implementación de aplicaciones para particiones específicas Invalidación de recursos (SaaS)
  19. 19. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • Definición en el nivel de la partición • Emparejamiento con los recursos correspondientes • Para cada partición: –WLS usa los valores de invalidación de la partición en lugar de los valores de la plantilla para las copias de recursos de esa partición • Se simplifican las personalizaciones más frecuentes Invalidación de recursos: ///beans de configuración para invalidación
  20. 20. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • Ejemplo: Recurso de sistema JDBC –URL –usuario –contraseña –nombre de origen de datos Invalidación de recursos: ///beans de configuración para invalidación
  21. 21. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos dsOver=newPart.createJDBCSystemOverride('medrecPDB') dsOver.setDataSourceName('MedRecGlobalDataSourceXA') pdbURL='jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST='+pdbHost+') (PORT='+pdbPort+'))) (CONNECT_DATA=(SERVICE_NAME=’+pdbServiceName+')))' dsOver.setURL(pdbURL) dsOver.setUser(pdbUserName) dsOver.setPassword(pdbPassword) Invalidación de recursos: ///beans de configuración para invalidación
  22. 22. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • Definición en el nivel de la partición • Similar a los planes de implementación de aplicaciones –Definición de variables –Definición de cambios de valores de variables para atributos específicos • Agregar, modificar, eliminar • Expresiones de tipo Xpath exclusivas de WLS • Principalmente para recursos o atributos no expuestos mediante ///beans de configuración para invalidación Invalidación de recursos: plan de implementación de recursos
  23. 23. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • El código aplica los valores de los atributos en el siguiente orden: –Plantilla –Plan de implementación de recursos –///Bean de configuración para invalidación • "El último gana" Invalidación de recursos: prioridad
  24. 24. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • Implementación de aplicaciones en plantilla de grupo de recursos • Indicación de plan para partición específica progress = updateApplication(appName='myApp', planPath='path/to/plan.xml', partition='pepsi') o progress = redeploy(appName='myApp', planPath='path/to/plan.xml', partition='pepsi’) Planes de implementación de aplicaciones para particiones específicas
  25. 25. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • ///Ámbitos de nombres de recursos –Dominio (y grupo de recursos por dominio) –Cada partición • 12.2.1 no incluye herramientas para crear planes de implementación de recursos • ConfigurationManagerMBean.getPropertyValues –Para un bean de configuración devuelve los valores de los atributos requeridos: • Default, original, resource deployment plan, overriding config bean, effective –Usado por EM pero accesible desde WLST, JMX Sugerencias
  26. 26. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Grupos de recursos y plantillas de grupos de recursos • DebugDeploymentPlan • DebugConfigurationRuntime (procesamiento de invalidaciones) • DebugDeployment Diagnóstico
  27. 27. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Targeting y destinos virtuales
  28. 28. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Destinos virtuales • Se usan para determinar destinos en particiones (y grupos de recursos) • Existen dos aspectos –Destinos físicos (servidor, clúster) que se usarán –Patrón URL para enrutamiento a la partición (más precisamente, al VT) • Nombres de host virtuales • Prefijo URI • Número de puerto • Provee servidor HTTP • Similar al VirtualHost existente
  29. 29. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ejemplos de destinos virtuales vt=domain.createVirtualTarget("PepsiVT") vt.addTarget(cluster) vt.getWebServer().getWebServerLog().setBufferSizeKB(0) Por nombre de host: vt.addHostName("pepsi.com") http://pepsi.com:7001/myapp Por prefijo URI: vt.setUriPrefix("/pepsi") http://any.com:7001/pepsi/myapp Por nombre de host y prefijo URI vt.addHostName("cloud.com") vt.setUriPrefix("/pepsi") http://cloud.com:7001/pepsi/myapp Por número de puerto: vt.setExplicitPort(8001) http://any.com:8001/myapp
  30. 30. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Sugerencias para trabajo con destinos virtuales • Solo se define cómo tratar una solicitud cuando esta llega a un servidor – Deben usarse otros mecanismos (equilibrador de carga, DNS) para hacer que la solicitud llegue al servidor correcto • El establecimiento de coincidencias de nombres de host se lleva a cabo mediante comparaciones sencillas de cadenas – Puede haber numerosas coincidencias: pepsi.com, pepsi.us.com, pepsi • Existe un algoritmo de coincidencia más preciso: – A mayor longitud de URL, mayor precisión; nombre de host + URL = mayor precisión; el puerto es el que brinda la máxima precisión • No se recomienda definir destinos virtuales que ///"acaparen" solicitudes relativas a dominios • El establecimiento del número de puerto crea automáticamente canales para particiones • El atributo partitionChannel solo se aplica cuando se modifican los puertos globalmente (port offset)
  31. 31. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Targeting en particiones • Destinos disponibles (available targets): es posible usar destinos virtuales para establecer destinos en la partición • Destinos predeterminados (default targets): subconjunto de destinos disponibles • Es posible seleccionar como destino de los grupos de recursos uno o más de los destinos disponibles • Un destino si incluye un JMSServer, MessagingBridge, PathService, JMSBridgeDestination. FileStore, JDBCStore, JMSSystemResource • Si no se establecen destinos para el RG, se emplean los destinos predeterminados – Controlable con useDefaultTarget de tipo boolean • Cada destino virtual puede ser compartido por más de una partición • Y también puede usarse un host virtual
  32. 32. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ejemplos de targeting en particiones partition=domain.createPartition("PepsiPartition") partition.addAvailableTarget(vt1) partition.addAvailableTarget(vt2) partition.addDefaultTarget(vt1) rg=partition.createResourceGroup("RG1") Explícito: rg.addTarget(vt2) Nota: Esta instrucción también asigna a UseDefaultTarget el valor false Uso de valor predeterminado de partición (vt1): rg.setUseDefaultTarget(true) Nota: Esto no suele ser necesario porque se trabaja con el valor predeterminado
  33. 33. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones
  34. 34. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones (y grupos de recursos) • Sobre la base del ciclo de vida del servidor • Se activan – Cambios de estado en el servidor – Instrucciones del administrador relativas a las particiones – Acciones ante uso inadecuado de recursos (recourse actions) como parte de la administración del uso de recursos (RCM) Requisitos de alto nivel
  35. 35. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Puesta en marcha de servidores: 12.1.3 Revisión: ///Elementos internos del ciclo de vida de los servidores Servicio de servidor JDBC Ciclo de vida de servidores Servicio de servidor JMS B Servicio de servidor de implementación Servicio de servidor JMS A Todos los BasicDeploymentMBeans, DeploymentMBeans del dominio puesta en marcha de servidores
  36. 36. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Puesta en marcha de servidores/particiones: 12.2.1 Cambios internos en 12.2.1 Servicio de servidor JDBC Ciclo de vida de servidores Servicio de servidor JMS B Servicio de servidor de implementación Servicio de servidor JMS A Ciclo de vida de particiones Interceptor Interceptor InterceptorInterceptor BasicDeploymentMBeans, DeploymentMBeans por dominio BasicDeploymentMBeans, DeploymentMBeans de partición puesta en marcha de servidores Puesta en marcha de particiones
  37. 37. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Partición domainRuntime() dpRT=cmo.lookupDomainPartitionRuntime(pName) plcRT=dpRT.getPartitionLifeCycleRuntime() task=plcRT.start() while task.isRunning(): os.time.sleep(1) Interfaces API - LifeCycleRuntimeMBeans DomainPartition RuntimeMBeanDomainPartition RuntimeMBean 1 por partición PartitionLifeCycle RuntimeMBean xxx xxx
  38. 38. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Grupo de recursos en la partición domainRuntime() dpRT=cmo.lookupDomainPartitionRuntime(pName) plcRT=dpRT.getPartitionLifeCycleRuntime() rglcRT=plcRT. lookupResourceGroupLifeCycleRuntime(rgName) task=rglcRT.start() while task.isRunning(): os.time.sleep(1) Interfaces API - LifeCycleRuntimeMBeans PartitionLifeCycle RuntimeMBean ResourceGroup LifeCycleRuntime MBean
  39. 39. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Grupo de recursos por dominio domainRuntime() rglcRT=cmo. lookupResourceGroupLifeCycleRuntime(rgName) task=rglcRT.start() while task.isRunning(): os.time.sleep(1) Interfaces API - LifeCycleRuntimeMBeans DomainRuntime MBean ResourceGroup LifeCycleRuntime MBean
  40. 40. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Operaciones de ciclo de vida • Destinos opcionales –Omit: la operación afecta a todos los destinos –Specify: la operación afecta solo a esos destinos • Asincrónicas Interfaces API - LifeCycleRuntimeMBeans start startInAdmin shutdown forceShutdown suspend forceSuspend resume
  41. 41. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • En general, usar RuntimeMBeans para ciclo de vida • Pero es posible establecer una conexión directa con un servidor administrado serverRuntime() cmo.startPartition(pName) cmo.startResourceGroup(rgName) # domain-level RG pRT=cmo.lookupPartitionRuntime(pName) pRT.shutdown() • Sincrónicas Interfaces API - RuntimeMBeans ServerRuntime MBean PartitionRuntime MBeanPartitionRuntime MBean
  42. 42. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Operaciones de ServerRuntimeMBean • Operaciones de PartitionRuntimeMBean Interfaces API - RuntimeMBeans startPartition startPartitionInAdmin startResourceGroup startResourceGroupInAdmin shutdownResourceGroup forceShutdownResourceGroup suspendResourceGroup forceSuspendResourceGroup resumeResourceGroup shutdown forceShutdown startResourceGroup startResourceGroupInAdmin shutdownResourceGroup forceShutdownResourceGroup suspendResourceGroup forceSuspendResourceGroup resumeResourceGroup
  43. 43. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Dos operaciones – startPartitionWait(partitionMBean) – forcePartitionShutdownWait(partitionMBean) • Sincrónicas • Se devuelve un objeto de tarea – getError() Interfaces APC - Operaciones útiles de WLST
  44. 44. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Cambios de estado persistentes • Operaciones sincrónicas vs. asincrónicas • Es mejor trabajar con RT Mbeans de ciclo de vida –solo en servidor de administración • Se debe poner en marcha explícitamente una partición creada de cero • Información sobre estado provista por MBeans de ciclo de vida de partición/RG –///Agregado Sugerencias
  45. 45. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Ciclo de vida de particiones • Mensaje de log – <Oct 2, 2015 9:41:46 AM PDT> <Notice> <Partition Lifecycle> <BEA-2192303> <The partition lifecycle operation "START" for partition "Pepsi" is initiated.> – <Oct 2, 2015 9:41:46 AM PDT> <Notice> <Partition Lifecycle> <BEA-2192304> <The partition lifecycle operation "START" for partition "Pepsi" was successful.> • Para obtener más detalles: – -Dweblogic.debug.DebugPartitionLifecycle=true Diagnóstico
  46. 46. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Para obtener más información • Documentación sobre WLS 12.2.1: https://docs.oracle.com/middleware/1221/wls/index.html • https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy • https://blogs.oracle.com/dipol/entry/partition_targeting_and_virtual_targets • https://blogs.oracle.com/misty/entry/multi_tenancy_deployment
  47. 47. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Demo
  48. 48. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Declaración relativa a la norma de Safe Harbor El objetivo de esta presentación es señalar la dirección general de nuestros productos. Se ofrece solo con fines informativos y no podrá incorporarse en ningún contrato. No constituye un compromiso de proporcionar materiales, código ni funcionalidades de ningún tipo, y no debería servir de fundamento para la toma de decisiones de compra. El desarrollo, lanzamiento y cronograma de cualquiera de las características o funcionalidades descritas para los productos de Oracle quedan a criterio exclusivo de Oracle. 48
  49. 49. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 49 Preguntas y respuestas
  50. 50. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Siga aprendiendo con las capacitaciones de Oracle University • Capacitación práctica presencial o en línea a cargo de instructores de trayectoria de todo el mundo • Nuevos servicios de aprendizaje con suscripción para brindarle acceso a la capacitación en todo momento • Programas de certificación para validar sus competencias education.oracle.com 50
  51. 51. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 51
  52. 52. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 52
  53. 53. Copyright © 2016, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 53

×