Title | Manual - Entorno Oracle sobre Docker |
---|---|
Author | Cristian pelegrin |
Course | Informática |
Institution | Universidad de Sevilla |
Pages | 63 |
File Size | 5.1 MB |
File Type | |
Total Downloads | 4 |
Total Views | 127 |
Manual sobre como montar un entorno Oracle en contenedores Docker sobre Linux y/o Windows, incluyendo un sistema de monitorización....
1
ÍNDICE 1.INTRODUCCIÓN 1.1 Justificación del proyecto 1.2. Tecnologías a usar y de qué forma 1.3. ¿Qué es Oracle? 1.4. ¿Que es Docker?
3 3 5 7 8
2. MANUALES DE INSTALACIÓN 2.1 Instalación de entorno Oracle sobre contenedores Docker [Ubuntu 18.04] 2.1.1 Pasos previos para Docker Creación de cuenta en Docker Hub Instalación de Docker Loguearse en la terminal en Docker
10 10 10 10 11 12
2.1.2 Despliegue y configuración de OracleDB Descargar imagen de OracleDB Despliegue y testeo de la imagen de OracleDB + VOLÚMENES Probando el contenedor OracleDB con SQLPlus y SQL Developer
13 13 14 16
2.1.3 Despliegue y configuración de WebLogic Descargar imagen de WebLogic 12c Despliegue del contenedor de WebLogic 12c
19 19 20
Acceso al portal WebLogic 12c Conectando OracleDB con WebLogic 12c 2.1.4 Simulación de entorno distribuido de Oracle sobre Docker
22 24 29
Requisitos previos Levantar un nuevo contenedor Web Logic 12c Levantar un nuevo contenedor OracleDB Conectando OracleDB_2 con WebLogic_2 Exportar y importar contenedores del entorno creado 2.2 Instalación de entorno Oracle sobre contenedores Docker [Windows 10] 2.2.1 Pasos previos para Docker Instalación de Docker Registrarse en container-registry.oracle.com 2.2.2 Despliegue y configuración de OracleDB 2.2.3 Despliegue y configuración de WebLogic 12c
30 31 33 34 37 38 38 38 40 41 47
3. GESTIÓN DE CONTENEDORES 3.1. Sistemas de monitorización del entorno
50 50
3.1.1 Herramientas de Linux 3.1.2 Herramientas de Windows
50 55
4. CONCLUSIONES
59
5. ANEXO
60
6. BIBLIOGRAFÍA
61
2
1.INTRODUCCIÓN 1.1 Justificación del proyecto Los entornos Oracle basados en máquinas virtuales (como utilizan muchas empresas) suelen tener muchos inconvenientes en su rendimiento ya que se trata de un software muy pesado. Los principales problemas que se encuentran las empresas son: El tamaño (espacio en disco), consumo de recursos innecesarios, lentitud en el sistema, labores tediosas, dificultades para entornos distribuidos, etc. En 2017, gracias a un pacto entre ambas compañias (Oracle y Docker), permitió que trabajaran juntas en el sector de la virtualización basada en contenedores. Gracias a él, a partir de ahora vamos a poder encontrar contenedores basados en los principales productos de Oracle, entre los que destacan: ● Instant Client: Una serie de herramientas de base de datos, librerías y SDK para la conexión entre clientes y servidores remotos. ● ● Coherence: Herramienta para facilitar la configuración e integración de entornos de prueba. ● ● WebLogic Server, servidor para el contaje y desarrollo de aplicaciones Java EE. ● ● Java 8 SE (Server JRE), entorno para el desarrollo e implementación de aplicaciones Java SE para escritorio y web. ● ● Database Enterprise, conocido servidor de bases de datos de Oracle. ● ● OracleLinux, sistema operativo OpenSource de la compañía.
3
Además, todos estos contenedores anteriores llevan el sello de Docker Certified, que garantiza que cumple con las normas básicas de rendimiento, seguridad y estabilidad. Imagen del sello “Docker Certified"
En conclusión, para evitar los problemas mencionados anteriormente y dar una mejor solución a aquellas empresas que siguen utilizando el “latoso” entorno de Oracle en máquinas virtuales, se mostrará y explicará el proceso para levantar un entorno Oracle sobre contenedores Docker de una forma más liviana y fácil de gestionar.
4
1.2. Tecnologías a usar y de qué forma A lo largo del desarrollo del proyecto se harán uso de las siguientes herramientas o tecnologías: ● Oracle → Se escoge Oracle (a pesar de la multitud de gestores de bases de datos que existen) por ser la mejor opción por: su flexibilidad, fiabilidad, potencia y otras características que hacen de Oracle la mejor opción como gestor de base de datos en el entorno empresarial. ❖ De Oracle se usarán los contenedores “Database Enterprise” y “Web Logic”. ● Docker → Es una de las herramientas de virtualización por contenedores más conocida y utilizada (a pesar de que existen alternativas como OpenShift de Red Hat o CRI-O de Google). Docker destaca del resto por su rápida integración y por su velocidad de despliegue. ❖ Se utilizará Docker para el despliegue del entorno Oracle sobre los contenedores ● VirtualBox → Es un potente software de virtualización de sistemas operativos. Se eligirá VirtualBox como herramienta de virtualización por ser de código abierto, ser fácil de utilizar y su funcionalidad. ❖ Se hará uso de Virtualbox para la virtualización de Linux y Windows
● S.O Linux y Windows → Se eligen ambos sistemas operativos para aplicar el proyecto por ser los principales y más usados. Se usarán las distribuciones de Ubuntu 18.04 y Windows 10 respectivamente. ❖ Serán los sistemas operativos donde se levantarán los entornos
5
● Ctop → Se elige esta herramienta de monitorización en Linux por su fácil instalación y su potente capacidad, a pesar de ser muy ligera. ● Semtex → Es un potente software de monitorización para cualquier SO que permite seguir una monitorización completa desde la nube.
6
1.3. ¿Qué es Oracle?
Oracle es un sistema de gestión de base de datos relacional fabricado por Oracle Corporation. Oracle, básicamente, es una herramienta cliente/servidor para la gestión de base de datos. La gran potencia que tiene y su elevado precio hace que solo se vea en empresas muy grandes y multinacionales, por norma general. Sus productos van desde bases de datos (Oracle) hasta sistemas de gestión.
Principales características y funcionalidades de Oracle ◆ Modelo relacional: Los usuarios visualizan los datos en tablas con el formato filas/columnas. Herramienta de administración gráfica, intuitiva y cómoda. ◆ Protección de datos: Seguridad completa en el entorno de producción y gestión de copias de seguridad. Lenguaje de diseño de base de datos muy completo (PL/SQL). Alta disponibilidad: Escalabilidad, protección y alto rendimiento. ◆ Gestión de usuarios: Seguridad en el control de personas que acceden a las bases de datos.
7
1.4. ¿Que es Docker?
Docker es una de las herramientas de virtualización por contenedores más conocida y utilizada y que cada vez cuenta con mayor importancia dentro del sector del Cloud Computing. Gracias a ella vamos a poder cargar en cualquier sistema compatible cualquier contenedor ya configurado y listo para funcionar de manera que, en pocos segundos, podamos tener una instancia de un servicio totalmente funcional y aislada del resto de contenedores o programas del sistema.
DockerHub
Docker hub es un repositorio público en la nube, similar a Github, para distribuir los contenidos. Está mantenido por Docker y hay multitud de imágenes de carácter gratuito, que se pueden descargar y asi no tener que hacer el trabajo desde cero al poder aprovechar “plantillas”. También podemos crear nuestros propios repositorios privados e, incluso, dispone de una tienda. 8
Principales características y funcionalidades de Docker ◆ Capacidad para desplegar multitud de contenedores en un mismo equipo físico. ◆ ◆ Contenedores muy livianos que facilitan su almacenaje, transporte y despliegue. ◆ ◆ Se pueden compartir nuestros contenedores para aumentar los repositorios de Docker así como beneficiarnos de los que compartan los demás. ◆ ◆ La aplicación base de Docker gestionará los recursos existentes para asignarlos responsablemente entre los contenedores desplegados. ◆ ◆ Compatibilidad Multi-Sistema , podremos desplegar nuestros contenedores en multitud de plataformas.
9
2. MANUALES DE INSTALACIÓN 2.1 Instalación de entorno Oracle sobre contenedores Docker [Ubuntu 18.04] 2.1.1 Pasos previos para Docker Creación de cuenta en Docker Hub Antes de empezar se deberá de que crear una cuenta en Docker Hub, el repositorio oficial de Docker, para poder descargar las imágenes de Oracle desde aquí. Para ello tan solo se deberá de acceder a este enlace y crear una cuenta. Una vez completado el registro se tendrá un repositorio propio con las imágenes que se vayan creando más adelante.
10
Instalación de Docker Para instalar Docker en un servidor Ubuntu habrá que seguir los siguientes pasos: ● Instalar algunos paquetes de requisitos previos: $ sudo apt install apt-transport-https ca-certificates curl software-properties-common
●
Agregar la clave GPG para el repositorio de Docker en el sistema:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
●
Agregar el repositorio de Docker a las fuentes de APT:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
●
Por último, instalar el paquete de Docker:
$ sudo apt install docker-ce
Para comprobar que Docker se está ejecutando: systemctl status docker
11
Loguearse en la terminal en Docker Ahora habrá que loguearse vía terminal en Docker Hub. Para ello, tan solo se usará el comando: $ sudo docker login
Se tendrá que introducir nuestro Docker ID y nuestra contraseña de la siguiente forma:
12
2.1.2 Despliegue y configuración de OracleDB Descargar imagen de OracleDB En el siguiente ENLACE se encuentra el repositorio de la imagen de Oracle Database junto a su documentación oficial.
Para descargar la imagen en nuestro servidor utilizaremos el siguiente comando: $ docker pull store/oracle/database-enterprise:12.2.0.1
Una vez descargada la imagen, se podrá ver con: docker images
13
Despliegue y testeo de la imagen de OracleDB + VOLÚMENES Primero se crearán los siguientes volúmenes para guardar el contenido de la base de datos (Como tablas, datos, usuarios…) PERSISTENCIA EN LA BASE DE DATOS - VOLÚMENES ➢ /opt/oracle/scripts/setup es el directorio que contiene scripts de shell o SQL que se ejecutan una vez que se completa la configuración (creación) de la base de datos. ■ docker volume create volumen_setup ■ -v volumen_setup:/opt/oracle/scripts/setup/ ➢ /opt/oracle/scripts/startup es el directorio que contiene scripts de shell o SQL que se ejecutan cada vez que se inicia el contenedor. ■ docker volume create volumen_startup ■ -v volumen_startup:/opt/oracle/scripts/startup/ ➢ /opt/oracle/oradata se encarga de conservar los archivos de configuración en el sistema de archivos del host. Es necesario dar permisos al usuario oracle (chown 54321:54321 ;) ■ docker volume create volumen_oradata ■ -v volumen_oradata:/opt/oracle/oradata/ ➢ /ORCL se encarga de conservar los datos de la base de datos y de los usuarios creados. ■ docker volume create volumen_orcl ■ -v volumen_orcl:/ORCL NOTA: Para ver las propiedades y localización del volúmen usar docker volume inspect
14
● Después, para lanzar la imagen de la base de datos (OracleDB), se desplegará con el siguiente comando donde se utilizará el puerto 1521 para la base de datos y el puerto 8080 para la pequeña interfaz gráfica que nos ofrece Oracle, además de añadir los volúmenes creados antes. $ docker run -d -p 8080:8080 -p 1521:1521 -v volumen_oradata:/opt/oracle/oradata -v volumen_startup:/opt/oracle/scripts/startup -v volumen_setup:/opt/oracle/scripts/setup -v volumen_orcl:/ORCL --name ORACLEDB store/oracle/database-enterprise:12.2.0.1 ● Para comprobar que se a lanzado correctamente y que está levantado(healthy), usamos el comando docker ps ●
También podemos ir viendo los logs del contenedor con docker logs ORACLEDB
15
Probando el contenedor OracleDB con SQLPlus y SQL Developer ● Para abrir SQLPlus en el contenedor, se cargarán de la siguiente forma unas variables determinadas, localizadas en .bashrc y después de esto debemos lanzar el SQLPlus (Integrado en la imagen lanzada) $ docker exec -it ORACLEDB bash -c "source /home/oracle/.bashrc; sqlplus /nolog"
●
Después, deberemos conectarnos como sysdba de la siguiente forma:
NOTA: La contraseña predeterminada, como indica la documentación oficial de la imagen en Docker Hub, es: Oradoc_db1 ●
Se creará un nuevo usuario para poder usarlo más adelante.:
16
●
Como se puede ver, se ha realizado la conexión desde SQLPlus a la base de datos PERO desde dentro de la máquina virtual. (De manera LOCAL)
Ahora se mostrará cómo conectarse desde un cliente SQL Developer (de mi anfitrión) a la base de datos del contenedor Docker, realizando una conexión desde el exterior de la MV hasta Oracle ubicado en el contenedor. ● La siguiente imagen muestra la forma en la que se debe conectar: ○ Nombre del host: ○ Puerto: ○ Nombre del servicio: ORCLCDB.localdomain
●
17
● A continuación se creará una tabla, insertarán datos y realizará una pequeña consulta para demostrar el funcionamiento desde SQLDeveloper. Además, al tener volúmenes asociados, los datos perdurarán en el contenedor. Código SQL de creación e inserción de datos.
Consulta básica SQL
18
2.1.3 Despliegue y configuración de WebLogic Descargar imagen de WebLogic 12c Al igual que con la imagen de OracleDB, en el siguiente ENLACE se encuentra la imagen de WebLogic 12c de Oracle.
● Para descargar la imagen en nuestro servidor se utilizará el siguiente comando: $ docker pull store/oracle/weblogic:12.2.1.4-dev-200117
● Una vez descargada la imágen, se podrá ver con: docker images
19
Despliegue del contenedor de WebLogic 12c ●
Primero será necesario instalar JAVA en la máquina. Para ello:
$ sudo apt install default-jre
●
Después, en nuestro home, habrá que crear de la siguiente forma un archivo que contendrá el usuario y contraseña para WebLogic 12c:
$ > > >
cat “Orígenes de Datos” > “Nuevo” > “Origen de datos genérico”
25
●
Las siguientes páginas deberían de quedar de las siguientes formas configuradas:
26
CUIDADO
●
Nombre de host = IP del contenedor de OracleDB
En la siguiente página, no se tocará ninguna configuración. Pero sí se puede pulsar en el botón “Probar configuración” donde dirá si son válidos los pasos realizados hasta ahora.
27
●
Por último, pedirá a qué dominio se quieren poner la conexión. Por defecto, se elegirá la de “AdminServer”.
●
Al darle click a “Terminar” ya debería de aparecer la conexión.
Después de realizar todos los pasos anteriores, ya se tendría configurada la conexión de Web Logic 12c al contenedor OracleDB satisfactoriamente
28
2.1.4 Simulación de entorno distribuido de Oracle sobre Docker En este apartado se crearán múltiples nodos para un entorno distribuido. Se propone como un modelo para resolver problemas de computación masiva sobre un solo contenedor Oracle
¿En qué consistirá? → Se crearán dos entornos completos (WebLogic y DataBase) diferentes e independientes. → Cada WebLogic deberá tener únicamente conexión a su respectiva DB, pero ambos entornos deberán ejecutarse a la vez (es decir, corriendo en paralelo). → Además, el WebLogic deberá tener una carpeta compartida con el PC, es decir deberá haber una carpeta común entre PC local y Docker y viceversa.
29
Requisitos previos ● Se partirá con que, ya se tendrá levantados los dos contenedores anteriores :
● Después, se creará el lugar de la carpeta compartida y también una variable de entorno con el comando export para indicar dónde se encuentra dicha carpeta:
$ export SH_FOLDER=/home/cristianpelegrin/docker/CarpetaCompartida/
30
Levantar un nuevo contenedor Web Logic 12c Ahora se desplegará WebLogic mapeando los puertos 7002 al 7001 y el 9004 al 9002 para evitar conflictos con el 1º contenedor, con un volumen asociado al archivo “domain.properties” creado anteriormente (el mismo que se usó para el 1º contenedor) A diferencia del 1º, este incorpora la carpeta compartida que será creada dentro del contenedor automáticamente en /u01/oracle/shared_folder $ docker run -it -p 7002:7001 -p 9004:9002 --name WEBLOGIC_2 -v $PWD:/u01/oracle/properties -v $SH_FOLDER:/u01/oracle/shared_folder store/oracle/weblogic:12.2.1.4-dev-200117 /bin/bash ●
Una vez dentro del contenedor, debemos de realizar dentro las siguientes acciones:
[oracle@3c2d1c0573f5 oracle]$ export DOMAIN_NAME=base_domain [oracle@3c2d1c0573f5 oracle]$ ./createAndStartEmptyDomain.sh ● Cuando esté desplegado, se podrá probar su funcionamiento metiéndonos desde el navegador de nuestro anfitrión en la siguiente dirección: ○ https://:9004/console
31
● También comprobaremos que tenemos acceso a su carpeta compartida:
32
Levantar un nuevo contenedor OracleDB Ahora se desplegará el segundo contenedor OracleDB mapeando los puertos 8082 al 8080 y el 1524 al 1521 para evitar conflictos con el 1º contenedor. (En este caso, no crearé volúmenes.) $ docker run -d -p 8082:8080 -p 1524:1521 --name ORACLEDB_2 store/oracle/database-enterprise:12.2.0.1 ● Una vez levantado, se abrirá SQLPlus del contenedor ORACLEDB_2 para crear un nuevo usuario llamado, por ejemplo, cristianpelegrin2. Para conectarse: $ docker exec -it ORACLEDB_2 bash -c "source /home/oracle/.bashrc; sqlplus /nolog" ● Se volverá a repetir los mismos pasos que con el 1º contenedor:
33
Conectando OracleDB_2 con WebLogic_2 Ahora se pasará a realizar la conexión de WebLogic_2 y la base de datos(2º) a través del portal de WebLogic. Para ello se vuelve a realizar los pasos anteriores, creando un nuevo origen de datos genéricos.
34
35
Y con esto ya tendríamos el escenario que se buscaba: Dos bases de datos por separado con sus respectivos Web Logic’s configurados, realizando satisfactoriamente la conexión entre ambos.
36
Exportar y importar contenedores del entorno creado
●
Para EXPORTAR primero se creará una nueva variable con export indicando el destino de nuestros contenedores:
$ export EXPORT_FOLDER=/home/cristianpelegrin/docker/exported_images ORACLEDB Nota: Habrá que crear el directorio con mkdir después
●
Con esto aparecerá el contenedor comprimido en .tar en el directorio creado:
●
Para IMPORTAR, habrá que utilizar el siguiente comando:
$ tar -c contenedor_ORACLEDB.tar | docker import - imagen_contenedor_oracledb ●
Si se hace un docker images ls debería de aparecer la imagen del contenedor importado.
37
2.2 Instalación de entorno Oracle sobre contenedores Docker [Windows 10] 2.2.1 Pasos previos...