iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0

高可用性概述

高可用性(High Availability, HA)意指系統故障時能快速切換至備援節點,將中斷時間降至最低。對於日志平台而言,HA 可保證不遺漏關鍵安全或運維訊息。

架構模型

以「3+3+3」 (Conventional Deployment) 為基礎配置:

  • 3 節點 Graylog Server:處理 API、Web UI 與流(Streams)路由
  • 3 節點 DataNode:存儲與檢索日志索引
  • 3 節點 MongoDB replication set:存儲配置與元資料

前端以 HAProxy 或 Nginx 作為反向代理與 TCP 負載均衡,所有客戶端僅指向負載均衡 VIP (virtual IP)。

核心組件配置

MongoDB replication set

在三台機器上安裝 MongoDB,並於 mongod.conf 中啟用 replication set:

replication:
  replSetName: "graylog-rs"

初始化replication set:

mongo --eval 'rs.initiate({_id:"graylog-rs",members:[
  {_id:0,host:"mongo1:27017"},
  {_id:1,host:"mongo2:27017"},
  {_id:2,host:"mongo3:27017"}
]})'

Graylog Server(每節點相同)

graylog.conf 中設定:

is_master = false
mongodb_uri = mongodb://mongo1:27017,mongo2:27017,mongo3:27017/graylog?replicaSet=graylog-rs

僅將其中一台設為 is_master = true,其餘為 false

Data Node(OpenSearch)

於三台機器安裝 Graylog Data Node,OpenSearch 配置會由 Data Node 自動管理。若需要自定義配置,可在 datanode.conf 中設定:

opensearch_config_location = /var/lib/graylog-datanode/opensearch/config
opensearch_data_location = /var/lib/graylog-datanode/opensearch/data
clustername = graylog-cluster
opensearch_discovery_seed_hosts = es1,es2,es3
initial_cluster_manager_nodes = es1,es2,es3
node_roles = cluster_manager,data,ingest,remote_cluster_client

若需要額外的 OpenSearch 配置覆寫,可建立覆寫配置檔案:

# 在 /etc/graylog/datanode/override.conf
cluster.routing.allocation.disk.watermark.low = 80%

然後在 datanode.conf 中指定:

opensearch_configuration_overrides_file = /etc/graylog/datanode/override.conf

負載均衡與故障轉移

使用 HAProxy 配置 TCP 層負載均衡:

frontend graylog_api
  bind *:9000
  default_backend graylog_nodes

backend graylog_nodes
  balance roundrobin
  server node1 graylog1:9000 check
  server node2 graylog2:9000 check
  server node3 graylog3:9000 check

當任一 Graylog Server 宕機,HAProxy 自動剔除,請求切換至健康節點。

部署步驟概覽

  1. 部署 MongoDB replication set:確保三節點互通並完成 rs.initiate()
  2. 部署 DataNode Cluster:三節點設定完成後,自動選舉 Cluster Manager。
  3. 部署 Graylog Server:配置連接 MongoDB、DataNode,並啟動服務。
  4. 配置負載均衡器:將所有 Graylog Server 加入後端。
  5. 健康檢查:確認 Web UI (:9000) 與 API (:12201) 正常連通。

健康監控與擴展

  • 監控:建議透過 Prometheus + Grafana 監控 JVM、MongoDB 與 DataNode 狀態。
  • 擴展:可按需水平擴充 Data Node 節點或增加 Graylog Server 節點,僅需在配置中追加主機位址並重啟對應服務。

小結

Graylog 有提供 cluster (contentional deployment) 版本的 docker-compose.yml 和 設定 mongodb replication set 的 shell script。

高可用性其實還有很多細節可以談,但其實我也不太熟,所以若想要了解更多相關的內容的話,就請在網路上或書籍中找吧!


上一篇
Day 17: RESTful API
下一篇
Day 19: 安全加固與權限管理
系列文
從零開始的 graylog 探險20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言