高可用性(High Availability, HA)意指系統故障時能快速切換至備援節點,將中斷時間降至最低。對於日志平台而言,HA 可保證不遺漏關鍵安全或運維訊息。
以「3+3+3」 (Conventional Deployment) 為基礎配置:
前端以 HAProxy 或 Nginx 作為反向代理與 TCP 負載均衡,所有客戶端僅指向負載均衡 VIP (virtual IP)。
在三台機器上安裝 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.conf
中設定:
is_master = false
mongodb_uri = mongodb://mongo1:27017,mongo2:27017,mongo3:27017/graylog?replicaSet=graylog-rs
僅將其中一台設為 is_master = true
,其餘為 false
。
於三台機器安裝 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 自動剔除,請求切換至健康節點。
rs.initiate()
。:9000
) 與 API (:12201
) 正常連通。Graylog 有提供 cluster (contentional deployment) 版本的 docker-compose.yml 和 設定 mongodb replication set 的 shell script。
高可用性其實還有很多細節可以談,但其實我也不太熟,所以若想要了解更多相關的內容的話,就請在網路上或書籍中找吧!