安裝 Docker 和 Docker Compose
確保系統中已安裝 Docker 和 Docker Compose。在大多數 Linux 發行版中,可通過包管理器直接安裝:
sudo apt-get update && sudo apt-get install docker.io docker-compose
安裝後啓動 Docker 服務並加入開機自啓:
sudo systemctl enable --now docker
創建 Elasticsearch 配置文件
在項目目錄中創建 docker-compose.yml 文件,配置 Elasticsearch 容器並啓用安全特性(X-Pack):
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms1g -Xmx1g
- ELASTIC_PASSWORD=your_strong_password_here # 設置默認用户 elastic 的密碼
- xpack.security.enabled=true
volumes:
- es_data:/usr/share/elasticsearch/data
ports:
- "9200:9200"
networks:
- elastic_net
volumes:
networks:
elastic_net:
啓動 Elasticsearch 容器
運行以下命令啓動容器:
docker-compose up -d
等待容器初始化完成後,驗證是否啓用安全認證:
curl -u elastic:your_strong_password_here http://localhost:9200
返回包含集羣信息的 JSON 即表示認證成功。
創建其他用户和角色
進入容器內部使用 elasticsearch-users 工具創建新用户:
docker exec -it <container_id> /bin/bash
在容器內執行以下命令創建用户(例如 admin):
elasticsearch-users useradd admin -p admin_password -r superuser
退出容器後,可通過 API 驗證新用户權限:
curl -u admin:admin_password http://localhost:9200/_security/_authenticate
配置客户端連接
在應用程序中連接時需包含認證信息。例如,使用 curl 時添加 -u 參數,或在編程客户端中配置憑證:
from elasticsearch import Elasticsearch
es = Elasticsearch(
hosts=["http://localhost:9200"],
basic_auth=("elastic", "your_strong_password_here")
)
持久化數據與備份
確保數據卷(es_data)已掛載,避免容器重啓後數據丟失。定期備份可通過 Elasticsearch 快照 API 實現:
curl -u elastic:your_strong_password_here -X PUT "localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/snapshots"
}
}
'
日誌與監控
通過 Docker 日誌查看運行狀態:
docker logs -f <container_id>
啓用 X-Pack 監控後,訪問 http://localhost:9200/_cat/nodes?v 可查看節點健康狀態。
防火牆與網絡安全
若需對外開放端口,配置防火牆規則僅允許可信 IP 訪問 9200 端口:
sudo ufw allow from 192.168.1.0/24 to any port 9200
通過以上步驟,可在 Linux 下快速部署帶認證的 Elasticsearch 容器,兼顧安全性與便捷性。