Einleitung
Wenn die Konfiguration eines Suchsystems manuell verwaltet wird, wird die Reproduktion von Umgebungen schwierig und das Risiko von Konfigurationsfehlern steigt. Durch die Anwendung moderner DevOps-Methoden sollten Sie auch die Suchinfrastruktur als Code verwalten und automatisieren.
In diesem Artikel wird ein Ansatz vorgestellt, wie Sie Fess-Konfigurationen als Code verwalten und Deployments automatisieren.
Zielgruppe
Personen, die den Betrieb von Suchsystemen automatisieren moechten
Personen, die DevOps/IaC-Methoden auf die Suchinfrastruktur anwenden moechten
Personen mit Grundkenntnissen in Docker und CI/CD
Anwendung von Infrastructure as Code
Die folgenden Elemente werden fuer Fess-Umgebungen als „Code“ verwaltet.
Umgebungsdefinition mit Docker Compose
Docker-Compose-Datei fuer die Produktionsumgebung
Wir erweitern die in Teil 2 verwendete Grundkonfiguration und definieren eine fuer Produktionsumgebungen geeignete Konfiguration.
services:
fess:
image: ghcr.io/codelibs/fess:15.5.1
environment:
- SEARCH_ENGINE_HTTP_URL=http://opensearch:9200
- FESS_DICTIONARY_PATH=/usr/share/opensearch/config/dictionary/
ports:
- "8080:8080"
depends_on:
opensearch:
condition: service_healthy
restart: unless-stopped
opensearch:
image: ghcr.io/codelibs/fess-opensearch:3.6.0
environment:
- discovery.type=single-node
- OPENSEARCH_JAVA_OPTS=-Xmx4g -Xms4g
- DISABLE_INSTALL_DEMO_CONFIG=true
- DISABLE_SECURITY_PLUGIN=true
- FESS_DICTIONARY_PATH=/usr/share/opensearch/config/dictionary/
volumes:
- opensearch-data:/usr/share/opensearch/data
- opensearch-dictionary:/usr/share/opensearch/config/dictionary
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 90s
restart: unless-stopped
volumes:
opensearch-data:
opensearch-dictionary:
Die wichtigsten Punkte sind die folgenden.
Health-Check-Definition: Fess wird erst gestartet, wenn OpenSearch bereit ist
Volume-Persistenz: Daten werden dauerhaft gespeichert
Neustartrichtlinie: Automatische Wiederherstellung bei Ausfaellen
Explizite Konfiguration des JVM-Heaps
Automatisierung der Konfiguration mit der Admin-API
Durch die Verwendung der Fess-Admin-API koennen Sie Konfigurationen programmatisch verwalten, ohne die GUI zu verwenden.
Einstellungen exportieren
Exportieren Sie die aktuellen Fess-Einstellungen und speichern Sie sie als Code.
Sie koennen den Export ueber die Administrationskonsole unter [Systeminformationen] > [Backup] durchfuehren. Es ist auch moeglich, den Export ueber Skripte mit der Admin-API durchzufuehren.
Einstellungen importieren
Wenden Sie Einstellungen auf eine neue Fess-Umgebung an, indem Sie gespeicherte Konfigurationsdateien verwenden. Dies erleichtert die Wiederherstellung oder Replikation von Umgebungen.
Verwendung der fessctl-CLI
fessctl ist ein Kommandozeilenwerkzeug fuer Fess. Viele Operationen, die in der Administrationskonsole durchgefuehrt werden koennen, lassen sich auch ueber die Kommandozeile ausfuehren.
Hauptoperationen
Erstellen, Aktualisieren und Loeschen von Crawl-Einstellungen (Web, Dateisystem, Datenspeicher)
Ausfuehren von Scheduler-Jobs
Verwaltung von Benutzern, Rollen und Gruppen
Verwaltung von Sucheinstellungen wie Key Match, Labels und Boosts
Durch die Verwendung der CLI koennen Sie Konfigurationsaenderungen skripten und in CI/CD-Pipelines integrieren.
Aufbau von CI/CD-Pipelines
Workflow fuer Konfigurationsaenderungen
Verwalten Sie Konfigurationsaenderungen des Suchsystems mit dem folgenden Workflow.
Aenderung: Konfigurationsdateien aendern und in einem Git-Branch verwalten
Review: Aenderungen ueber Pull Requests ueberpruefen
Test: Verhalten in einer Staging-Umgebung verifizieren
Deployment: Einstellungen in der Produktionsumgebung anwenden
Automatisierungsbeispiel mit GitHub Actions
Dies ist ein Beispiel fuer die automatische Anwendung von Aenderungen in der Produktionsumgebung, wenn Konfigurationsdateiaenderungen gemergt werden.
name: Deploy Fess Config
on:
push:
branches: [main]
paths:
- 'fess-config/**'
- 'dictionary/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Apply dictionary updates
run: |
# Woerterbuchdateien an den Fess-Server uebertragen
scp dictionary/* fess-server:/opt/fess/dictionary/
- name: Verify Fess health
run: |
# Betriebsstatus von Fess ueber die Health-API pruefen
curl -s https://fess.example.com/api/v1/health
Automatisierung von Backups
Automatisieren Sie auch regelmaessige Backups.
Backup-Skript
Verwenden Sie cron oder CI/CD-Planungsfunktionen, um regelmaessige Backups zu erstellen.
#!/bin/bash
set -euo pipefail
BACKUP_DIR="/backup/fess/$(date +%Y%m%d)"
mkdir -p "${BACKUP_DIR}"
# Liste der Fess-Backup-Dateien abrufen
curl -s -o "${BACKUP_DIR}/fess-backup-files.json" \
-H "Authorization: Bearer ${FESS_TOKEN}" \
"https://fess.example.com/api/admin/backup/files"
# Konfigurationsdaten herunterladen (z.B. fess_config.bulk)
curl -s -o "${BACKUP_DIR}/fess_config.bulk" \
-H "Authorization: Bearer ${FESS_TOKEN}" \
"https://fess.example.com/api/admin/backup/file/fess_config.bulk"
# Alte Backups loeschen (aelter als 30 Tage)
find /backup/fess -type d -mtime +30 -exec rm -rf {} +
echo "Backup completed: ${BACKUP_DIR}"
Verfahren zur Umgebungsrekonstruktion
Dokumentieren Sie das Verfahren zur vollstaendigen Rekonstruktion einer Umgebung fuer die Notfallwiederherstellung oder den Aufbau von Testumgebungen.
Container mit Docker Compose starten
Warten, bis der OpenSearch-Health-Check green/yellow zurueckgibt
Fess-Einstellungen importieren (ueber Admin-API oder Wiederherstellungsfunktion)
Woerterbuchdateien platzieren
Crawl-Jobs ausfuehren
Betrieb verifizieren (Suchtests)
Wenn Sie dieses Verfahren skripten, koennen Sie Umgebungen schnell rekonstruieren.
Zusammenfassung
In diesem Artikel wurde ein Ansatz vorgestellt, wie Sie die Fess-Suchinfrastruktur mit DevOps-Methoden verwalten koennen.
Kodifizierung von Umgebungsdefinitionen mit Docker Compose
Automatisierung der Konfiguration mit der Admin-API und fessctl
Automatisierung des Deployments von Konfigurationsaenderungen mit CI/CD-Pipelines
Automatisierung von Backups und Verfahren zur Umgebungsrekonstruktion
Entwickeln Sie den Betrieb Ihrer Suchinfrastruktur von „Handbuecher lesen und manuell konfigurieren“ zu „Code ausfuehren und automatisch deployen“ weiter.
Im naechsten Artikel wird die Erweiterung von Fess durch Plugin-Entwicklung behandelt.