在生產環境中,隨著日誌量與查詢請求增加,單節點架構容易成為性能瓶頸。本篇介紹如何在 Graylog 中進行水平擴展與基礎負載均衡,以提升系統可用性與吞吐量。
Graylog 6.3 採用 Leader–Follower 模式:
水平擴展(新增節點)能線性提升吞吐;垂直擴展(提升單機資源)則受限於那台機器的上限。對於持續增長的日誌量,推薦以水平擴展為主。
以 Docker Compose 為例,假設已存在一個 Leader 節點,現在新增一個 Follower 節點。
services:
graylog-follower:
image: graylog/graylog:6.3
environment:
- GRAYLOG_NODE_ID_FILE=/usr/share/graylog/data/node-id
- GRAYLOG_IS_MASTER=false
- GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000
- GRAYLOG_HTTP_PUBLISH_URI=http://follower:9000/
- GRAYLOG_MONGODB_URI=mongodb://mongo1:27017,mongo2:27017/graylog
- GRAYLOG_ELASTICSEARCH_HOSTS=http://es1:9200,http://es2:9200
depends_on:
- mongo1
- es1
關鍵設定:
將 GRAYLOG_MONGODB_URI
和 GRAYLOG_ELASTICSEARCH_HOSTS
與 Leader 保持一致,確保共享資料路徑。
啟動後,新節點會自動向 Leader 註冊,並開始協同處理日誌。
為均衡 API 與 Web 請求,可以在 Leader 與 Follower 之前加入 TCP 層級的負載均衡器,例如 HAProxy。
global
maxconn 200
defaults
mode tcp
timeout connect 5s
timeout client 30s
timeout server 30s
frontend graylog_front
bind *:9000
default_backend graylog_back
backend graylog_back
balance roundrobin
server leader leader:9000 check
server follower follower:9000 check
完成配置後,所有 Web 與 API 請求均通過 HAProxy,實現基本流量分攤及故障隔離。
在同一個 docker-compose.yml 中同時啟動 Leader、Follower 與 HAProxy:
docker compose up -d
使用 docker compose ps 確認服務狀態。
從瀏覽器或 curl http://<LB_IP>:9000
進入 Graylog Web UI;在 System -> Cluster Configuration
頁面可看到兩台節點同時在線。
/api/cluster
,或在 HAProxy 端查看 stats
。