Ako nainštalovať OpenSearch cez Docker na Ubuntu 22.04


Na tejto stránke

  1. Predpoklady
  2. Nastavenie systému
  3. Inštalácia Docker CE a Docker Compose
  4. Sťahovanie obrázkov OpenSearch Docker
  5. Nastavenie adresára projektu
  6. Generovanie SSL/TLS certifikátov

    1. Generujte certifikáty CA
    2. Generovať správcovské certifikáty
    3. Generujte certifikáty informačných panelov OpenSearch
    4. Generujte certifikáty pre uzly OpenSearch
  7. Nastavenie používateľa
  8. Nastavte skript docker-compose.yml
  9. Nastavte informačné panely OpenSearch a OpenSearch
  10. Nasadenie OpenSearch Cluster a OpenSearch Dashboardov
  11. Prístup k informačným panelom OpenSearch
  12. Záver

OpenSearch je komunitou riadený projekt Amazonu a rozvetvenie Elasticsearch a Kibana. Je to plne open source vyhľadávací nástroj a analytický balík s bohatými funkciami a inovatívnymi funkciami. Hlavným komponentom projektu OpenSearch je OpenSearch (fork Elasticsearch) a OpenSearch Dashboards (fork Kibana). Obidva komponenty poskytujú funkcie, ako je podnikové zabezpečenie, upozornenia, strojové učenie, SQL, správa stavu indexu a ďalšie.

OpenSearch je 100% open source a je licencovaný pod licenciou Apache 2.0. Umožňuje vám jednoducho prijímať, zabezpečovať, vyhľadávať, agregovať, prezerať a analyzovať údaje pre množstvo prípadov použitia, ako je napríklad analýza protokolov, vyhľadávanie aplikácií, podnikové vyhľadávanie a ďalšie.

V tomto návode si nainštalujete a nastavíte OpenSearch – open source vyhľadávací nástroj a analytický balík – a OpenSearch Dashboards – open source vizualizačný nástroj – cez Docker na serveri Ubuntu 22.04. Prostredníctvom Docker a Docker Compose nasadíte klaster OpenSearch s viacerými kontajnermi a jedným informačným panelom OpenSearch. Svoje nasadenie zabezpečíte aj vlastnými certifikátmi TLS a povolenou autentifikáciou a autorizáciou.

Táto príručka používa nový generický server Ubuntu, takže tento tutoriál zahŕňa inštaláciu nástroja Docker a Docker Compose na systéme Ubuntu 22.04.

Predpoklady

Ak chcete dokončiť túto príručku, musíte mať nasledujúce požiadavky:

  • Server Ubuntu 22.04 s minimálnou pamäťou RAM 4-8 GB – Tento príklad používa server Ubuntu s názvom hostiteľa '' a IP adresou ''.
  • Používateľ bez oprávnenia root s oprávneniami správcu sudo/root.

Keď sú tieto požiadavky pripravené, môžete spustiť inštaláciu OpenSearch.

Nastavenie systému

V tomto prvom kroku pripravíte svoj systém Ubuntu na nasadenie OpenSearch. Budete musieť vypnúť SWAP a stránkovanie, potom zvýšite maximálnu pamäťovú mapu pomocou súboru '/etc/sysctl.conf'.

Spustite príkaz uvedený nižšie, aby ste deaktivovali výmenu vo vašom systéme. Príkaz 'sed' tu natrvalo zakáže swap cez súbor '/etc/fstab' pridaním komentára '#' na začiatok konfigurácie výmeny riadkov. Príkaz 'swapoff' zakáže výmenu v aktuálnej relácii.

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

Potom skontrolujte stav výmeny pomocou príkazu nižšie. Ak je zakázaná, v sekcii swap by sa mal zobraziť výstup „0“.

free -m

výstup:

Nakoniec pridáte konfiguráciu do súboru '/etc/sysctl.conf', aby ste zvýšili maximálne mapy pamäte vo vašom systéme Ubuntu.

Spustite príkaz uvedený nižšie a pridajte parameter 'vm.max_map_count=262144' na koniec riadku súboru '/etc/sysctl.conf'. Potom použite zmeny pomocou príkazu 'sysctl -p'.

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

Teraz overte maximálne mapy pamäte spustením nižšie uvedeného príkazu. Ak bude úspešná, mapa maximálnej pamäte by mala byť „262144“.

cat /proc/sys/vm/max_map_count

výstup:

Keď je swap deaktivovaný a maximálna pamäťová mapa sa zvýši na „262144“, potom spustíte inštaláciu enginu Docker a Docker Compose.

Inštalácia Docker CE a Docker Compose

Existuje niekoľko spôsobov, ako nasadiť a nainštalovať OpenSearch, môžete nainštalovať OpenSearch tradičným spôsobom na virtuálny počítač alebo ho nainštalovať do prostredia kontajnera.

Ak dávate prednosť tradičnej inštalácii na virtuálnom počítači, môžete OpenSearch nainštalovať manuálne cez Tarball alebo cez správcu balíkov (pre distribúcie založené na RHEL). Pre nasadenie kontajnerov si môžete nainštalovať OpenSearch s Docker a Kubernetes.

V tomto príklade nainštalujete OpenSearch do kontajnerového prostredia cez Docker engine a Docker compose. Takže teraz budete inštalovať balíčky Docker z oficiálneho úložiska Docker.

Ak chcete začať, spustite nižšie uvedený príkaz apt na inštaláciu základných závislostí. Po zobrazení výzvy zadajte y a pokračujte stlačením klávesu ENTER.

sudo apt install ca-certificates curl gnupg lsb-release

výstup:

Potom spustite príkaz uvedený nižšie a pridajte kľúč GPG a úložisko pre balíčky 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

výstup:

Potom aktualizujte a obnovte index balíkov Ubuntu pomocou príkazu apt nižšie.

sudo apt update

výstup:

S pridaným úložiskom Docker si teraz môžete nainštalovať Docker engine a doplnok Docker Compose pomocou nižšie uvedeného príkazu apt. Po zobrazení výzvy zadajte y a potom pokračujte stlačením klávesu ENTER.

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

výstup:

Služba Docker sa spustí a povolí automaticky. Službu Docker môžete overiť pomocou nasledujúceho príkazového nástroja systemctl.

sudo systemctl is-enabled docker
sudo systemctl status docker

Mali by ste dostať výstup, že služba Docker je povolená a bude sa spúšťať automaticky pri zavádzaní. A stav služby Docker je spustený.

Nakoniec, ak chcete, aby váš používateľ bez oprávnenia root mohol spúšťať kontajner Docker, musíte ho pridať do skupiny 'docker'. Spustite nižšie uvedený príkaz usermod a pridajte svojho používateľa do skupiny 'docker'. Nezabudnite tiež zmeniť používateľské meno so svojím používateľom.

sudo usermod -aG docker alice

Teraz sa môžete prihlásiť ako váš používateľ a spustiť kontajner Docker pomocou nižšie uvedeného príkazu.

su - alice
docker run hello-world

Keď budete úspešní, mali by ste dostať správu hello-world z kontajnera Docker, ako je nasledujúca snímka obrazovky.

Sťahovanie obrázkov OpenSearch Docker

V tomto kroku si stiahnete obrázky OpenSearch a OpenSearch Dashboards z DockerHub. Potom na testovacie účely spustíte aj nový kontajner OpenSearch.

Spustite nasledujúci príkaz na stiahnutie obrázkov OpenSearch a OpenSearch Dashboards.

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

výstup:

Po dokončení sťahovania spustite príkaz uvedený nižšie a skontrolujte zoznam obrázkov Docker vo vašom systéme. Uvidíte, že obrázky OpenSearch a OpenSearch Dashboards sú dostupné vo vašom systéme.

docker images

výstup:

Ďalej môžete tiež spustiť OpenSearch cez Docker priamo pomocou nižšie uvedeného príkazu. Toto vytvorí a spustí kontajner OpenSearch v jedinom režime a odkryje predvolený port TCP 9200 a 9600 na hostiteľskom počítači.

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

Overte zoznam spustených kontajnerov pomocou príkazu 'docker ps' nižšie.

docker ps

Mali by ste dostať takýto výstup - Vytvorí sa kontajner OpenSearch a je spustený. Odkryté porty TCP 9200 a 9600 na kontajneri aj hostiteľovi Docker.

K svojmu kontajneru OpenSearch môžete pristupovať pomocou príkazu curl nižšie. Predvolené používateľské meno a heslo pre kontajner OpenSearch je 'admin'.

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

Keď budete úspešní, mali by ste získať takýto výstup – kontajner OpenSearch je spustený a prístupný cez hostiteľský počítač Docker.

Teraz môžete spustiť príkaz „docker“ nižšie a zastaviť a odstrániť kontajner OpenSearch. Pretože v ďalšom kroku vytvoríte klaster OpenSearch cez Docker Compose. Nezabudnite zmeniť názov kontajnera v nasledujúcom príkaze.

docker stop container-name or container-id
docker rm container-name or container-id

Ak chcete zaistiť, aby bol kontajner OpenSearch odstránený, spustite príkaz 'docker ps' s ďalšou možnosťou '-a'. Zobrazí sa vám dostupné kontajnery s oboma stavmi, spusteným a ukončeným.

docker ps -a

výstup:

Nastavenie adresára projektu

Prihláste sa k svojmu používateľovi pomocou nasledujúceho príkazu. Tento príklad používa používateľa „alica“, takže nezabudnite zmeniť používateľské meno v nižšie uvedenom príkaze.

su - alice

Teraz vytvorte nový adresár projektu 'opensearch-project', ktorý sa použije ako hlavný koreňový adresár vášho projektu, a adresár 'certs', ktorý sa použije na uloženie vlastné certifikáty TLS.

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

V adresári 'opensearch-project' spustite nižšie uvedený príkaz na vytvorenie nových súborov, ktoré sa použijú na vytvorenie kontajnerov OpenSearch a panelov OpenSearch.

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

Zoznam súborov:

  • docker-compose.yml – hlavná konfigurácia Docker Compose pre projekt OpenSearch.
  • opensearch.yml – vlastná konfigurácia pre kontajnery OpenSearch.
  • opensearch_dashbaords.yml – vlastná konfigurácia pre kontajner informačných panelov OpenSearch.
  • internal_users.yml – vlastné overenie a autorizácia používateľa pre informačné panely OpenSearch a OpenSearch.

Generovanie SSL/TLS certifikátov

V tomto kroku vygenerujete viacero certifikátov TLS, ktoré sa použijú na zabezpečenie vášho nasadenia OpenSearch. Vygenerujete nasledujúce certifikáty:

  • Certifikáty koreňovej CA: tieto certifikáty sa použijú na podpisovanie iných certifikátov.
  • Certifikáty správcu: Tieto certifikáty sa použijú na získanie správcovských práv na vykonávanie všetkých úloh súvisiacich s doplnkom zabezpečenia.
  • Certifikáty informačných panelov OpenSearch: Tieto certifikáty sa použijú na zabezpečenie informačných panelov OpenSearch a umožňujú vám prístup k informačným panelom OpenSearch prostredníctvom pripojení HTTPS.
  • Certifikáty uzlov a klientov: Tieto certifikáty budú používať uzly a klienti v rámci klastra OpenSearch.

Ak chcete začať, spustite príkaz uvedený nižšie a vytvorte nové adresáre, ktoré sa použijú pre reťazcové certifikáty TLS.

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

Vytvorte novú premennú prostredia 'MYDN', ktorá sa použije na vytvorenie nových certifikátov TLS. Nezabudnite zmeniť podrobnosti s vašimi informáciami.

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

Teraz ste pripravení generovať certifikáty TLS pre vaše nasadenie OpenSearch.

Generujte certifikáty CA

Vygenerujte súkromný kľúč pre certifikáty koreňovej CA pomocou nižšie uvedeného.

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

Teraz vygenerujte certifikát koreňovej CA s vlastným podpisom pomocou príkazu nižšie. Hodnota parametra '-subj' používa premennú prostredia 'MYDN', ktorú ste vytvorili počas aktuálnej relácie.

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

Takto by ste mali získať súkromný kľúč koreňovej CA 'ca.key' a certifikát koreňovej CA 'ca.pem'. Certifikáty CA, ktoré ste vygenerovali, môžete overiť pomocou nasledujúceho príkazu.

ls certs/ca/

Výstup – Mali by ste získať súkromný kľúč CA „ca.key“ a súbor certifikátu CA „ca.pem“.

Generovať správcovské certifikáty

Vygenerujte nový súkromný kľúč certifikátu správcu „admin-temp.key“ a skonvertujte vygenerovaný certifikát na algoritmus kompatibilný s PKCS#12 (3DES). V tomto prípade by váš súkromný kľúč správcu mal byť „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

Potom spustite príkaz uvedený nižšie a vygenerujte správu CSR (žiadosť o podpis certifikátu) zo súkromného kľúča 'admin.key'. Vaša vygenerovaná CSR by teraz mala byť súborom 'admin.csr'.

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

Teraz spustite nižšie uvedený príkaz na podpísanie CSR správcu pomocou koreňového certifikátu CA a súkromného kľúča. Výstupom certifikátu správcu je súbor '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

Nakoniec skontrolujte zoznam svojich certifikátov pomocou nasledujúceho príkazu.

ls certs/ca/

Výstup – Mali by ste vidieť súbory certifikátov správcu 'admin.pem' a súkromný kľúč 'admin.key'.

Generujte certifikáty informačných panelov OpenSearch

Vygenerujte nový certifikát, ktorý sa bude používať pre informačné panely OpenSearch.

Spustite nasledujúci príkaz na vygenerovanie súkromného kľúča 'os-dashboards-temp.key' a skonvertujte vygenerovaný certifikát na algoritmus kompatibilný s PKCS#12 (3DES). V tomto prípade by váš súkromný kľúč správcu mal byť „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

Potom spustite príkaz uvedený nižšie a vygenerujte CSR (žiadosť o podpis certifikátu) pre informačné panely OpenSearch. Vaša vygenerovaná CSR by mala byť teraz súborom '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

Teraz spustite príkaz uvedený nižšie a podpíšte CSR OpenSearch Dashboards pomocou koreňového certifikátu CA a súkromného kľúča. Výstupom certifikátu správcu je súbor '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

Nakoniec spustite nasledujúci príkaz na odstránenie súboru CSR OpenSearch Dashboards a overenie zoznamu vašich certifikátov pre OpenSearch Dashboards.

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

Výstup – Mali by ste vidieť súbory certifikátu OpenSearch Dashboards 'os-dashboards.pem' a súkromný kľúč 'os-dashboards.key'.

Generujte certifikáty pre uzly OpenSearch

Spustite nasledujúci príkaz na vygenerovanie certifikátov uzla. Vďaka tomu vytvoríte viacero adresárov v adresári „certs“ a vygenerujete certifikáty TLS pre viacerých hostiteľov.

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

Skontrolujte zoznam adresárov v adresári 'certs'.

ls certs/

Výstup – mali by ste získať nové adresáre 'os01, os02, a os03.

Nakoniec skontrolujte zoznam certifikátov, ktoré sú dostupné v adresároch os01, os02, a os03 pomocou príkazu nižšie.

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

Výstup – V každom adresári by ste mali získať dva certifikáty 'osX.key' a 'osX.pem'.

Nakoniec musíte zmeniť vlastníctvo adresára 'certs' na '1000' pomocou nižšie uvedeného príkazu. To umožní kontajnerom Docker prístup k adresáru 'certs'.

sudo chown -R 1000:1000 certs/

S vygenerovanými certifikátmi TLS budete ďalej generovať hashované heslá a definovať používateľov OpenSearch.

Nastavenie používateľa

V tomto kroku vygenerujete hash hesla, ktorý budú používať informačné panely OpenSearch a OpenSearch. Vygenerujete dve hodnoty hash hesiel pre dvoch rôznych používateľov, potom upravíte konfiguračný súbor 'internal_users.yml' a používateľov OpenSearch.

Spustite nasledujúci príkaz docker na vygenerovanie nového hash hesla. Tým sa spustí dočasný kontajner OpenSearch a spustí sa skript 'hash.sh' na vygenerovanie hash hesla.

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

Teraz zadajte svoje heslo a na váš terminál by ste mali dostať hashované heslo. Skopírujte vygenerované hash heslo a znova spustite príkaz, aby ste vygenerovali ďalšie hash heslo.

Výstup – na hashované heslo vygenerované pre používateľov OpenSearch.

Potom otvorte súbor 'internal_users.yml' pomocou nasledujúceho príkazu editora nano.

nano internal_users.yml

Pridajte do súboru nasledujúce riadky a nezabudnite zmeniť hashované heslo s vygenerovaným heslom. Týmto zadefinujete dvoch používateľov pre vaše nasadenie OpenSearch. používateľ 'admin' ako správca pre OpenSearch a používateľ 'kibanaserver', ktorý sa použije na pripojenie k informačným panelom 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"

Uložte súbor a po dokončení ukončite editor.

Nastavte skript docker-compose.yml

V tomto kroku vytvoríte nový skript Docker Compose na nasadenie panelov OpenSearch a OpenSearch. Vytvoríte viacero kontajnerov OpenSearch na nastavenie klastra OpenSearch a nastavíte kontajner OpenSearch Dashboards, ktorý bude pripojený ku klastru OpenSearch.

Otvorte súbor 'docker-compose.yml' pomocou nasledujúceho príkazu editora nano.

nano docker-compose.yml

Pridajte do súboru nasledujúce riadky.

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:

Po dokončení uložte a ukončite súbor 'docker-compose.yml'.

Týmto vytvoríte 4 kontajnery/služby pre nasadenia OpenSearch. Nižšie sú uvedené podrobné informácie o každom kontajneri.

  • 3 kontajnery OpenSearch os01, os02 a os03 – použijú sa na vytvorenie klastra OpenSearch. Tieto kontajnery sú založené na obrázku „opensearchproject/opensearch:latest“ a rovnakých konfiguráciách „opensearch.yml“ a „internal_users.yml“.
  • Kontajner OpenSearch Dashboards „osdashboards“ je založený na obrázku „opensearchproject/opensearch-dashboards:latest“ a je pripojený k trom hostiteľom OpenSearch os01, os02 a os03. Tiež zakážete demo konfiguráciu v kontajneri OpenSearch Dashboards.
  • Všetky kontajnery OpenSearch a OpenSearch Dashboards budú zabezpečené pomocou vlastných certifikátov TLS, ktoré sú dostupné v adresári 'certs'.
  • Kontajner OpenSearch zobrazí dva porty 9200 a 9600 a kontajner OpenSearch Dashboards zobrazí port 5601.

Nastavte informačné panely OpenSearch a OpenSearch

V tomto kroku vytvoríte novú konfiguráciu pre OpenSearch 'opensearch.yml' a OpenSearch Dashboards 'opensearch_dashbaords.yml'. Nakoniec sa musíte uistiť, že všetky potrebné konfigurácie a certifikáty sú dostupné v adresári projektu OpenSearch.

Otvorte konfiguračný súbor OpenSearch 'opensearch.yml' pomocou nasledujúceho príkazu editora nano.

sudo nano opensearch.yml

Pridajte do súboru nasledujúce riadky. Nezabudnite zmeniť cestu certifikátov CA a DN pre certifikáty správcu aj certifikáty uzla. Pomocou toho vytvoríte klaster OpenSearch s názvom '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

Uložte súbor 'opensearch.yml' a po dokončení ukončite editor.

Ďalej otvorte konfiguračný súbor OpenSearch Dashboards 'opensearch_dashboards.yml' pomocou nižšie uvedeného príkazu editora nano.

nano opensearch_dashboards.yml

Pridajte do súboru nasledujúce riadky. Nezabudnite zmeniť používateľské meno a heslo panelov OpenSearch s údajmi o používateľovi 'kibanaserver' v súbore '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

Po dokončení uložte a ukončite súbor.

Nakoniec spustite nižšie uvedený príkaz apt na inštaláciu stromového balíka a overte zoznam súborov a adresárov vášho nasadenia OpenSearch.

sudo apt install tree
tree .

Mali by ste dostať takýto výstup.

Týmto sú všetky prípravy na nasadenie OpenSearch cez Docker ukončené. Ste pripravení nasadiť OpenSearch cez Docker a Docker Compose.

Nasadenie OpenSearch Cluster a OpenSearch Dashboardov

Skôr ako začnete, uistite sa, že ste v adresári projektu OpenSearch 'opensearch-project'. Potom spustite nasledujúci príkaz 'docker compose' na vytvorenie a spustenie nasadenia OpenSearch.

docker compose up -d

Mali by ste dostať takýto výstup – sú vytvorené a spustené 3 kontajnery OpenSearch os01, os02 a os03. Taktiež sa vytvorí a spustí kontajner OpenSearch Dashboards „osdashboards“.

Overte zoznam spustených služieb/kontajnerov vo svojom projekte OpenSearch pomocou nasledujúceho príkazu.

docker compose ps

Ak vidíte, že „STATUS“ je „Hore“, kontajner/služba je spustená. V sekcii 'PORTS' by ste mali vidieť vystavené porty podľa kontajnera na hostiteľský počítač.

Keď je spustený klaster OpenSearch, musíte teraz použiť novú konfiguráciu používateľa, ktorú ste vytvorili prostredníctvom súboru 'internal_users.yml'. Aby ste to dosiahli, môžete spustiť nasledujúci príkaz 'docker'. Pred spustením tohto príkazu tiež počkajte približne 30 – 60 sekúnd, aby ste sa uistili, že klaster OpenSearch beží.

Nasledujúci príkaz spustí bash skript „securityadmin.sh“ v kontajneri/službe „os01“ a použije nových používateľov vo vašom klastri 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"

výstup:

Potom spustite nasledujúci príkaz, aby ste sa uistili, že kontajner je spustený. Potom môžete skontrolovať zoznam otvorených portov na hostiteľovi Docker pomocou príkazu ss nižšie.

docker compose ps
ss -tulpn

Výstup – porty 9200 a 9600 používa klaster OpenSearch a port 5601 používajú informačné panely OpenSearch.

Nakoniec môžete overiť autentizáciu v klastri OpenSearch pomocou používateľského mena a hesla, ktoré ste vytvorili v súbore 'internal_users.yml'.

Vykonajte overenie ako správca klastra OpenSearch.

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

Výstup – Autentifikácia je úspešná a mali by ste vidieť podrobnosti o softvéri OpenSearch, ktorý momentálne používate vo svojom klastri.

Vykonajte autentifikáciu ako používateľ kibanaserveru pre klaster OpenSearch.

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

Výstup – Autentifikácia je úspešná a mali by ste vidieť podrobnosti o softvéri OpenSearch, ktorý momentálne používate vo svojom klastri.

Vďaka tomu ste teraz nasadili klaster OpenSearch a informačné panely OpenSearch cez Docker a Docker Compose. V ďalšom kroku získate prístup k nasadeniu informačných panelov OpenSearch a overíte prepojenie medzi informačnými panelmi OpenSearch a klastrom OpenSearch.

Okrem toho, keď sa pri nasadení OpenSearch vyskytne chyba, môžete skontrolovať protokoly pre každý kontajner pomocou príkazu „docker compose“ nižšie.

Základné použitie „docker compose“ na kontrolu denníkov.

docker compose logs
docker compose logs SERVICE

Kontrola protokolov pre konkrétne kontajnery/služby pomocou príkazu 'docker compose'.

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

Prístup k informačným panelom OpenSearch

Otvorte webový prehliadač a navštívte IP adresu svojho servera, za ktorou nasleduje port OpenSearch Dashboards „5601“ (t. j. https://192.168.5.100:5601/). Mali by ste získať prihlasovaciu stránku OpenSearch Dashboards.

Zadajte používateľa 'kibanaserver' a heslo a potom kliknite na 'Prihlásiť sa'.

Keď budete úspešní, mali by ste dostať nasledujúcu stránku. Kliknite na „Preskúmať sám“ a mala by sa zobraziť domovská stránka informačného panela OpenSearch.

Vďaka tomu máte spustené informačné panely OpenSearch a je povolené overovanie. Panely OpenSearch sa tiež spúšťajú pod zabezpečenými pripojeniami HTTPS prostredníctvom certifikátov SSL/TLS, ktoré ste vygenerovali.

Ďalej overte prepojenie medzi informačnými panelmi OpenSearch a klastrom OpenSearch prostredníctvom API OpenSearch.

Kliknite na ponuku vľavo, prejdite do sekcie Správa a kliknite na položku Nástroje pre vývojárov.

Teraz zadajte na konzole dopyt „GET /“ a kliknite na tlačidlo prehrávania. Keď bude úspešný, na pravej strane by ste mali vidieť výstup s podrobnými informáciami o vašom serveri OpenSearch. Vpravo hore môžete vidieť aj kód HTTP '200 - OK', ktorý potvrdzuje, že dotaz sa vykoná bez chyby.

Zadajte ďalší dotaz „GET _cat/nodes?format=json&filter_path=ip,name“ na overenie uzlov OpenSearch, ktoré sú dostupné v klastri OpenSearch. V klastri OpenSearch by ste mali vidieť tri rôzne uzly, os01 s IP adresou 172.23.0.5, os02 s IP adresou '172.23. 0.3“ a os3 s adresou IP „172.23.0.2“.

Toto potvrdzuje, že informačné panely OpenSearch sú pripojené ku klastru OpenSearch.

Záver

V tomto návode ste nainštalovali OpenSearch cez Docker a Docker Compose na server Ubuntu 22.04. V Dockeri ste vytvorili OpenSearch Cluster s 3 rôznymi kontajnermi. OpenSearch ste tiež zabezpečili pomocou certifikátov TLS, povolili autentifikáciu a autorizáciu a nakonfigurovali používateľov v OpenSearch. Okrem toho ste tiež nakonfigurovali a optimalizovali server Ubuntu Linux na nasadenie OpenSearch.

Nainštalovali ste aj informačné panely OpenSearch cez Docker a Docker Compose. Potom ste tiež pripojili kontajner OpenSearch Dashboards k OpenSearch Cluster.

S týmto nastavením teraz môžete preskúmať viac o OpenSearch, pridať určitú integráciu do vášho OpenSearch, nastaviť ďalšie overenie a mnoho ďalších. Viac o všetkých o OpenSearch sa dozviete z oficiálnej dokumentácie OpenSearch.