目次

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-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

よって、/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