OpenSearch · 22 min read · Sep 12, 2025

Como Instalar OpenSearch via Docker no Ubuntu 22.04

OpenSearch é um projeto orientado pela comunidade da Amazon e um fork do Elasticsearch e Kibana. É um mecanismo de busca totalmente open-source e uma suíte de análises com recursos ricos e funcionalidades inovadoras. O principal componente do projeto OpenSearch é o OpenSearch (um fork do Elasticsearch) e os OpenSearch Dashboards (um fork do Kibana). Ambos os componentes fornecem recursos como segurança empresarial, alertas, aprendizado de máquina, SQL, gerenciamento de estado de índice e muito mais.

OpenSearch é 100% open-source e licenciado sob a licença Apache 2.0. Ele permite que você ingresse, proteja, busque, agregue, visualize e analise dados para uma série de casos de uso, como análise de logs, busca de aplicações, busca empresarial e muito mais.

Neste tutorial, você instalará e configurará o OpenSearch - um mecanismo de busca open-source e suíte de análises - e os OpenSearch Dashboards - uma ferramenta de visualização open-source - via Docker em um servidor Ubuntu 22.04. Você implantará um cluster OpenSearch com múltiplos contêineres e um único OpenSearch Dashboard via Docker e Docker Compose. Você também protegerá sua implantação com certificados TLS personalizados e autenticação e autorização habilitadas.

Este guia utiliza um servidor Ubuntu genérico fresco, então este tutorial inclui a instalação do motor Docker e do Docker Compose em um sistema Ubuntu 22.04.

Pré-requisitos

Para completar este guia, você deve ter os seguintes requisitos:

  • Um servidor Ubuntu 22.04 com RAM mínima de 4-8GB - Este exemplo usa um servidor Ubuntu com o nome do host ‘’ e um endereço IP ‘’.
  • Um usuário não-root com privilégios de administrador sudo/root.

Quando esses requisitos estiverem prontos, você pode começar a instalação do OpenSearch.

Configurando o Sistema

Neste primeiro passo, você preparará seu sistema Ubuntu para a implantação do OpenSearch. Você precisará desativar o SWAP e a paginação, em seguida, aumentará o mapeamento máximo de memória através do arquivo ‘/etc/sysctl.conf ‘.

Execute o comando abaixo para desativar o swap em seu sistema. O comando ‘sed’ aqui desativará o swap permanentemente através do arquivo ‘/etc/fstab ‘ adicionando o comentário ‘ # ‘ ao início da linha de configuração do swap. O comando ‘ swapoff ‘ desativará o swap na sessão atual.

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

Em seguida, verifique o status do swap através do comando abaixo. Se desativado, você deve obter uma saída ‘ 0 ‘ na seção de swap.

free -m

Saída:

disable swap

Por último, você adicionará a configuração ao arquivo ‘ /etc/sysctl.conf’ para aumentar os mapeamentos máximos de memória em seu sistema Ubuntu.

Execute o comando abaixo para adicionar o parâmetro ‘ vm.max_map_count=262144 ‘ ao final da linha do arquivo ‘ /etc/sysctl.conf’ . Em seguida, aplique as alterações através do comando ‘ sysctl -p ‘.

sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf  
sudo sysctl -p

Agora verifique os mapeamentos máximos de memória executando o comando abaixo. Se bem-sucedido, seu mapeamento máximo de memória deve ser ‘ 262144 ‘.

cat /proc/sys/vm/max_map_count

Saída:

setup sysctl

Com o swap desativado e o mapeamento máximo de memória aumentado para ‘262144’, você começará a instalação do motor Docker e do Docker Compose.

Instalando Docker CE e Docker Compose

Existem várias maneiras de implantar e instalar o OpenSearch, você pode instalar o OpenSearch de forma tradicional em uma máquina virtual ou instalá-lo no ambiente de contêiner.

Se você preferir a instalação tradicional em uma máquina virtual, pode instalar o OpenSearch manualmente via Tarball ou através do gerenciador de pacotes (para distribuições baseadas em RHEL). Para implantação em contêiner, você pode instalar o OpenSearch com Docker e Kubernetes.

Neste exemplo, você instalará o OpenSearch no ambiente de contêiner via motor Docker e Docker Compose. Então agora, você estará instalando pacotes Docker do repositório oficial do Docker.

Para começar, execute o comando apt abaixo para instalar as dependências básicas. Digite y quando solicitado e pressione ENTER para prosseguir.

sudo apt install ca-certificates curl gnupg lsb-release

Saída:

install basic dependencies

Em seguida, execute o comando abaixo para adicionar a chave GPG e o repositório para pacotes 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

Saída:

Depois disso, atualize e atualize seu índice de pacotes Ubuntu através do comando apt abaixo.

sudo apt update

Saída:

update repo

Com o repositório Docker adicionado, você pode agora instalar o motor Docker e o plugin Docker Compose usando o comando apt abaixo. Quando solicitado, digite y e pressione ENTER para prosseguir.

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

Saída:

install docker and docker compose

O serviço Docker será iniciado e habilitado automaticamente. Você pode verificar o serviço Docker através do seguinte comando utilitário systemctl.

sudo systemctl is-enabled docker  
sudo systemctl status docker

Você deve obter uma saída indicando que o serviço Docker está habilitado e será executado automaticamente na inicialização. E o status do serviço Docker está em execução.

Por último, para permitir que seu usuário não-root execute o contêiner Docker, você deve adicionar seu usuário ao grupo ‘ docker ‘. Execute o comando usermod abaixo para adicionar seu usuário ao grupo ‘ docker ‘. Além disso, certifique-se de alterar o nome de usuário pelo seu.

sudo usermod -aG docker alice

Agora você pode fazer login como seu usuário e executar o contêiner Docker através do comando abaixo.

su - alice  
docker run hello-world

Quando bem-sucedido, você deve receber a mensagem hello-world do contêiner Docker como a captura de tela a seguir.

verify docker

Baixando Imagens Docker do OpenSearch

Neste passo, você fará o download das imagens do OpenSearch e dos OpenSearch Dashboards do DockerHub. Em seguida, você também executará um novo contêiner OpenSearch para fins de teste.

Execute o seguinte comando para baixar as imagens do OpenSearch e dos OpenSearch Dashboards.

docker pull opensearchproject/opensearch:latest  
docker pull opensearchproject/opensearch-dashboards:latest

Saída:

download opensearch image

download opensearch dashboards

Após o download ser concluído, execute o comando abaixo para verificar a lista de imagens Docker em seu sistema. Você verá que as imagens do OpenSearch e dos OpenSearch Dashboards estão disponíveis em seu sistema.

docker images

Saída:

Em seguida, você também pode executar o OpenSearch via Docker diretamente usando o comando abaixo. Isso criará e executará o contêiner OpenSearch em um modo único e exporá as portas TCP padrão 9200 e 9600 na máquina host.

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

Verifique a lista do contêiner em execução através do comando ‘ docker ps ‘ abaixo.

docker ps

Você deve receber uma saída como esta - O contêiner OpenSearch foi criado e está em execução. As portas TCP 9200 e 9600 estão expostas tanto no contêiner quanto na máquina host Docker.

Você pode acessar seu contêiner OpenSearch através do comando curl abaixo. O nome de usuário e a senha padrão para o contêiner OpenSearch são ‘ admin ‘.

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

Quando bem-sucedido, você deve obter uma saída como esta - O contêiner OpenSearch está em execução e acessível através da máquina host Docker.

verify opensearch container

Agora você pode executar o comando ‘docker’ abaixo para parar e excluir o contêiner OpenSearch. Porque no próximo passo, você criará um cluster OpenSearch via Docker Compose. Certifique-se de alterar o nome do contêiner no seguinte comando.

docker stop container-name ou container-id  
docker rm container-name ou container-id

Para garantir que o contêiner OpenSearch seja removido, execute o comando ‘docker ps ‘ com a opção adicional ‘ -a ‘. Isso mostrará os contêineres disponíveis com ambos os status, em execução e encerrados.

docker ps -a

Saída:

remove container

Configurando o Diretório do Projeto

Faça login como seu usuário com o seguinte comando. Este exemplo usa um usuário ‘alice’, então certifique-se de alterar o nome de usuário no comando abaixo.

su - alice

Agora crie um novo diretório de projeto ‘ opensearch-project ‘ que será usado como o diretório raiz principal do seu projeto, e o diretório ‘ certs ‘ que será usado para armazenar certificados TLS personalizados.

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

Dentro do diretório ‘ opensearch-project’, execute o comando abaixo para criar novos arquivos que serão usados para criar contêineres OpenSearch e os OpenSearch Dashboards.

touch docker-compose.yml opensearch.yml opensearch_dashboards.yml internal_users.yml

A lista de arquivos:

  • docker-compose.yml - a configuração principal do Docker Compose para o projeto OpenSearch.
  • opensearch.yml - configuração personalizada para os contêineres OpenSearch.
  • opensearch_dashbaords.yml - configuração personalizada para o contêiner OpenSearch Dashboards.
  • internal_users.yml - autenticação e autorização de usuários personalizados para o OpenSearch e os OpenSearch Dashboards.

Gerando Certificados SSL/TLS

Neste passo, você gerará múltiplos certificados TLS que serão usados para proteger sua implantação do OpenSearch. Você gerará os seguintes certificados:

  • Certificados CA Raiz: Esses certificados serão usados para assinar outros certificados.
  • Certificados de Admin: Esses certificados serão usados para obter direitos administrativos para realizar todas as tarefas relacionadas ao plugin de segurança.
  • Certificados dos OpenSearch Dashboards: Esses certificados serão usados para proteger os OpenSearch Dashboards e permitir que você acesse os OpenSearch Dashboards via conexões HTTPS.
  • Certificados de Nó e Cliente: Esses certificados serão usados por nós e clientes dentro do cluster OpenSearch.

Para começar, execute o comando abaixo para criar novos diretórios que serão usados para armazenar os certificados TLS.

mkdir -p certs/{ca,os-dashboards}

Crie uma nova variável de ambiente ‘MYDN’ que será usada para criar novos certificados TLS. Certifique-se de alterar os detalhes com suas informações.

export MYDN="/C=CA/ST=ONTARIO/L=TORONTO/O=HWDOMAIN"

Agora você está pronto para gerar certificados TLS para sua implantação do OpenSearch.

setup certs

Gerar Certificados CA

Gere uma chave privada para os certificados CA raiz usando o abaixo.

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

Agora gere um certificado CA raiz autoassinado através do comando abaixo. O valor do parâmetro ‘- subj’ está usando a variável de ambiente ‘ MYDN ‘ que você criou na sua sessão atual.

openssl req -new -x509 -sha256 -days 1095 -subj "$MYDN/CN=CA" -key certs/ca/ca.key -out certs/ca/ca.pem

Com isso, você deve obter a chave privada CA raiz ‘ ca.key ‘ e o certificado CA raiz ‘ ca.pem ‘. Você pode verificar os certificados CA que você gerou através do seguinte comando.

ls certs/ca/

Saída - Você deve obter a chave privada CA ‘ ca.key ‘ e o certificado CA ‘ ca.pem ‘.

Gerar Certificados de Admin

Gere a nova chave privada do certificado de admin ‘ admin-temp.key ‘ e converta o certificado gerado para um algoritmo compatível com PKCS#12 (3DES). Com isso, sua chave privada de admin deve 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

Em seguida, execute o comando abaixo para gerar o CSR (Certificate Signing Request) de admin a partir da chave privada ‘ admin.key ‘. Seu CSR gerado agora deve ser o arquivo ‘ admin.csr ‘.

openssl req -new -subj "$MYDN/CN=ADMIN" -key certs/ca/admin.key -out certs/ca/admin.csr

Agora execute o comando abaixo para assinar o CSR de admin com o certificado CA raiz e a chave privada. A saída do certificado de admin é o arquivo ‘ 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, verifique a lista de seus certificados através do seguinte comando.

ls certs/ca/

Saída - Você deve ver os arquivos de certificado de admin ‘ admin.pem ‘ e a chave privada ‘ admin.key ‘.

Gerar Certificados dos OpenSearch Dashboards

Gere o novo certificado que será usado para os OpenSearch Dashboards.

Execute o seguinte comando para gerar a chave privada ‘os-dashboards-temp.key’ e converter o certificado gerado para um algoritmo compatível com PKCS#12 (3DES). Com isso, sua chave privada de admin deve 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

Em seguida, execute o comando abaixo para gerar o CSR (Certificate Signing Request) para os OpenSearch Dashboards. Seu CSR gerado agora deve ser o arquivo ‘ 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

Agora execute o comando abaixo para assinar o CSR dos OpenSearch Dashboards com o certificado CA raiz e a chave privada. A saída do certificado de admin é o arquivo ‘ 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, execute o seguinte comando para excluir o arquivo CSR dos OpenSearch Dashboards e verificar a lista de seus certificados para os OpenSearch Dashboards.

rm certs/os-dashboards/os-dashboards-temp.key certs/os-dashboards/os-dashboards.csr  
ls certs/os-dashboards/

Saída - Você deve ver os arquivos de certificado dos OpenSearch Dashboards ‘ os-dashboards.pem’ e a chave privada ‘ os-dashboards.key ‘.

Gerar Certificados para Nós do OpenSearch

Execute o seguinte comando para gerar certificados de nó. Com isso, você criará múltiplos diretórios sob o diretório ‘certs’ e gerará certificados TLS para múltiplos 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

Verifique a lista de diretórios no diretório ‘certs’.

ls certs/

Saída - Você deve obter novos diretórios ‘ os01, os02, e os03.

generate node certificates

Por último, verifique a lista de certificados que estão disponíveis nos diretórios os01, os02, e os03 através do comando abaixo.

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

Saída - Em cada diretório, você deve obter dois certificados ‘ osX.key ‘ e ‘ osX.pem ‘.

list nodes certificates

Por último, você deve alterar a propriedade do diretório ‘ certs ‘ para ‘ 1000 ‘ através do comando abaixo. Isso permitirá que os contêineres Docker acessem o diretório ‘ certs ‘.

sudo chown -R 1000:1000 certs/

Com os certificados TLS gerados, você agora gerará senhas hash e definirá usuários do OpenSearch.

Configurando Usuário

Neste passo, você gerará um hash de senha que será usado pelo OpenSearch e pelos OpenSearch Dashboards. Você gerará dois hashes de senha para dois usuários diferentes, em seguida, modificará o arquivo de configuração ‘internal_users.yml’ e os usuários do OpenSearch.

Execute o seguinte comando docker para gerar um novo hash de senha. Isso executará um contêiner OpenSearch temporário e executará o script ‘ hash.sh ‘ para gerar um hash de senha.

docker run -it --rm opensearchproject/opensearch sh -c "/usr/share/opensearch/plugins/opensearch-security/tools/hash.sh"

Agora insira sua senha e você deve obter o hash da senha no seu terminal. Copie a senha hash gerada e execute novamente o comando para gerar outro hash de senha.

Saída - Para a senha hash gerada para os usuários do OpenSearch.

generate password hash

Em seguida, abra o arquivo ‘ internal_users.yml ‘ usando o seguinte comando do editor nano.

nano internal_users.yml

Adicione as seguintes linhas ao arquivo e certifique-se de alterar a senha hash pela sua senha gerada. Com isso, você definirá dois usuários para sua implantação do OpenSearch. o usuário ‘ admin ‘ como um administrador para o OpenSearch e o usuário ‘ kibanaserver ‘ que será usado para se conectar aos OpenSearch Dashboards.

---  
# Este é o banco de dados de usuários internos  
# O valor hash é um hash bcrypt e pode ser gerado com plugin/tools/hash.sh  

_meta:  
  type: "internalusers"  
  config_version: 2  

# Defina seus usuários internos aqui  

admin:  
  hash: "$2y$12$y8UzXWoZKQc8GTgGsRz4g.CarjlC6sMPYN8XOD/NPQysRi2oq.Ws6"  
  reserved: true  
  backend_roles:  
  - "admin"  
  description: "Usuário Admin"  
  
kibanaserver:  
  hash: "$2y$12$AKpGe4tM5nIWYFoM56yRue22pQh0jFfx59MUgUKnBu8qnyGeAm2Ze"  
  reserved: true  
  description: "Usuário OpenSearch Dashboards"

Salve o arquivo e saia do editor quando terminar.

internal_users.yml

Configurando o Script docker-compose.yml

Neste passo, você criará um novo script Docker Compose para implantar o OpenSearch e os OpenSearch Dashboards. Você criará múltiplos contêineres OpenSearch para configurar o cluster OpenSearch, e configurará um contêiner OpenSearch Dashboards que estará conectado ao cluster OpenSearch.

Abra o arquivo ‘ docker-compose.yml ‘ usando o seguinte comando do editor nano.

nano docker-compose.yml

Adicione as seguintes linhas ao arquivo.

version: '3.7'  
  
services:  
  
  os01:  
    restart: always  
    image: opensearchproject/opensearch:latest  
    environment:  
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # tamanho mínimo e máximo da heap Java, recomenda-se definir ambos para 50% da RAM do 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 # caminho relativo  
      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 com as configurações de memlock abaixo, desativa a troca  
      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 # necessário para o Performance Analyzer  
  
  os02:  
    restart: always  
    image: opensearchproject/opensearch:latest  
    environment:  
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # tamanho mínimo e máximo da heap Java, recomenda-se definir ambos para 50% da RAM do 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 # caminho relativo  
      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 com as configurações de memlock abaixo, desativa a troca  
      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" # tamanho mínimo e máximo da heap Java, recomenda-se definir ambos para 50% da RAM do 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 # caminho relativo  
      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 com as configurações de memlock abaixo, desativa a troca  
      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"]' # deve ser uma string sem espaços quando especificada como uma variável de ambiente  
      DISABLE_INSTALL_DEMO_CONFIG: "true"  
  
volumes:  
  os-data1:  
  os-data2:  
  os-data3:

Salve e saia do arquivo ‘ docker-compose.yml ‘ quando terminar.

Com isso, você criará 4 contêineres/serviços para as implantações do OpenSearch. Abaixo estão informações detalhadas sobre cada contêiner.

  • 3 contêineres OpenSearch os01, os02, e os03 - Isso será usado para criar o cluster OpenSearch. Esses contêineres são baseados na imagem ‘ opensearchproject/opensearch:latest ‘ e nas mesmas configurações ‘ opensearch.yml ‘ e ‘ internal_users.yml’.
  • Um contêiner OpenSearch Dashboards ‘osdashboards’ é baseado na imagem ‘ opensearchproject/opensearch-dashboards:latest ‘ e está conectado a três hosts do OpenSearch os01, os02, e os03. Além disso, você desativará a configuração de demonstração no contêiner OpenSearch Dashboards.
  • Todos os contêineres OpenSearch e OpenSearch Dashboards serão protegidos através de certificados TLS personalizados que estão disponíveis no diretório ‘ certs ‘.
  • O contêiner OpenSearch exporá duas portas 9200 e 9600, e o contêiner OpenSearch Dashboards exporá a porta 5601.

Configurando OpenSearch e OpenSearch Dashboards

Neste passo, você criará uma nova configuração para o OpenSearch ‘opensearch.yml’ e os OpenSearch Dashboards ‘opensearch_dashbaords.yml’. No final, você deve garantir que todas as configurações e certificados necessários estejam disponíveis no diretório do projeto OpenSearch.

Abra o arquivo de configuração do OpenSearch ‘ opensearch.yml ‘ usando o seguinte comando do editor nano.

sudo nano opensearch.yml

Adicione as seguintes linhas ao arquivo. Certifique-se de alterar o caminho dos certificados CA e DN para ambos os certificados de admin e de nó. Com isso, você configurará um cluster OpenSearch com o nome ‘ os-cluster ‘.

cluster.name: os-cluster  
network.host: 0.0.0.0  
  
bootstrap.memory_lock: "true" # junto com as configurações de memlock abaixo, desativa a troca  
  
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

Salve o arquivo ‘opensearch.yml’ e saia do editor quando terminar.

opensearch.yml

Em seguida, abra o arquivo de configuração dos OpenSearch Dashboards ‘ opensearch_dashboards.yml ‘ usando o comando do editor nano abaixo.

nano opensearch_dashboards.yml

Adicione as seguintes linhas ao arquivo. Certifique-se de alterar o nome de usuário e a senha dos OpenSearch Dashboards com os detalhes do usuário ‘ kibanaserver ‘ no arquivo ‘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 esta configuração se você estiver executando opensearch-dashboards sem https  
opensearch_security.cookie.secure: false  
  
# Criptografe o tráfego entre o navegador e os 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"  
  
# Criptografe o tráfego entre os OpenSearch-Dashboards e o Opensearch  
opensearch.ssl.certificateAuthorities: ["/usr/share/opensearch-dashboards/config/certificates/ca/ca.pem"]  
opensearch.ssl.verificationMode: full

Salve e saia do arquivo quando terminar.

opensearch dashboard config

Por último, execute o comando apt abaixo para instalar o pacote tree e verificar a lista de arquivos e diretórios da sua implantação do OpenSearch.

sudo apt install tree  
tree .

Você deve receber uma saída como esta.

list files and directories

Com isso, toda a preparação para implantar o OpenSearch via Docker está finalizada. Você está pronto para implantar o OpenSearch via Docker e Docker Compose.

Implantando o Cluster OpenSearch e os OpenSearch Dashboards

Antes de começar, certifique-se de que você está no diretório do projeto OpenSearch ‘ opensearch-project ‘. Em seguida, execute o seguinte comando ‘ docker compose ‘ para criar e iniciar a implantação do OpenSearch.

docker compose up -d

Você deve receber uma saída como esta - Existem 3 contêineres OpenSearch os01, os02, e os03 criados e iniciados. Além disso, o contêiner OpenSearch Dashboards ‘ osdashboards ‘ é criado e iniciado.

start opensearch cluster and opensearch dashboards

Verifique a lista de serviços/contêineres em execução no seu projeto OpenSearch através do seguinte comando.

docker compose ps

Se você ver que o ‘ STATUS ‘ está ‘ Up ‘, então o contêiner/serviço está em execução. Na seção ‘ PORTS ‘ você deve ver as portas expostas pelo contêiner para a máquina host.

Com o cluster OpenSearch em execução, você deve agora aplicar a nova configuração de usuário que você criou através do arquivo ‘ internal_users.yml ‘. Para conseguir isso, você pode executar o seguinte comando ‘ docker ‘. Além disso, certifique-se de esperar cerca de 30-60 segundos antes de executar este comando para garantir que o cluster OpenSearch esteja em execução.

O seguinte comando executará o script ‘ securityadmin.sh ‘ no contêiner/service ‘ os01 ‘ e aplicará novos usuários no seu cluster 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"

Saída:

apply new users

Em seguida, execute o comando abaixo para garantir que o contêiner esteja em execução. Então, você pode verificar a lista de portas abertas na máquina host Docker através do comando ss abaixo.

docker compose ps  
ss -tulpn

Saída - as portas 9200 e 9600 estão sendo usadas pelo cluster OpenSearch e a porta 5601 está sendo usada pelos OpenSearch Dashboards.

list open ports

Por último, você pode verificar a autenticação no cluster OpenSearch através do nome de usuário e senha que você criou no arquivo ‘internal_users.yml’.

Faça uma autenticação como um usuário admin no cluster OpenSearch.

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

Saída - A autenticação é bem-sucedida e você deve ver detalhes do software OpenSearch que você está usando atualmente em seu cluster.

verify curl admin user

Faça uma autenticação como um usuário kibanaserver no cluster OpenSearch.

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

Saída - A autenticação é bem-sucedida e você deve ver detalhes do software OpenSearch que você está usando atualmente em seu cluster.

verify curl kibanaserver

Com isso, você agora implantou o cluster OpenSearch e os OpenSearch Dashboards via Docker e Docker Compose. No próximo passo, você acessará sua implantação dos OpenSearch Dashboards e verificará a conexão entre os OpenSearch Dashboards e o cluster OpenSearch.

Além disso, quando você tiver um erro na sua implantação do OpenSearch, pode verificar os logs de cada contêiner através do comando ‘ docker compose ‘ abaixo.

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

docker compose logs  
docker compose logs SERVICE

Verificando logs para contêineres/serviços específicos através do comando ‘ docker compose ‘.

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

Acessando os OpenSearch Dashboards

Abra seu navegador da web e visite o endereço IP do seu servidor seguido pela porta dos OpenSearch Dashboards ‘ 5601 ‘ (ou seja: https://192.168.5.100:5601/). Você deve obter a página de login dos OpenSearch Dashboards.

Insira o usuário ‘kibanaserver’ e a senha, em seguida, clique em ‘ Log in ‘.

opensearch login

Quando bem-sucedido, você deve obter a seguinte página. Clique em ‘ Explore on my own ‘ e você deve ver a página inicial dos OpenSearch Dashboards.

opensearch dashboards

Com isso, você tem os OpenSearch Dashboards em execução e a autenticação está habilitada. Além disso, os OpenSearch Dashboards estão em execução sob conexões HTTPS seguras através dos certificados SSL/TLS que você gerou.

Em seguida, verifique a conexão entre os OpenSearch Dashboards e o cluster OpenSearch através da API OpenSearch.

Clique no menu à esquerda, vá para a seção Management e clique em ‘ Dev Tools ‘.

Agora insira a consulta ‘ GET / ‘ no console e clique no botão de play. Quando bem-sucedido, você deve ver a saída do lado direito com informações detalhadas sobre seu servidor OpenSearch. Além disso, você pode ver no canto superior direito o código HTTP ‘ 200 - OK ‘ que confirma que a consulta foi executada sem erro.

get status opensearch

Insira outra consulta ‘ GET _cat/nodes?format=json&filter_path=ip,name ‘ para verificar os nós do OpenSearch que estão disponíveis no cluster OpenSearch. Você deve ver três nós diferentes no cluster OpenSearch, os01 com endereço IP 172.23.0.5, os02 com endereço IP ‘ 172.23.0.3 ‘, e os3 com endereço IP ‘ 172.23.0.2 ‘.

list nodes

Isso confirma que os OpenSearch Dashboards estão conectados ao cluster OpenSearch.

Conclusão

Neste tutorial, você instalou o OpenSearch via Docker e Docker Compose no servidor Ubuntu 22.04. Você criou um Cluster OpenSearch com 3 contêineres diferentes no Docker. Você também protegeu o OpenSearch com certificados TLS, habilitou autenticação e autorização, e configurou usuários no OpenSearch. Além disso, você também configurou e otimizou um servidor Linux Ubuntu para implantar o OpenSearch.

Você também instalou os OpenSearch Dashboards via Docker e Docker Compose. Em seguida, você também conectou o contêiner dos OpenSearch Dashboards ao Cluster OpenSearch.

Com essa configuração, você agora pode explorar mais sobre o OpenSearch, adicionar algumas integrações ao seu OpenSearch, configurar autenticações adicionais e muito mais. Você pode aprender mais sobre tudo isso no site oficial da documentação do OpenSearch.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.