1. Home
  2. Cloud
  3. Hur installerar jag OpenSearch i Oderland Cloud?

Hur installerar jag OpenSearch i Oderland Cloud?

Denna guide är baserad på en Debian 12 image, med flavor a1-c1-m4 (1 core, 4GB ram) och en 10GB boot disk.

Vi har valt Caddy som reverse proxy med automatisk TLS stöd och basic auth, men det finns andra alternativ som t.ex. traefik, nginx eller att konfigurera OpenSearch security plugin med certifikat eller certbot.

OpenSearch logo

Vad är OpenSearch och varför vill jag installera det?

OpenSearch är en distribuerad sök- och analysmotor baserad på Apache Lucene.

Den används som ett verktyg för att hjälpa till vid sökningar, analyser och monitorering.

Vissa system som t.ex. Magento, WordPress m.m. kan använda denna för att snabba upp och göra sök mer relevant.

ElasticSearch eller OpenSearch?

Det väljer du själv. OpenSearch är en fork av ElasticSearch 7.10.2, dvs sista versionen innan ElasticSearch ändrade sin licensform.

Var hittar jag mer dokumentation om OpenSearch?

https://opensearch.org/

Observera

Den här guiden beskriver hur du kan sätta upp OpenSearch med en reverse proxy framför som hanterar automatiska certifikat och lösenordsinloggning.

Den tar dock ej upp hur man skapar upp ett kluster för OpenSearch, vilket är rekommenderat om man skall köra det i produktion.

Den tar inte heller upp hur man brandväggar i Oderland Cloud om du behöver låsa ned access från t.ex. en IP-adress, t.ex. om du vill begränsa access från en annan Cloud server eller från våra andra tjänster som Managed Server, Agency eller Webbhotell.

Utförande

Vi skapar en server i Oderland Cloud med Docker och pekar ett värdnamn (t.ex. domän eller subdomän) mot serverns nya ip-adress.

Därefter ssh:ar vi in till servern. Sedan skapar vi ett docker nätverk som vi döper till caddy. Det används till de containrar man vill få automatisk TLS (https://).

Vi skapar en mappstruktur samt en docker-compose.yml fil som talar om vilka tjänster som skall köras och hur de skall konfigureras och anger samma värdnamn som vi pekat till servern.

Vi skapar upp ett lösenord med hjälp av Caddy hash-password att använda för basic auth i docker-compose.yml filen.

Sen startar vi upp vår nya docker compose stack och testar att vi får certifikat och ett svar från OpenSearch.

Förberedelser

Skapa först en server i Oderland Cloud med Docker, kika på en av guiderna nedan om du behöver hjälp.

https://www.oderland.se/support/artikel/sa-installerar-du-en-ny-server-med-docker-engine-i-oderland-cloud/

https://www.oderland.se/support/artikel/sa-installerar-du-docker-engine-i-oderland-cloud/

Peka värdnamn (domän eller subdomän)

Peka ett lämpligt värdnamn till serverns ipv4 adress. Du behöver göra det här steget för att vi skall kunna få ut ett TLS certifikat från Letsencrypt automatiskt.

Utöka virtuellt minne och gå med i docker gruppen

SSH:a in till servern.

Vi kommer att köra samtliga kommandon som debian användaren, men behöver använda sudo ibland

Börja med att gå med i docker gruppen och aktivera den för din session.

Vi behöver också utöka vm.max_map_count då OpenSearch annars kan orsaka en del out of memory exceptions.

sudo usermod -aG docker $USER
newgrp docker
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.d/opensearch.conf
sudo sysctl -p

Skapa Docker nätverk

Skapa sedan ett docker nätverk som vi använder för de containers vi vill proxya via Caddy och automatiskt hantera Let’s Encrypt / Zero SSL för att få säker anslutning.

docker network create caddy

Skapa ett hashat lösenord för Basic Auth till Caddy

Vi använder oss av hash-password från Caddy för att hasha ett lösenord. Kopiera inte nedan rakt av, utan byt ut texten LÖSENORDET till ett bra lösenord som du sedan kommer behöva använda i din applikation för att ansluta till OpenSearch.

Vi ersätter $ mot $$ med sed så att hashen skall fungera i docker-compose.yml, annars tolkas det som variabler.

docker run --rm lucaslorentz/caddy-docker-proxy:ci-alpine hash-password --plaintext LÖSENORDET|sed 's/\$/\$\$/g'

Sätt upp docker-compose.yml filen

Nu skapar vi mappen för docker-compose.yml filen och lägger in texten nedan.
Ersätt HASHED_PASSWORD med lösenordshashen du fick ut ovan.

mkdir -p ~/compose/opensearch
cat << EOF > ~/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 sätter också max minnesanvändning för Javamotorn till 2GB ovan. Du kan behöva höja detta samt serverns minne om du har stora index.

Ange ditt värdnamn

Har du pekat ett värdnamn som du vill använda för servern eller för OpenSearch så kan du nu redigera kodsnutten ovan och ändra HOSTNAME till ditt valda värdnamn. Du kan också göra det i efterhand med sed kommandot som vi visar nedan.

I demo-syfte så skapade vi os.oderland.cloud så att vi sedan kan gå mot https:// os.oderland.cloud för att nå OpenSearch. Exemplet ser då ut följande med sed kommandot.

sed -i 's/HOSTNAME/os.oderland.cloud/g' ~/compose/opensearch/docker-compose.yml

Starta upp OpenSearch och Caddy

Starta sedan vår nya docker compose stack.

cd ~/compose/opensearch
docker compose up -d

Då hämtas samtliga images/layers och sedan startar tjänsterna upp.

Du kan följa loggen via:

docker compose logs -f

Vanliga frågor

Kan jag använda ElasticPress för WordPress ihop med OpenSearch?

Ja! Du bör dock använda dig av en snippet från deras sajt för att pluginen skall förstå vilken version som används.

När jag ansluter min Magento 2.4.x mot OpenSearch så klagar den på connection?

I skrivande stund (2024-02-15) finns en buggrapport där det beskrivs att Magento förväntar sig att anslutningen sker okrypterat mellan Magento och OpenSearch/ElasticSearch.

Vi rekommenderar naturligtvis inte detta, men tyvärr ligger detta helt på Magento/Adobe att lösa.

Ändra värdnamn

Om du editerar docker-compose.yml filen i efterhand och byter ut till annat värdnamn så behöver du starta om stacken och forcera nya configs via:

docker compose up --force-recreate -d

Hur kan man styra Caddy Proxyn

Läs mer om Caddy proxyn och hur du kan styra via t.ex. paths eller hur du lägger till fler domäner mot samma service.

Hjälpte den här guiden dig?

Relaterade guider

Behöver du mer hjälp?
Kan du inte hitta lösningen på ditt problem? Då kan du kontakta oss via e-post, chatt och telefon!
Kontakta oss