Cómo instalar OpenSearch mediante Docker en Ubuntu 22.04
OpenSearch es un proyecto de Amazon impulsado por la comunidad y una bifurcación de Elasticsearch y Kibana. Se trata de un motor de búsqueda y un conjunto de herramientas analíticas totalmente de código abierto con ricas características y una funcionalidad innovadora. El componente principal del proyecto OpenSearch es OpenSearch (una bifurcación de Elasticsearch) y OpenSearch Dashboards (una bifurcación de Kibana). Ambos componentes proporcionan funciones como seguridad empresarial, alertas, aprendizaje automático, SQL, gestión del estado de los índices y mucho más.
OpenSearch es 100% de código abierto y tiene licencia Apache 2.0. Te permite ingestar, asegurar, buscar, agregar, ver y analizar datos fácilmente para una serie de casos de uso, como el análisis de registros, la búsqueda de aplicaciones, la búsqueda empresarial, etc.
En este tutorial, instalarás y configurarás OpenSearch -un motor de búsqueda y suite analítica de código abierto- y OpenSearch Dashboards -una herramienta de visualización de código abierto- mediante Docker en un servidor Ubuntu 22.04. Desplegarás un clúster OpenSearch con varios contenedores y un único Panel OpenSearch mediante Docker y Docker Compose. También asegurarás tu despliegue con certificados TLS personalizados y la autenticación y autorización activadas.
Esta guía utiliza un servidor Ubuntu genérico nuevo, por lo que este tutorial incluye la instalación del motor Docker y Docker Compose en un sistema Ubuntu 22.04.
Requisitos previos
Para completar esta guía, debes tener los siguientes requisitos:
- Un servidor Ubuntu 22.04 con una RAM mínima de 4-8GB – Este ejemplo utiliza un servidor Ubuntu con el nombre de host » y una dirección IP ».
- Un usuario no root con privilegios de administrador sudo/root.
Cuando estos requisitos estén listos, ya puedes iniciar la instalación de OpenSearch.
Configurar el sistema
En este primer paso, prepararás tu sistema Ubuntu para la instalación de OpenSearch. Tendrás que deshabilitar SWAP y la paginación, y luego aumentar el mapa de memoria máxima a través del archivo ‘/etc/sysctl.conf‘.
Ejecuta el siguiente comando para desactivar el swap en tu sistema. El comando ‘sed’ desactivará aquí el swap permanentemente a través del archivo ‘ /etc/fstab‘ añadiendo el comentario‘#‘ al principio de la línea de configuración del swap. El comando ‘swapoff‘ desactivará el swap en la sesión actual.
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab sudo swapoff -a
A continuación, comprueba el estado de swap mediante el siguiente comando. Si está deshabilitado, deberías obtener una salida‘0’ en la sección swap.
free -m
Salida:
Por último, añadirás la configuración al archivo‘/etc/sysctl.conf ‘ para aumentar los mapas de memoria máximos en tu sistema Ubuntu.
Ejecuta el siguiente comando para añadir el parámetro‘vm.max_map_count=262144‘ al final de la línea del archivo ‘/etc/sysctl.conf ‘. A continuación, aplica los cambios mediante el comando‘sysctl -p‘.
sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf sudo sysctl -p
Ahora verifica los mapas de memoria máxima ejecutando el siguiente comando. Si se ejecuta correctamente, tu mapa de memoria máximo debería ser«262144«.
cat /proc/sys/vm/max_map_count
Resultado:
Con el intercambio desactivado y el mapa de memoria máxima aumentado a «262144», a continuación iniciarás la instalación del motor Docker y Docker Compose.
Instalación de Docker CE y Docker Compose
Hay varias formas de desplegar e instalar OpenSearch, puedes instalar OpenSearch de forma tradicional en una máquina virtual, o instalarlo en el entorno de contenedores.
Si prefieres la instalación tradicional en una máquina virtual, puedes instalar OpenSearch manualmente mediante Tarball, o mediante el gestor de paquetes (para distribuciones basadas en RHEL). Para el despliegue en contenedores, puedes instalar OpenSearch con Docker y Kubernetes.
En este ejemplo, instalarás OpenSearch en el entorno de contenedores mediante Docker engine y Docker compose. Así que ahora, instalarás paquetes Docker desde el repositorio oficial de Docker.
Para empezar, ejecuta el siguiente comando apt para instalar las dependencias básicas. Introduce y cuando se te pida y pulsa ENTER para continuar.
sudo apt install ca-certificates curl gnupg lsb-release
Salida:
A continuación, ejecuta el siguiente comando para añadir la clave GPG y el repositorio para los paquetes Docker.
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Salida:
Después de eso, actualiza y refresca tu índice de paquetes de Ubuntu mediante el siguiente comando apt.
sudo apt update
Resultado:
Con el repositorio Docker añadido, ya puedes instalar el motor Docker y el plugin Docker Compose mediante el siguiente comando apt. Cuando se te solicite, introduce y, y pulsa ENTER para continuar.
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Resultado:
El servicio Docker se iniciará y habilitará automáticamente. Puedes verificar el servicio Docker mediante el siguiente comando systemctl.
sudo systemctl is-enabled docker sudo systemctl status docker
Deberías obtener una salida que indique que el servicio Docker está habilitado y se ejecutará automáticamente en el arranque. Y el estado del servicio Docker es en ejecución.
Por último, para permitir que tu usuario no root ejecute el contenedor Docker, debes añadir tu usuario al grupo«docker«. Ejecuta el siguiente comando usermod para añadir tu usuario al grupo ‘docker‘. Además, asegúrate de cambiar el nombre de usuario con tu usuario.
sudo usermod -aG docker alice
Ahora puedes iniciar sesión como tu usuario y ejecutar el contenedor Docker mediante el siguiente comando.
su - alice docker run hello-world
Cuando se ejecute correctamente, deberías recibir el mensaje «hola-mundo» del contenedor Docker como en la siguiente captura de pantalla.
Descargar imágenes Docker de OpenSearch
En este paso, descargarás las imágenes de OpenSearch y OpenSearch Dashboards desde DockerHub. A continuación, también ejecutarás un nuevo contenedor OpenSearch con fines de prueba.
Ejecuta el siguiente comando para descargar las imágenes de OpenSearch y OpenSearch Dashboards.
docker pull opensearchproject/opensearch:latest docker pull opensearchproject/opensearch-dashboards:latest
Salida:
Una vez finalizada la descarga, ejecuta el siguiente comando para comprobar la lista de imágenes Docker de tu sistema. Verás que las imágenes OpenSearch y OpenSearch Dashboards están disponibles en tu sistema.
docker images
Salida:
A continuación, también puedes ejecutar OpenSearch a través de Docker directamente utilizando el comando siguiente. Esto creará y ejecutará el contenedor OpenSearch en modo único y expondrá el puerto TCP por defecto 9200 y 9600 en la máquina anfitriona.
docker run -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" opensearchproject/opensearch:latest
Comprueba la lista del contenedor en ejecución mediante el comando«docker ps» que aparece a continuación.
docker ps
Deberías recibir una salida como ésta – El contenedor OpenSearch se ha creado y está en ejecución. Expuestos los puertos TCP 9200 y 9600 tanto en el contenedor como en el host Docker.
Puedes acceder a tu contenedor OpenSearch mediante el siguiente comando curl. El nombre de usuario y contraseña por defecto para el contenedor OpenSearch es«admin«.
curl https://localhost:9200 -ku 'admin:admin'
Si lo consigues, deberías obtener un resultado como éste: el contenedor OpenSearch está en ejecución y es accesible a través de la máquina anfitriona Docker.
Ahora puedes ejecutar el siguiente comando ‘docker’ para detener y eliminar el contenedor OpenSearch. Porque en el siguiente paso, crearás un clúster OpenSearch a través de Docker Compose. Asegúrate de cambiar el nombre del contenedor en el siguiente comando.
docker stop container-name or container-id docker rm container-name or container-id
Para asegurarte de que se elimina el contenedor OpenSearch, ejecuta el comando «docker ps» con la opción adicional«-a«. Esto te mostrará los contenedores disponibles con ambos estados, en ejecución y salidos.
docker ps -a
Salida:
Configurar el directorio del proyecto
Inicia sesión con tu usuario con el siguiente comando. Este ejemplo utiliza un usuario ‘alice’, así que asegúrate de cambiar el nombre de usuario en el comando siguiente.
su - alice
Ahora crea un nuevo directorio de proyecto‘opensearch-project‘ que se utilizará como directorio raíz principal de tu proyecto, y el directorio‘certs‘ que se utilizará para almacenar los certificados TLS personalizados.
mkdir -p ~/opensearch-project/certs; cd ~/opensearch-project
Dentro del directorio ‘opensearch-project ‘, ejecuta el siguiente comando para crear los nuevos archivos que se utilizarán para crear los contenedores OpenSearch y los Tableros OpenSearch.
touch docker-compose.yml opensearch.yml opensearch_dashboards.yml internal_users.yml
La lista de archivos:
- docker-compose.yml – la configuración principal de Docker Compose para el proyecto OpenSearch.
- opensearch.y ml – configuración personalizada para los contenedores OpenSearch.
- opensearch_dashbaords.y ml – configuración personalizada para el contenedor OpenSearch Dashboards.
- internal_users.yml – autenticación y autorización de usuarios personalizada para OpenSearch y OpenSearch Dashboards.
Generar certificados SSL/TLS
En este paso, generarás varios certificados TLS que se utilizarán para proteger tu despliegue de OpenSearch. Generarás los siguientes certificados:
- Certificados de CA raíz: Estos certificados se utilizarán para firmar otros certificados.
- Certificados deadministrador: Estos certificados se utilizarán para obtener derechos administrativos para realizar todas las tareas relacionadas con el plugin de seguridad.
- CertificadosOpenSearch Dashboards: Estos certificados se utilizarán para asegurar los Tableros de OpenSearch y te permitirán acceder a los Tableros de OpenSearch a través de conexiones HTTPS.
- Certificados deNodo y Cliente: Estos certificados serán utilizados por los nodos y clientes dentro del cluster OpenSearch.
Para empezar, ejecuta el siguiente comando para crear nuevos directorios que se utilizarán para los certificados TLS de cadena.
mkdir -p certs/{ca,os-dashboards}
Crea una nueva variable de entorno ‘MYDN’ que se utilizará para crear nuevos certificados TLS. Asegúrate de cambiar los detalles con tu información.
export MYDN="/C=CA/ST=ONTARIO/L=TORONTO/O=HWDOMAIN"
Ahora estás listo para generar certificados TLS para tu despliegue de OpenSearch.
Generar certificados CA
Genera una clave privada para los certificados CA raíz utilizando lo que se indica a continuación.
openssl genrsa -out certs/ca/ca.key 2048
Ahora genera un certificado CA raíz autofirmado mediante el siguiente comando. El valor del parámetro ‘-subj‘ utiliza la variable de entorno‘MYDN‘ que has creado en tu sesión actual.
openssl req -new -x509 -sha256 -days 1095 -subj "$MYDN/CN=CA" -key certs/ca/ca.key -out certs/ca/ca.pem
Con esto, deberías obtener la clave privada de la CA raíz‘ca.key‘ y el certificado de la CA raíz‘ca.pem‘. Puedes verificar los certificados CA que has generado mediante el siguiente comando.
ls certs/ca/
Salida – Deberías obtener la clave privada de CA ‘ca.key‘ y el archivo de certificado de CA‘ca.pem‘.
Generar certificados de administrador
Genera la nueva clave privada del certificado admin ‘admin-temp.key‘ y convierte el certificado generado a un algoritmo compatible con PKCS#12 (3DES). Con esto, tu clave privada admin debería ser ‘admin.key‘.
openssl genrsa -out certs/ca/admin-temp.key 2048 openssl pkcs8 -inform PEM -outform PEM -in certs/ca/admin-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/ca/admin.key
A continuación, ejecuta el siguiente comando para generar la CSR (Solicitud de Firma de Certificado) de admin a partir de la clave privada ‘admin.key’. El CSR generado debería ser el archivo «admin.csr«.
openssl req -new -subj "$MYDN/CN=ADMIN" -key certs/ca/admin.key -out certs/ca/admin.csr
Ahora ejecuta el siguiente comando para firmar el CSR admin con el certificado de la CA raíz y la clave privada. El resultado del certificado admin es el archivo«admin.pem«.
openssl x509 -req -in certs/ca/admin.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/ca/admin.pem
Por último, verifica la lista de tus certificados mediante el siguiente comando.
ls certs/ca/
Salida – Deberías ver los archivos del certificado admin ‘admin.pem’ y la clave privada‘admin.key‘.
Generar los certificados de OpenSearch Dashboards
Genera el nuevo certificado que se utilizará para los Tableros OpenSearch.
Ejecuta el siguiente comando para generar la clave privada ‘os-dashboards-temp.key’ y convierte el certificado generado a un algoritmo compatible con PKCS#12 (3DES). Con esto, tu clave privada de administrador debería ser ‘os-dashboards.key‘.
openssl genrsa -out certs/os-dashboards/os-dashboards-temp.key 2048 openssl pkcs8 -inform PEM -outform PEM -in certs/os-dashboards/os-dashboards-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/os-dashboards/os-dashboards.key
A continuación, ejecuta el siguiente comando para generar la CSR (Solicitud de Firma de Certificado) para los Tableros OpenSearch. El CSR generado debería ser el archivo «os-dashboards.csr«.
openssl req -new -subj "$MYDN/CN=os-dashboards" -key certs/os-dashboards/os-dashboards.key -out certs/os-dashboards/os-dashboards.csr
Ahora ejecuta el siguiente comando para firmar el CSR de los Tableros OpenSearch con el certificado de la CA raíz y la clave privada. El resultado del certificado de administrador es el archivo «os-dashboards.pem «.
openssl x509 -req -in certs/os-dashboards/os-dashboards.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/os-dashboards/os-dashboards.pem
Por último, ejecuta el siguiente comando para eliminar el archivo CSR de OpenSearch Dashboards y verificar la lista de tus certificados para OpenSearch Dashboards.
rm certs/os-dashboards/os-dashboards-temp.key certs/os-dashboards/os-dashboards.csr ls certs/os-dashboards/
Salida – Deberías ver los archivos de certificado de los Tableros OpenSearch‘os-dashboards.pem’ y la clave privada‘os-dashboards.key‘.
Generar certificados para nodos OpenSearch
Ejecuta el siguiente comando para generar certificados de nodo. Con él, crearás varios directorios bajo el directorio ‘certs’ y generarás certificados TLS para varios hosts.
for NODE_NAME in "os01" "os02" "os03" do mkdir "certs/${NODE_NAME}" openssl genrsa -out "certs/$NODE_NAME/$NODE_NAME-temp.key" 2048 openssl pkcs8 -inform PEM -outform PEM -in "certs/$NODE_NAME/$NODE_NAME-temp.key" -topk8 -nocrypt -v1 PBE-SHA1-3DES -out "certs/$NODE_NAME/$NODE_NAME.key" openssl req -new -subj "$MYDN/CN=$NODE_NAME" -key "certs/$NODE_NAME/$NODE_NAME.key" -out "certs/$NODE_NAME/$NODE_NAME.csr" openssl x509 -req -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:$NODE_NAME") -in "certs/$NODE_NAME/$NODE_NAME.csr" -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out "certs/$NODE_NAME/$NODE_NAME.pem" rm "certs/$NODE_NAME/$NODE_NAME-temp.key" "certs/$NODE_NAME/$NODE_NAME.csr" done
Comprueba la lista de directorios en el directorio ‘certs’.
ls certs/
Resultado – Deberías obtener los nuevos directorios ‘os01, os02, y os03.
Por último, comprueba la lista de certificados disponibles en los directorios os01 , os02 y os03 mediante el siguiente comando.
ls certs/os01/ ls certs/os02/ ls certs/os03/
Resultado – En cada directorio, deberías obtener dos certificados‘osX.key‘ y‘osX.pem‘.
Por último, debes cambiar la propiedad del directorio‘certs‘ a‘1000‘ mediante el siguiente comando. Esto permitirá a los contenedores Docker acceder al directorio ‘certs‘.
sudo chown -R 1000:1000 certs/
Con los certificados TLS generados, a continuación generarás las contraseñas hash y definirás los usuarios de OpenSearch.
Definir usuario
En este paso, generarás un hash de contraseña que utilizarán OpenSearch y OpenSearch Dashboards. Generarás dos hashes de contraseñas para dos usuarios distintos, luego modificarás el archivo de configuración ‘internal_users.yml’ y los usuarios de OpenSearch.
Ejecuta el siguiente comando docker para generar un nuevo hash de contraseña. Esto ejecutará un contenedor temporal OpenSearch y ejecutará el script‘hash.sh‘ para generar un hash de contraseña.
docker run -it --rm opensearchproject/opensearch sh -c "/usr/share/opensearch/plugins/opensearch-security/tools/hash.sh"
Ahora introduce tu contraseña y deberías obtener la contraseña hash en tu terminal. Copia la contraseña hash generada y vuelve a ejecutar el comando para generar otra contraseña hash.
Salida – A la contraseña hash generada para los usuarios de OpenSearch.
A continuación, abre el archivo‘internal_users.yml‘ utilizando el siguiente comando del editor nano.
nano internal_users.yml
Añade las siguientes líneas al archivo y asegúrate de cambiar la contraseña hash por tu contraseña generada. Con esto, definirás dos usuarios para tu despliegue de OpenSearch. El usuario‘admin‘ como administrador de OpenSearch y el usuario‘kibanaserver‘ que se utilizará para conectarse a los Dashboards de OpenSearch.
--- # This is the internal user database # The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh
_meta:
type: «internalusers»
config_version: 2
# Define your internal users here
admin:
hash: «$2y$12$y8UzXWoZKQc8GTgGsRz4g.CarjlC6sMPYN8XOD/NPQysRi2oq.Ws6»
reserved: true
backend_roles:
– «admin»
description: «Admin User»
kibanaserver:
hash: «$2y$12$AKpGe4tM5nIWYFoM56yRue22pQh0jFfx59MUgUKnBu8qnyGeAm2Ze»
reserved: true
description: «OpenSearch Dashboards user»
Guarda el archivo y sal del editor cuando hayas terminado.
Configurar el script docker-compose.yml
En este paso, crearás un nuevo script Docker Compose para desplegar OpenSearch y OpenSearch Dashboards. Crearás varios contenedores OpenSearch para configurar el clúster OpenSearch, y configurarás un contenedor OpenSearch Dashboards que se conectará al clúster OpenSearch.
Abre el archivo‘docker-compose.yml‘ utilizando el siguiente comando del editor nano.
nano docker-compose.yml
Añade las siguientes líneas al archivo.
version: '3.7'
services:
os01:
restart: always
image: opensearchproject/opensearch:latest
environment:
OPENSEARCH_JAVA_OPTS: «-Xms1024m -Xmx1024m» # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
node.name: os01
discovery.seed_hosts: os01,os02,os03
cluster.initial_master_nodes: os01,os02,os03
plugins.security.ssl.transport.pemkey_filepath: certificates/os01/os01.key # relative path
plugins.security.ssl.transport.pemcert_filepath: certificates/os01/os01.pem
plugins.security.ssl.http.pemkey_filepath: certificates/os01/os01.key
plugins.security.ssl.http.pemcert_filepath: certificates/os01/os01.pem
DISABLE_INSTALL_DEMO_CONFIG: «true»
JAVA_HOME: /usr/share/opensearch/jdk
bootstrap.memory_lock: «true» # along with the memlock settings below, disables swapping
network.host: «0.0.0.0»
ulimits:
memlock:
soft: -1
hard: -1
volumes:
– «./opensearch.yml:/usr/share/opensearch/config/opensearch.yml»
– «./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml»
– «os-data1:/usr/share/opensearch/data»
– «./certs:/usr/share/opensearch/config/certificates:ro»
ports:
– 9200:9200
– 9600:9600 # required for Performance Analyzer
os02:
restart: always
image: opensearchproject/opensearch:latest
environment:
OPENSEARCH_JAVA_OPTS: «-Xms1024m -Xmx1024m» # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
node.name: os02
discovery.seed_hosts: os01,os02,os03
cluster.initial_master_nodes: os01,os02,os03
plugins.security.ssl.transport.pemkey_filepath: certificates/os02/os02.key # relative path
plugins.security.ssl.transport.pemcert_filepath: certificates/os02/os02.pem
plugins.security.ssl.http.pemkey_filepath: certificates/os02/os02.key
plugins.security.ssl.http.pemcert_filepath: certificates/os02/os02.pem
DISABLE_INSTALL_DEMO_CONFIG: «true»
JAVA_HOME: /usr/share/opensearch/jdk
bootstrap.memory_lock: «true» # along with the memlock settings below, disables swapping
network.host: «0.0.0.0»
ulimits:
memlock:
soft: -1
hard: -1
volumes:
– «./opensearch.yml:/usr/share/opensearch/config/opensearch.yml»
– «./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml»
– «os-data2:/usr/share/opensearch/data»
– «./certs:/usr/share/opensearch/config/certificates:ro»
os03:
restart: always
image: opensearchproject/opensearch:latest
environment:
OPENSEARCH_JAVA_OPTS: «-Xms1024m -Xmx1024m» # minimum and maximum Java heap size, recommend setting both to 50% of system RAM
node.name: os03
discovery.seed_hosts: os01,os02,os03
cluster.initial_master_nodes: os01,os02,os03
plugins.security.ssl.transport.pemkey_filepath: certificates/os03/os03.key # relative path
plugins.security.ssl.transport.pemcert_filepath: certificates/os03/os03.pem
plugins.security.ssl.http.pemkey_filepath: certificates/os03/os03.key
plugins.security.ssl.http.pemcert_filepath: certificates/os03/os03.pem
DISABLE_INSTALL_DEMO_CONFIG: «true»
JAVA_HOME: /usr/share/opensearch/jdk
bootstrap.memory_lock: «true» # along with the memlock settings below, disables swapping
network.host: «0.0.0.0»
ulimits:
memlock:
soft: -1
hard: -1
volumes:
– «./opensearch.yml:/usr/share/opensearch/config/opensearch.yml»
– «./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml»
– «os-data3:/usr/share/opensearch/data»
– «./certs:/usr/share/opensearch/config/certificates:ro»
osdashboards:
restart: always
image: opensearchproject/opensearch-dashboards:latest
ports:
– 5601:5601
volumes:
– «./certs:/usr/share/opensearch-dashboards/config/certificates:ro»
– «./opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml»
environment:
OPENSEARCH_HOSTS: ‘[«https://os01:9200″,»https://os02:9200″,»https://os03:9200»]’ # must be a string with no spaces when specified as an environment variable
DISABLE_INSTALL_DEMO_CONFIG: «true»
volumes:
os-data1:
os-data2:
os-data3:
Guarda y sal del archivo ‘docker-compose.yml‘ cuando hayas terminado.
Con esto, crearás 4 contenedores/servicios para los despliegues de OpenSearch. A continuación encontrarás información detallada sobre cada contenedor.
- 3 contenedores OpenSearch os01, os02 y os03 – Se utilizarán para crear el cluster OpenSearch. Estos contenedores se basan en la imagen‘opensearchproject/opensearch:latest‘ y en las mismas configuraciones‘opensearch.yml‘ e‘internal_users.yml’.
- Un contenedor OpenSearch Dashboards ‘osdashboards’ se basa en la imagen ‘opensearchproject/opensearch-dashboards:latest’ y está conectado a tres hosts de OpenSearch os01, os02 y os03. Además, desactivarás la configuración de demostración en el contenedor OpenSearch Dashboards.
- Todos los contenedores OpenSearch y OpenSearch Dashboards estarán protegidos mediante certificados TLS personalizados que están disponibles en el directorio‘certs‘.
- El contenedor OpenSearch expondrá dos puertos 9200 y 9600, y el contenedor OpenSearch Dashboards expondrá el puerto 5601.
Configurar OpenSearch y OpenSearch Dashboards
En este paso, crearás una nueva configuración para OpenSearch ‘opensearch.yml’ y para OpenSearch Dashboards ‘opensearch_dashbaords.yml‘. Al final, debes asegurarte de que todas las configuraciones y certificados necesarios están disponibles en el directorio del proyecto OpenSearch.
Abre el archivo de configuración de OpenSearch ‘opensearch.yml‘ utilizando el siguiente comando del editor nano.
sudo nano opensearch.yml
Añade las siguientes líneas al archivo. Asegúrate de cambiar la ruta de los certificados CA y el DN de los certificados admin y node. Con esto, configurarás un clúster OpenSearch con el nombre‘os-cluster‘.
cluster.name: os-cluster network.host: 0.0.0.0
bootstrap.memory_lock: «true» # along with the memlock settings below, disables swapping
plugins.security.allow_unsafe_democertificates: true
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemtrustedcas_filepath: certificates/ca/ca.pem
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemtrustedcas_filepath: certificates/ca/ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.authcz.admin_dn:
– ‘CN=ADMIN,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
plugins.security.nodes_dn:
– ‘CN=os00,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
– ‘CN=os01,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
– ‘CN=os02,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
– ‘CN=os03,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
– ‘CN=os04,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
– ‘CN=os05,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
– ‘CN=os06,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
– ‘CN=os07,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA’
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: [«all_access», «security_rest_api_access»]
cluster.routing.allocation.disk.threshold_enabled: false
opendistro_security.audit.config.disabled_rest_categories: NONE
opendistro_security.audit.config.disabled_transport_categories: NONE
Guarda el archivo ‘opensearch.yml’ y sal del editor cuando hayas terminado.
A continuación, abre el archivo de configuración de los paneles de control de OpenSearch‘opensearch_dashboards.yml‘ utilizando el comando nano del editor que aparece a continuación.
nano opensearch_dashboards.yml
Añade las siguientes líneas al archivo. Asegúrate de cambiar el nombre de usuario y la contraseña de los Tableros OpenSearch con los datos del usuario‘kibanaserver‘ en el archivo ‘ internal_users.yml’.
server.name: os_dashboards server.host: "0.0.0.0"
opensearch.username: kibanaserver
opensearch.password: password
opensearch.requestHeadersWhitelist: [authorization, securitytenant]
opensearch_security.multitenancy.enabled: true
opensearch_security.multitenancy.tenants.preferred: [Private, Global]
opensearch_security.readonly_mode.roles: [kibana_read_only]
# Use this setting if you are running opensearch-dashboards without https
opensearch_security.cookie.secure: false
# Encrypt traffic between the browser and OpenSearch-Dashboards
server.ssl.enabled: true
server.ssl.certificate: «/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.pem»
server.ssl.key: «/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.key»
# Encrypt traffic between OpenSearch-Dashboards and Opensearch
opensearch.ssl.certificateAuthorities: [«/usr/share/opensearch-dashboards/config/certificates/ca/ca.pem»]
opensearch.ssl.verificationMode: full
Guarda y sal del archivo cuando hayas terminado.
Por último, ejecuta el siguiente comando apt para instalar el paquete tree y verificar la lista de archivos y directorios de tu despliegue de OpenSearch.
sudo apt install tree tree .
Deberías recibir un resultado como éste.
Con esto, toda la preparación para desplegar OpenSearch a través de Docker ha terminado. Estás listo para desplegar OpenSearch mediante Docker y Docker Compose.
Desplegar el cluster OpenSearch y los paneles OpenSearch
Antes de empezar, asegúrate de que estás en el directorio del proyecto OpenSearch‘opensearch-project‘. A continuación, ejecuta el siguiente comando‘docker compose‘ para crear e iniciar el despliegue de OpenSearch.
docker compose up -d
Deberías recibir una salida como ésta – Hay 3 contenedores OpenSearch os01, os02 y os03 creados e iniciados. También se ha creado e iniciado el contenedor OpenSearch Dashboards‘osdashboards‘.
Comprueba la lista de servicios/contenedores en ejecución en tu proyecto OpenSearch mediante el siguiente comando.
docker compose ps
Si ves que el‘STATUS’ es‘Up‘, entonces el contenedor/servicio está en ejecución. En la sección ‘PUERTOS‘ deberías ver los puertos expuestos por el contenedor a la máquina anfitriona.
Con el cluster OpenSearch en funcionamiento, ahora debes aplicar la nueva configuración de usuarios que has creado mediante el archivo‘internal_users.yml ‘. Para ello, puedes ejecutar el siguiente comando‘docker‘. Además, asegúrate de esperar unos 30-60 segundos antes de ejecutar este comando para asegurarte de que el clúster OpenSearch se está ejecutando.
El siguiente comando ejecutará el script bash‘securityadmin.sh‘ en el contenedor/servicio‘os01‘ y aplicará nuevos usuarios en tu clúster OpenSearch.
docker compose exec os01 bash -c "chmod +x plugins/opensearch-security/tools/securityadmin.sh && bash plugins/opensearch-security/tools/securityadmin.sh -cd config/opensearch-security -icl -nhnv -cacert config/certificates/ca/ca.pem -cert config/certificates/ca/admin.pem -key config/certificates/ca/admin.key -h localhost"
Salida:
A continuación, ejecuta el siguiente comando para asegurarte de que el contenedor se está ejecutando. A continuación, puedes verificar la lista de puertos abiertos en el host Docker mediante el siguiente comando ss.
docker compose ps ss -tulpn
Salida: los puertos 9200 y 9600 son utilizados por el cluster OpenSearch y el puerto 5601 es utilizado por OpenSearch Dashboards.
Por último, puedes verificar la autenticación en el clúster OpenSearch mediante el nombre de usuario y la contraseña que has creado en el archivo ‘internal_users.yml’.
Realiza una autenticación como usuario admin en el cluster OpenSearch.
curl https://192.168.5.100:9200 -u admin:password -k
Salida – La autenticación se ha realizado correctamente y deberías ver los detalles del software OpenSearch que estás utilizando actualmente en tu cluster.
Realiza una autenticación como usuario kibanaserver en el cluster OpenSearch.
curl https://192.168.5.100:9200 -u kibanaserver:password -k
Salida – La autenticación se ha realizado correctamente y deberías ver los detalles del software OpenSearch que estás utilizando actualmente en tu clúster.
Con esto, ya has desplegado el clúster OpenSearch y los Tableros OpenSearch mediante Docker y Docker Compose. En el siguiente paso, accederás a tu despliegue de OpenSearch Dashboards y verificarás la conexión entre OpenSearch Dashboards y el clúster OpenSearch.
Además, cuando tengas un error en tu despliegue de OpenSearch, puedes comprobar los registros de cada contenedor mediante el comando ‘docker compose’ que aparece a continuación.
Uso básico ‘docker compose’ para comprobar los registros.
docker compose logs docker compose logs SERVICE
Comprobación de registros de contenedores/servicios específicos mediante el comando ‘docker compose’.
docker compose logs osdashboards docker compose logs os01 docker compose logs os02 docker compose logs os03
Acceso a los paneles de OpenSearch
Abre tu navegador web y visita la dirección IP de tu servidor seguida del puerto‘5601‘ de OpenSearch Dashboards (es decir: https://192.168.5.100:5601/). Aparecerá la página de inicio de sesión de OpenSearch Dashboards.
Introduce el usuario «kibanaserver» y la contraseña, y haz clic en«Iniciar sesión«.
Si lo consigues, aparecerá la siguiente página. Haz clic en «Explorar por mi cuenta» y verás la página de inicio del Panel de control de OpenSearch.
Con esto, ya tienes el OpenSearch Dashboards en marcha y la autenticación activada. Además, los Paneles de OpenSearch se están ejecutando bajo conexiones HTTPS seguras a través de los certificados SSL/TLS que has generado.
A continuación, verifica la conexión entre los Cuadros de mando OpenSearch y el clúster OpenSearch a través de la API OpenSearch.
Haz clic en el menú de la izquierda, desplázate a la sección Gestión y haz clic en«Herramientas de desarrollo«.
Ahora introduce la consulta‘GET /‘ en la consola y pulsa el botón de reproducción. Cuando lo consigas, deberías ver la salida en el lado derecho con información detallada sobre tu servidor OpenSearch. Además, puedes ver en la parte superior derecha el código HTTP‘200 – OK‘ que confirma que la consulta se ha ejecutado sin errores.
Introduce otra consulta‘GET _cat/nodes?format=json&filter_path=ip,name‘ para verificar los nodos OpenSearch que están disponibles en el clúster OpenSearch. Deberías ver tres nodos diferentes en el clúster OpenSearch, os01 con la dirección IP 172.23.0 .5, os02 con la dirección IP‘172.23.0.3‘, y os3 con la dirección IP‘172.23.0.2‘.
Esto confirma que los tableros OpenSearch están conectados al clúster OpenSearch.
Conclusión
En este tutorial, has instalado OpenSearch mediante Docker y Docker Compose en un servidor Ubuntu 22.04. Has creado el Cluster OpenSearch con 3 contenedores diferentes en Docker. También has asegurado OpenSearch con certificados TLS, has activado la autenticación y la autorización, y has configurado los usuarios en OpenSearch. Además, también has configurado y optimizado un servidor Linux Ubuntu para desplegar OpenSearch.
También has instalado los cuadros de mando de OpenSearch mediante Docker y Docker Compose. Luego, también has conectado el contenedor OpenSearch Dashboards a OpenSearch Cluster.
Con esta configuración, ahora puedes explorar más sobre OpenSearch, añadir alguna integración a tu OpenSearch, configurar autenticación adicional y muchas cosas más. Puedes obtener más información sobre OpenSearch en la documentación oficial de OpenSearch.