OpenSearch · 23 min read · Sep 12, 2025

Cómo instalar OpenSearch a través de Docker en Ubuntu 22.04

OpenSearch es un proyecto impulsado por la comunidad de Amazon y un fork de Elasticsearch y Kibana. Es un motor de búsqueda y suite de análisis completamente de código abierto con características ricas y funcionalidad innovadora. El componente principal del proyecto OpenSearch es OpenSearch (un fork de Elasticsearch) y los OpenSearch Dashboards (un fork de Kibana). Ambos componentes proporcionan características como seguridad empresarial, alertas, aprendizaje automático, SQL, gestión del estado del índice y más.

OpenSearch es 100% de código abierto y está licenciado bajo Apache 2.0. Te permite ingerir, asegurar, buscar, agregar, ver y analizar datos fácilmente para una serie de casos de uso como análisis de registros, búsqueda de aplicaciones, búsqueda empresarial y más.

En este tutorial, instalarás y configurarás OpenSearch - un motor de búsqueda y suite de análisis de código abierto - y OpenSearch Dashboards - una herramienta de visualización de código abierto - a través de Docker en un servidor Ubuntu 22.04. Desplegarás un clúster de OpenSearch con múltiples contenedores y un único OpenSearch Dashboard a través de Docker y Docker Compose. También asegurarás tu implementación con certificados TLS personalizados y habilitarás la autenticación y autorización.

Esta guía utiliza un servidor Ubuntu genérico fresco, 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 un mínimo de RAM 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, ahora puedes comenzar la instalación de OpenSearch.

Configurando el sistema

En este primer paso, prepararás tu sistema Ubuntu para el despliegue de OpenSearch. Necesitarás deshabilitar SWAP y la paginación, luego aumentarás el mapa de memoria máxima a través del archivo ‘/etc/sysctl.conf ‘.

Ejecuta el siguiente comando para deshabilitar el swap en tu sistema. El comando ‘sed’ aquí deshabilitará 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 ‘ deshabilitará el swap en la sesión actual.

sudo sed -i '/ swap / s/^\(.*\)$/#
1/g' /etc/fstab  
sudo swapoff -a

A continuación, verifica el estado del swap a través del siguiente comando. Si está deshabilitado, deberías obtener una salida ‘ 0 ‘ en la sección de swap.

free -m

Salida:

disable swap

Por último, agregarás la configuración al archivo ‘ /etc/sysctl.conf’ para aumentar los mapas de memoria máxima en tu sistema Ubuntu.

Ejecuta el siguiente comando para agregar el parámetro ‘ vm.max_map_count=262144 ‘ al final de la línea del archivo ‘ /etc/sysctl.conf’ . Luego, aplica los cambios a través del 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 es exitoso, tu mapa de memoria máxima debería ser ‘ 262144 ‘.

cat /proc/sys/vm/max_map_count

Salida:

setup sysctl

Con el swap deshabilitado y el mapa de memoria máxima aumentado a ‘262144’, a continuación, comenzarás la instalación del motor Docker y Docker Compose.

Instalando Docker CE y Docker Compose

Hay múltiples formas de desplegar e instalar OpenSearch, puedes instalar OpenSearch de manera tradicional en una máquina virtual, o instalarlo en un entorno de contenedor.

Si prefieres la instalación tradicional en una máquina virtual, puedes instalar OpenSearch manualmente a través de Tarball, o a través del gestor de paquetes (para distribuciones basadas en RHEL). Para el despliegue en contenedor, puedes instalar OpenSearch con Docker y Kubernetes.

En este ejemplo, instalarás OpenSearch en el entorno de contenedor a través del motor Docker y Docker Compose. Así que ahora, estarás instalando los paquetes de Docker desde el repositorio oficial de Docker.

Para comenzar, ejecuta el siguiente comando apt para instalar las dependencias básicas. Ingresa y cuando se te pida, presiona ENTER para continuar.

sudo apt install ca-certificates curl gnupg lsb-release

Salida:

install basic dependencies

A continuación, ejecuta el siguiente comando para agregar la clave GPG y el repositorio para los paquetes de 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 a través del comando apt a continuación.

sudo apt update

Salida:

update repo

Con el repositorio de Docker agregado, ahora puedes instalar el motor Docker y el plugin Docker Compose usando el siguiente comando apt. Cuando se te pida, ingresa y luego presiona ENTER para continuar.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Salida:

install docker and docker compose

El servicio Docker se iniciará y habilitará automáticamente. Puedes verificar el servicio Docker a través de la siguiente utilidad de 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 al inicio. Y el estado del servicio Docker está en ejecución.

Por último, para permitir que tu usuario no root ejecute el contenedor Docker, debes agregar tu usuario al grupo ‘ docker ‘. Ejecuta el siguiente comando usermod para agregar tu usuario al grupo ‘ docker ‘. Además, asegúrate de cambiar el nombre de usuario por el tuyo.

sudo usermod -aG docker alice

Ahora puedes iniciar sesión como tu usuario y ejecutar el contenedor Docker a través del siguiente comando.

su - alice  
docker run hello-world

Cuando sea exitoso, deberías obtener el mensaje hello-world del contenedor Docker como la siguiente captura de pantalla.

verify docker

Descargando imágenes de Docker de OpenSearch

En este paso, descargarás las imágenes de OpenSearch y OpenSearch Dashboards de DockerHub. Luego, también ejecutarás un nuevo contenedor de 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:

download opensearch image

download opensearch dashboards

Después de que las descargas terminen, ejecuta el siguiente comando para verificar la lista de imágenes de Docker en tu sistema. Verás que las imágenes de 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 usando el siguiente comando. Esto creará y ejecutará el contenedor de OpenSearch en un modo único y expondrá el puerto TCP predeterminado 9200 y 9600 en la máquina host.

docker run -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" opensearchproject/opensearch:latest

Verifica la lista del contenedor en ejecución a través del comando ‘ docker ps ‘ a continuación.

docker ps

Deberías recibir una salida como esta - El contenedor de OpenSearch se ha creado y está en ejecución. Puertos TCP expuestos 9200 y 9600 tanto en el contenedor como en el host de Docker.

Puedes acceder a tu contenedor de OpenSearch a través del comando curl a continuación. El nombre de usuario y la contraseña predeterminados para el contenedor de OpenSearch son ‘ admin ‘.

curl https://localhost:9200 -ku 'admin:admin'

Cuando sea exitoso, deberías obtener una salida como esta - El contenedor de OpenSearch está en ejecución y accesible a través de la máquina host de Docker.

verify opensearch container

Ahora puedes ejecutar el siguiente comando ‘docker’ para detener y eliminar el contenedor de OpenSearch. Porque en el siguiente paso, crearás un clúster de 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 el contenedor de OpenSearch se haya eliminado, ejecuta el comando ‘docker ps ‘ con la opción adicional ‘ -a ‘. Esto te mostrará los contenedores disponibles con ambos estados, en ejecución y detenidos.

docker ps -a

Salida:

remove container

Configurando el directorio del proyecto

Inicia sesión en tu usuario con el siguiente comando. Este ejemplo utiliza un usuario ‘alice’, así que asegúrate de cambiar el nombre de usuario en el siguiente comando.

su - alice

Ahora crea un nuevo directorio de proyecto ‘ opensearch-project ‘ que se utilizará como el directorio raíz principal de tu proyecto, y el directorio ‘ certs ‘ que se utilizará para almacenar certificados TLS personalizados.

mkdir -p ~/opensearch-project/certs; cd ~/opensearch-project

Dentro del directorio ‘ opensearch-project’, ejecuta el siguiente comando para crear nuevos archivos que se utilizarán para crear contenedores de OpenSearch y los OpenSearch Dashboards.

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.yml - configuración personalizada para los contenedores de OpenSearch.
  • opensearch_dashbaords.yml - configuración personalizada para el contenedor de OpenSearch Dashboards.
  • internal_users.yml - autenticación y autorización de usuario personalizada para OpenSearch y OpenSearch Dashboards.

Generando certificados SSL/TLS

En este paso, generarás múltiples certificados TLS que se utilizarán para asegurar tu implementación de OpenSearch. Generarás los siguientes certificados:

  • Certificados CA raíz: Estos certificados se utilizarán para firmar otros certificados.
  • Certificados de administrador: Estos certificados se utilizarán para obtener derechos administrativos para realizar todas las tareas relacionadas con el plugin de seguridad.
  • Certificados de OpenSearch Dashboards: Estos certificados se utilizarán para asegurar los OpenSearch Dashboards y te permitirán acceder a OpenSearch Dashboards a través de conexiones HTTPS.
  • Certificados de nodo y cliente: Estos certificados serán utilizados por nodos y clientes dentro del clúster de OpenSearch.

Para comenzar, ejecuta el siguiente comando para crear nuevos directorios que se utilizarán para almacenar certificados TLS.

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 implementación de OpenSearch.

setup certs

Generar certificados CA

Genera una clave privada para los certificados CA raíz usando lo siguiente.

openssl genrsa -out certs/ca/ca.key 2048

Ahora genera un certificado CA raíz autofirmado a través del 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 CA raíz ‘ ca.key ‘ y el certificado CA raíz ‘ ca.pem ‘. Puedes verificar los certificados CA que has generado a través del siguiente comando.

ls certs/ca/

Salida - Deberías obtener la clave privada CA ‘ ca.key ‘ y el archivo del certificado CA ‘ ca.pem ‘.

Generar certificados de administrador

Genera la nueva clave privada del certificado de administrador ‘ admin-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 ‘ 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) del administrador a partir de la clave privada ‘ admin.key ‘. Tu CSR generada ahora 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 la CSR del administrador con el certificado CA raíz y la clave privada. La salida del certificado de administrador 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 a través del siguiente comando.

ls certs/ca/

Salida - Deberías ver los archivos del certificado de administrador ‘ admin.pem ‘ y la clave privada ‘ admin.key ‘.

Generar certificados de OpenSearch Dashboards

Genera el nuevo certificado que se utilizará para los OpenSearch Dashboards.

Ejecuta el siguiente comando para generar la clave privada ‘os-dashboards-temp.key’ y convertir 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 OpenSearch Dashboards. Tu CSR generada ahora 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 la CSR de OpenSearch Dashboards con el certificado CA raíz y la clave privada. La salida 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 los 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 del certificado de OpenSearch Dashboards ‘ os-dashboards.pem’ y la clave privada ‘ os-dashboards.key ‘.

Generar certificados para nodos de OpenSearch

Ejecuta el siguiente comando para generar certificados de nodo. Con esto, crearás múltiples directorios bajo el directorio ‘certs’ y generarás certificados TLS para múltiples 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

Verifica la lista de directorios en el directorio ‘certs’.

ls certs/

Salida - Deberías obtener nuevos directorios ‘ os01, os02, y os03.

generate node certificates

Por último, verifica la lista de certificados que están disponibles en los directorios os01, os02, y os03 a través del siguiente comando.

ls certs/os01/  
ls certs/os02/  
ls certs/os03/

Salida - En cada directorio, deberías obtener dos certificados ‘ osX.key ‘ y ‘ osX.pem ‘.

list nodes certificates

Por último, debes cambiar la propiedad del directorio ‘ certs ‘ a ‘ 1000 ‘ a través del siguiente comando. Esto permitirá que los contenedores de Docker accedan al directorio ‘ certs ‘.

sudo chown -R 1000:1000 certs/

Con los certificados TLS generados, a continuación, generarás contraseñas hash y definirás usuarios de OpenSearch.

Configurando el usuario

En este paso, generarás un hash de contraseña que será utilizado por OpenSearch y OpenSearch Dashboards. Generarás dos hashes de contraseña para dos usuarios diferentes, 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 OpenSearch temporal 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 ingresa tu contraseña y deberías obtener el hash de contraseña en tu terminal. Copia la contraseña hash generada y vuelve a ejecutar el comando para generar otro hash de contraseña.

Salida - Para el hash de contraseña generado para los usuarios de OpenSearch.

generate password hash

A continuación, abre el archivo ‘ internal_users.yml ‘ usando el siguiente comando del editor nano.

nano internal_users.yml

Agrega 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 implementación de OpenSearch. el usuario ‘ admin ‘ como administrador de OpenSearch y el usuario ‘ kibanaserver ‘ que se utilizará para conectarse a OpenSearch Dashboards.

---  
# Esta es la base de datos de usuarios internos  
# El valor hash es un hash bcrypt y puede ser generado con plugin/tools/hash.sh  
  
_meta:  
  type: "internalusers"  
  config_version: 2  
  
# Define tus usuarios internos aquí  
  
admin:  
  hash: "$2y$12$y8UzXWoZKQc8GTgGsRz4g.CarjlC6sMPYN8XOD/NPQysRi2oq.Ws6"  
  reserved: true  
  backend_roles:  
  - "admin"  
  description: "Usuario Admin"  
  
kibanaserver:  
  hash: "$2y$12$AKpGe4tM5nIWYFoM56yRue22pQh0jFfx59MUgUKnBu8qnyGeAm2Ze"  
  reserved: true  
  description: "Usuario de OpenSearch Dashboards"

Guarda el archivo y sal del editor cuando termines.

internal_users.yml

Configuración del script docker-compose.yml

En este paso, crearás un nuevo script de Docker Compose para desplegar OpenSearch y OpenSearch Dashboards. Crearás múltiples contenedores de OpenSearch para configurar el clúster de OpenSearch, y configurarás un contenedor de OpenSearch Dashboards que estará conectado al clúster de OpenSearch.

Abre el archivo ‘ docker-compose.yml ‘ usando el siguiente comando del editor nano.

nano docker-compose.yml

Agrega las siguientes líneas al archivo.

version: '3.7'  
  
services:  
  
  os01:  
    restart: always  
    image: opensearchproject/opensearch:latest  
    environment:  
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # tamaño mínimo y máximo de la memoria heap de Java, se recomienda establecer ambos al 50% de la RAM del sistema  
      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 # ruta relativa  
      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" # junto con la configuración de memlock a continuación, deshabilita el intercambio  
      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 # requerido para el Analizador de Rendimiento  
  
  os02:  
    restart: always  
    image: opensearchproject/opensearch:latest  
    environment:  
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # tamaño mínimo y máximo de la memoria heap de Java, se recomienda establecer ambos al 50% de la RAM del sistema  
      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 # ruta relativa  
      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" # junto con la configuración de memlock a continuación, deshabilita el intercambio  
      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" # tamaño mínimo y máximo de la memoria heap de Java, se recomienda establecer ambos al 50% de la RAM del sistema  
      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 # ruta relativa  
      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" # junto con la configuración de memlock a continuación, deshabilita el intercambio  
      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"]' # debe ser una cadena sin espacios cuando se especifica como variable de entorno  
      DISABLE_INSTALL_DEMO_CONFIG: "true"  
  
volumes:  
  os-data1:  
  os-data2:  
  os-data3:

Guarda y sal del archivo ‘ docker-compose.yml ‘ cuando termines.

Con esto, crearás 4 contenedores/servicios para los despliegues de OpenSearch. A continuación se detalla la información sobre cada contenedor.

  • 3 contenedores de OpenSearch os01, os02, y os03 - Esto se utilizará para crear el clúster de OpenSearch. Estos contenedores se basan en la imagen ‘ opensearchproject/opensearch:latest ‘ y las mismas configuraciones ‘ opensearch.yml ‘ y ‘ internal_users.yml’.
  • Un contenedor de OpenSearch Dashboards ‘osdashboards’ se basa en la imagen ‘ opensearchproject/opensearch-dashboards:latest ‘ y está conectado a los tres hosts de OpenSearch os01, os02, y os03. Además, deshabilitarás la configuración de demostración en el contenedor de OpenSearch Dashboards.
  • Todos los contenedores de OpenSearch y OpenSearch Dashboards estarán asegurados a través de certificados TLS personalizados que están disponibles en el directorio ‘ certs ‘.
  • El contenedor de OpenSearch expondrá dos puertos 9200 y 9600, y el contenedor de OpenSearch Dashboards expondrá el puerto 5601.

Configurando OpenSearch y OpenSearch Dashboards

En este paso, crearás una nueva configuración para OpenSearch ‘opensearch.yml’ y OpenSearch Dashboards ‘opensearch_dashbaords.yml’. Al final, debes asegurarte de que todas las configuraciones necesarias y certificados estén disponibles en el directorio del proyecto OpenSearch.

Abre el archivo de configuración de OpenSearch ‘ opensearch.yml ‘ usando el siguiente comando del editor nano.

sudo nano opensearch.yml

Agrega las siguientes líneas al archivo. Asegúrate de cambiar la ruta de los certificados CA y DN para ambos certificados de administrador y de nodo. Con esto, configurarás un clúster de OpenSearch con el nombre ‘ os-cluster ‘.

cluster.name: os-cluster  
network.host: 0.0.0.0  
  
bootstrap.memory_lock: "true" # junto con la configuración de memlock a continuación, deshabilita el intercambio  
  
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 termines.

opensearch.yml

A continuación, abre el archivo de configuración de OpenSearch Dashboards ‘ opensearch_dashboards.yml ‘ usando el siguiente comando del editor nano.

nano opensearch_dashboards.yml

Agrega las siguientes líneas al archivo. Asegúrate de cambiar el nombre de usuario y la contraseña de OpenSearch Dashboards con los detalles 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]  
# Usa esta configuración si estás ejecutando opensearch-dashboards sin https  
opensearch_security.cookie.secure: false  
  
# Encriptar tráfico entre el navegador y 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"  
  
# Encriptar tráfico entre OpenSearch-Dashboards y Opensearch  
opensearch.ssl.certificateAuthorities: ["/usr/share/opensearch-dashboards/config/certificates/ca/ca.pem"]  
opensearch.ssl.verificationMode: full

Guarda y sal del archivo cuando termines.

opensearch dashboard config

Por último, ejecuta el siguiente comando apt para instalar el paquete tree y verificar la lista de archivos y directorios de tu implementación de OpenSearch.

sudo apt install tree  
tree .

Deberías recibir una salida como esta.

list files and directories

Con esto, toda la preparación para desplegar OpenSearch a través de Docker está terminada. Estás listo para desplegar OpenSearch a través de Docker y Docker Compose.

Desplegando el clúster de OpenSearch y OpenSearch Dashboards

Antes de comenzar, asegúrate de que estás en el directorio del proyecto OpenSearch ‘ opensearch-project ‘. Luego, ejecuta el siguiente comando ‘ docker compose ‘ para crear e iniciar el despliegue de OpenSearch.

docker compose up -d

Deberías recibir una salida como esta - Se han creado y comenzado 3 contenedores de OpenSearch os01, os02, y os03. Además, el contenedor de OpenSearch Dashboards ‘ osdashboards ‘ se ha creado y comenzado.

start opensearch cluster and opensearch dashboards

Verifica la lista de servicios/contendores en ejecución en tu proyecto OpenSearch a través del siguiente comando.

docker compose ps

Si ves que el ‘ STATUS ‘ es ‘ Up ‘, entonces el contenedor/servicio está en ejecución. En la sección ‘ PORTS ‘ deberías ver los puertos expuestos por el contenedor a la máquina host.

Con el clúster de OpenSearch en ejecución, ahora debes aplicar la nueva configuración de usuario que has creado a través del archivo ‘ internal_users.yml ‘. Para lograr esto, puedes ejecutar el siguiente comando ‘ docker ‘. Además, asegúrate de esperar alrededor de 30-60 segundos antes de ejecutar este comando para asegurarte de que el clúster de OpenSearch esté en funcionamiento.

El siguiente comando ejecutará el script bash ‘ securityadmin.sh ‘ en el contenedor/servicio ‘ os01 ‘ y aplicará nuevos usuarios en tu clúster de 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:

apply new users

A continuación, ejecuta el siguiente comando para asegurarte de que el contenedor esté en ejecución. Luego, puedes verificar la lista de puertos abiertos en el host de Docker a través del comando ss a continuación.

docker compose ps  
ss -tulpn

Salida - los puertos 9200 y 9600 son utilizados por el clúster de OpenSearch y el puerto 5601 es utilizado por OpenSearch Dashboards.

list open ports

Por último, puedes verificar la autenticación en el clúster de OpenSearch a través del nombre de usuario y la contraseña que has creado en el archivo ‘internal_users.yml’.

Haz una autenticación como usuario administrador en el clúster de OpenSearch.

curl https://192.168.5.100:9200 -u admin:password -k

Salida - La autenticación es exitosa y deberías ver detalles del software OpenSearch que estás utilizando actualmente en tu clúster.

verify curl admin user

Haz una autenticación como usuario kibanaserver en el clúster de OpenSearch.

curl https://192.168.5.100:9200 -u kibanaserver:password -k

Salida - La autenticación es exitosa y deberías ver detalles del software OpenSearch que estás utilizando actualmente en tu clúster.

verify curl kibanaserver

Con esto, ahora has desplegado el clúster de OpenSearch y OpenSearch Dashboards a través de Docker y Docker Compose. En el siguiente paso, accederás a tu implementación de OpenSearch Dashboards y verificarás la conexión entre OpenSearch Dashboards y el clúster de OpenSearch.

Además, cuando tengas un error en tu implementación de OpenSearch, puedes verificar los registros de cada contenedor a través del comando ‘ docker compose ‘ a continuación.

Uso básico ‘ docker compose ‘ para verificar registros.

docker compose logs  
docker compose logs SERVICE

Verificando registros para contenedores/servicios específicos a través del comando ‘ docker compose ‘.

docker compose logs osdashboards  
docker compose logs os01  
docker compose logs os02  
docker compose logs os03

Accediendo a OpenSearch Dashboards

Abre tu navegador web y visita la dirección IP de tu servidor seguida del puerto de OpenSearch Dashboards ‘ 5601 ‘ (es decir: https://192.168.5.100:5601/). Deberías obtener la página de inicio de sesión de OpenSearch Dashboards.

Ingresa el usuario ‘kibanaserver’ y la contraseña, luego haz clic en ‘ Iniciar sesión ‘.

opensearch login

Cuando sea exitoso, deberías obtener la siguiente página. Haz clic en ‘ Explorar por mi cuenta ‘ y deberías ver la página de inicio de OpenSearch Dashboard.

opensearch dashboards

Con esto, tienes los OpenSearch Dashboards en funcionamiento y la autenticación está habilitada. Además, los OpenSearch Dashboards están funcionando bajo conexiones HTTPS seguras a través de los certificados SSL/TLS que has generado.

A continuación, verifica la conexión entre OpenSearch Dashboards y el clúster de OpenSearch a través de la API de OpenSearch.

Haz clic en el menú de la izquierda para ir a la sección Gestión y haz clic en ‘ Herramientas de desarrollo ‘.

Ahora ingresa la consulta ‘ GET / ‘ en la consola y haz clic en el botón de reproducción. Cuando sea exitoso, 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 ejecutó sin errores.

get status opensearch

Ingresa otra consulta ‘ GET _cat/nodes?format=json&filter_path=ip,name ‘ para verificar los nodos de OpenSearch que están disponibles en el clúster de OpenSearch. Deberías ver tres nodos diferentes en el clúster de OpenSearch, os01 con dirección IP 172.23.0.5, os02 con dirección IP ‘ 172.23.0.3 ‘, y os3 con dirección IP ‘ 172.23.0.2 ‘.

list nodes

Esto confirma que los OpenSearch Dashboards están conectados al clúster de OpenSearch.

Conclusión

En este tutorial, has instalado OpenSearch a través de Docker y Docker Compose en un servidor Ubuntu 22.04. Has creado un clúster de OpenSearch con 3 contenedores diferentes en Docker. También has asegurado OpenSearch con certificados TLS, habilitado la autenticación y autorización, y configurado usuarios en OpenSearch. Además de eso, también has configurado y optimizado un servidor Linux Ubuntu para desplegar OpenSearch.

También has instalado los OpenSearch Dashboards a través de Docker y Docker Compose. Luego, también has conectado el contenedor de OpenSearch Dashboards al clúster de OpenSearch.

Con esta configuración, ahora puedes explorar más sobre OpenSearch, agregar alguna integración a tu OpenSearch, configurar autenticación adicional, y mucho más. Puedes aprender más sobre todo esto en la documentación oficial de OpenSearch.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.