Pacemakerを使って、Syslogサーバーを冗長化する
【やりたい事】
様々な機器のログを一括管理したり、(特にNW機器では)ログの保存容量が少なく、古いログから消えたりするので
syslogサーバーにログを転送して一定期間保存を行っている。
しかしながら、(特にNW機器では)syslog転送機能を有していても、転送先サーバーの指定は1か所しか送信出来ない
機器もあり、syskigサーバーが障害時やメンテナンス時など、ログ受信出来ない場合がる。
syslogサーバーを2台用意して、pacemakerにてViryualIPを付与して転送する。
※ 今回はVIP切替わり時のラグ(ARPリフレッシュまでの切替遅延)に関しては、無視する。
pacemaker及び関連ソフトのバージョンを合わせる必要がある。
構築
HW
プライマリ: RaspberryPI 2B (RaspberryPi OS-Lite 5.15.84-v7+ armv7l syslog-pm01) 192.168.100.1
セカンダリ: RaspberryPI 2B (RaspberryPi OS-Lite 5.15.84-v7+ armv7l syslog-pm02) 192.168.100.2
構築手順
(1) ~ (7) までは、pacemakerを使ったdnsサーバー構築と同じ為、説明を割愛。
(8) syslog-ngのインストール
systemdのログは、イマイチ、ログが見づらかったりするのでsyslogアプリケーションを導入する。
syslogアプリケーションは、これまでデフォルトでrsyslogが使われるケースが多かったが、
ローカル(syslogサーバー自身の)ログと外部から受信するログを分割したいので、syslog-ngを採用した。
以下の方針にて作業を進める。
- ローカルログ
- syslog-ng (syslog-ng.conf)にて、systemdにて起動/停止を行う。
- リモートからの受信ログ
- syslog-ng (remote.conf)にて、pacemakerにて起動/停止/監視を行う。
[syslog-pm01] # apt install syslog-ng
[syslog-pm02] # apt install syslog-ng
(9) pacemakerは、ocf:heartbeat:syslog-ngを利用
pacemakerのサンプルファイルとして、syslog-ng用が存在した為、そのまま利用させて頂く。
・/usr/lib/ocf/resource.d/heartbeat/syslog-ng
- ローカルログ受信 (syslog-ng -f syslog-ng.conf)は2台のsyslogサーバーにて常時稼働中とする。
- Active/Standby 構成にて、Active側がリモート用ログ受信(syslog-ng -f remote.conf)を実行
よって、/usr/lib/ocf/resource.d/heartbeat/syslog-ng は、修正の必要はない。
(10) リソース設定を登録する
設定ファイル : /var/lib/pacemaker/cib/cib.xml
※ 設定ファイルの直接編集は行わないのがセオリーらしい。よって、pcsコマンドで設定登録を行う
[syslog-pm01] # pcs resource create rs-vip-1 ocf:heartbeat:IPaddr2 ip=192.168.100.3 cidr_netmask=24 nic=eth0 –group rg-01
[syslog-pm01] # pcs resource create monitor-syslog-ng ocf:heartbeat:syslog-ng configfile=“/etc/syslog-ng/remote.cfg” –group rg-01
[syslog-pm01] # pcs constraint location rs-vip-1 prefers syslog-pm01=200
[syslog-pm01] # pcs constraint location rs-vip-1 prefers syslog-pm02=100
[syslog-pm01] # pcs status
Cluster name: clst-01 Cluster Summary: * Stack: corosync * Current DC: syslog-pm01 (version 2.0.5-ba59be7122) - partition with quorum * Last updated: Sun Mar 12 11:39:33 2023 * Last change: Sun Mar 12 10:13:16 2023 by root via cibadmin on syslog-pm01 * 2 nodes configured * 2 resource instances configured Node List: * Online: [ syslog-pm01 syslog-pm02 ] Full List of Resources: * Resource Group: rg-01: * rs-vip-1 (ocf::heartbeat:IPaddr2): Started syslog-pm01 * monitor-syslog-ng (ocf::heartbeat:syslog-ng): Started syslog-pm01 Daemon Status: corosync: active/disabled pacemaker: active/enabled pcsd: active/enabled
[syslog-pm01] # pcs constraint location
score値が大きいほうが優先される
Location Constraints: Resource: rs-vip-1 Enabled on: Node: syslog-pm01 (score:200) Node: syslog-pm02 (score:100)
(11) リソースをフェイルオーバーするまでの障害発生回数の設定
この設定を忘れるとフェイルオーバーされないので注意
[syslog-pm01] # pcs resource defaults
No defaults set
[syslog-pm01] # pcs resource defaults migration-threshold=1
デフォルト設定定義。すべてのリソース定義で有効となる。
すべてのリソースに定義したくない場合は、別途個別に定義が必要。
Warning: This command is deprecated and will be removed. Please use 'pcs resource defaults update' instead. Warning: Defaults do not apply to resources which override them with their own defined values
[syslog-pm01] # pcs resource defaults
Meta Attrs: rsc_defaults-meta_attributes migration-threshold=1
動作
1. 稼働中のサーバーのOSが停止やネットワーク切断等が発生すると、スタンバイ機へVIPが移動します。
[稼働中] syslog-pm01: PriIP 192.168.100.1 SecIP: 192.168.100.3 syslog-pm02: PriIP 192.168.100.2 [syslog-pm01のLAN線を抜く] syslog-pm01: ネットワーク切断中 syslog-pm02: PriIP 192.168.100.2 SecIP: 192.168.100.3
2. syslog-pm01が復活すると、フェイルバックが行われます。
syslog-pm01: PriIP 192.168.100.1 SecIP: 192.168.100.3 syslog-pm02: PriIP 192.168.100.2