Hvad er OpenSearch, og hvorfor skal jeg installere det?
OpenSearch er en distribueret søge- og analysemotor baseret på Apache Lucene.
Det bruges som et værktøj til at hjælpe med søgninger, analyser og overvågning.
Nogle systemer som f.eks. Magento, WordPress osv. kan bruge dette til at fremskynde og gøre søgningen mere relevant.
ElasticSearch eller OpenSearch?
Valget er dit. OpenSearch er en fork af ElasticSearch 7.10.2, den sidste version før ElasticSearch ændrede sin licensform.
Hvor kan jeg finde mere dokumentation om OpenSearch?
Bemærk venligst
Denne vejledning beskriver, hvordan du kan sætte OpenSearch op med en reverse proxy foran, der håndterer automatisk certifikat- og password-login.
Den beskriver dog ikke, hvordan man sætter en klynge op til OpenSearch, hvilket anbefales, hvis man vil køre det i produktion.
Den beskriver heller ikke, hvordan du firewaller Oderland Cloud, hvis du har brug for at lukke for adgang fra f.eks. internettet. en IP-adresse, som f.eks. hvis du vil begrænse adgangen fra en anden Cloud-server eller fra vores andre tjenester såsom Managed Server, Agency eller Web Hosting.
Udførelse
Vi opretter en server i Oderland Cloud ved hjælp af Docker og peger et værtsnavn (f.eks. domæne eller subdomæne) på serverens nye IP-adresse.
Derefter går vi ind på serveren med ssh. Derefter opretter vi et docker-netværk, som vi kalder caddy. Det bruges til de containere, du ønsker at få automatisk TLS (https://).
Vi opretter en mappestruktur samt en docker-compose.yml-fil, der fortæller os, hvilke tjenester der skal køres, og hvordan de skal konfigureres, ved at angive det samme værtsnavn, som vi pegede på serveren.
Vi opretter en adgangskode ved hjælp af Caddy hash-password til brug for grundlæggende auth i filen docker-compose.yml.
Derefter starter vi vores nye docker compose stack op og tester, at vi får certifikater og et svar fra OpenSearch.
Forberedelser
Opret først en server i Oderland Cloud med Docker, se en af vejledningerne nedenfor, hvis du har brug for hjælp.
https://www.oderland.se/support/artikel/sa-installerar-du-docker-engine-i-oderland-cloud/
Punktets værtsnavn (domæne eller underdomæne)
Peg et passende værtsnavn på serverens ipv4-adresse. Du skal udføre dette trin, så vi automatisk kan hente et TLS-certifikat fra Letsencrypt.
Udvid den virtuelle hukommelse, og bliv medlem af docker-gruppen
SSH ind på serveren.
Vi kører alle kommandoer som debian-brugeren, men har brug for at bruge sudo af og til.
Start med at blive medlem af docker-gruppen og aktiver den til din session.
Vi er også nødt til at udvide vm.max_map_count, da OpenSearch ellers kan forårsage nogle undtagelser, hvor hukommelsen er opbrugt.
sudo usermod -aG docker $USER newgrp docker echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.d/opensearch.conf sudo sysctl -p
Oprettelse af Docker-netværk
Opret derefter et docker-netværk, som vi bruger til de containere, vi vil proxy’e via Caddy, og administrer automatisk Let’s Encrypt/Zero SSL for at få sikker forbindelse.
docker network create caddy
Opret et hash-kodeord til Basic Auth til Caddy
Vi bruger hash-password fra Caddy til at hashe en adgangskode. Kopier ikke teksten nedenfor, men erstat teksten PASSWORD med et godtkodeord, som du skal bruge i din applikation til at oprette forbindelse til OpenSearch.
Vi erstatter $ med $$ med sed, så hashen vil fungere i docker-compose.yml, ellers vil den blive fortolket som variabler.
docker run --rm lucaslorentz/caddy-docker-proxy:ci-alpine hash-password --plaintext PASSWORD|sed 's/\$/\$\$/g'
Opsætning af filen docker-compose.yml
Nu opretter vi mappen til docker-compose.yml-filen og tilføjer teksten nedenfor.
Erstat HASHED_PASSWORD med den adgangskode-hash, du fik ovenfor.
mkdir -p ~/compose/opensearch cat~/compose/opensearch/docker-compose.yml version: "3.7" services: caddy: image: lucaslorentz/caddy-docker-proxy:ci-alpine ports: - 80:80 - 443:443 environment: - CADDY_INGRESS_NETWORKS=caddy networks: - caddy volumes: - /var/run/docker.sock:/var/run/docker.sock - caddy_data:/data restart: unless-stopped opensearch: image: opensearchproject/opensearch:2.11.1 volumes: - osdata01:/usr/share/opensearch/data environment: - "cluster.name=opensearch-cluster" - "node.name=os-node01" - "discovery.type=single-node" - "bootstrap.memory_lock=true" - "plugins.security.disabled=true" - "OPENSEARCH_JAVA_OPTS=-Xms2G -Xmx2G" labels: caddy: HOSTNAME caddy.reverse_proxy: "{{upstreams 9200}}" caddy.basicauth: /* caddy.basicauth.admin: HASHED_PASSWORD networks: - caddy ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 restart: unless-stopped volumes: osdata01: driver: local caddy_data: driver: local networks: caddy: external: true EOF
Vi har også sat det maksimale hukommelsesforbrug for Java-motoren til 2 GB ovenfor. Det kan være nødvendigt at øge denne samt serverens hukommelse, hvis du har store indekser.
Indtast dit værtsnavn
Hvis du har angivet et værtsnavn, som du vil bruge til serveren eller til OpenSearch, kan du nu redigere kodestykket ovenfor og ændre HOSTNAME til dit valgte værtsnavn. Du kan også gøre det bagefter med sed-kommandoen vist nedenfor.
Til demoformål har vi oprettet os.oderland.cloud, så vi kan gå ind på https://os.oderland.cloud for at få adgang til OpenSearch. Eksemplet ser derefter ud som følger med sed-kommandoen.
sed -i 's/HOSTNAME/os.oderland.cloud/g' ~/compose/opensearch/docker-compose.yml
Opstart af OpenSearch og Caddy
Start derefter vores nye docker compose stack.
cd ~/compose/opensearch docker compose up -d
Derefter downloades alle billeder/layers, og tjenesterne startes op.
Du kan følge loggen via:
docker compose logs -f
Ofte stillede spørgsmål
Skift værtsnavn
Hvis du redigerer filen docker-compose.yml bagefter og skifter til et andet værtsnavn, skal du genstarte stakken og gennemtvinge nye konfigurationer via:
docker compose up --force-recreate -d
Sådan styrer du Caddy Proxy
Læs mere om Caddy-proxyen, og hvordan du kan styre den via f.eks. stier, eller hvordan man tilføjer flere domæner til den samme tjeneste.