Pandora: Documentation ja: Share /var/spool directory between several Pandora servers
Contents
1 /var/spool ディレクトリの複数 Pandora サーバでの共有
Pandora FMS データサーバは、 /var/spool/pandora/data_in ディレクトリを利用し、ソフトウエアエージェントに送受信する情報を管理します。
このディレクトリはまた、Pandora コンソールからもアクセスできる必要があります。エージェントに送信する設定やコレクションにアクセスするためです。
複数のコンソールと複数のサーバがある場合、それぞれのコンソールは、サーバが対応しているエージェントを管理することができます。
ここで、複数の Pandora サーバが共通の環境で動作している場合を想定します。
それぞれのサーバのエージェントは、data_in フォルダを使って割り当てられたデータサーバと通信します。単一コンソールで、複数のデータサーバがある構成では、共通の情報として spool を共有するために NFS を使ってエージェント管理を一元化します。
1.1 どちらの手法が良いか?
ファイルの共有には、NFS および GlusterFS の両方が利用できますが、環境によって最適な方法は異なります。
- 外部サーバ にデータが保存されており、Pandora FMS はクライアントとして動作している場合は、NFS を利用します。
- Pandora FMS サーバ にデータが保存されていたり、(ソフトウエアレベルの)冗長化が求められる場合は、GlusterFS をお勧めします。
HA 環境では、data_in の中の conf, md5, collections および netflow フォルダを共有することが必須です。また、pandora_console/attachment フォルダも共有することをお勧めします。data_in フォルダ自身は、Tentacle サーバを NFS 同時アクセス用に設定する を行っていなければ 共有しない ことをお勧めします。 |
|
2 NFS 設定
2.1 はじめに
nfs-utilsパッケージを NFS でディレクトリを共有するすべてのシステムにインストールします。
yum install -y nfs-utils
2.2 NFS サーバの設定
NFS サーバは、Pandora FMS サーバとは 別サーバ であることが重要です。Pandora FMS サーバの 1つが NFS サーバーとして設定されていて、クライアントが接続できない障害があった場合、共有ファイルはアクセスできなくなり、Pandora FMS における エラーの原因 となります。 別のサーバを使用できない場合は、代わりに GlusterFS を使用してください。 |
|
/etc/exportを編集し、次の行を加えます。
/var/spool/pandora/data_in/conf [IP_CLIENTE](rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/collections [IP_CLIENTE](rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/md5 [IP_CLIENTE](rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/netflow [IP_CLIENTE](rw,sync,no_root_squash,no_all_squash) /var/www/html/pandora_console/attachment [IP_CLIENTE](rw,sync,no_root_squash,no_all_squash)
ここで、[CLIENT_IP] は、リソースを共有するシステムの IP アドレスを意味します。
/var/spool/pandora/data_in/conf 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/collections 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/md5 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/spool/pandora/data_in/netflow 192.168.70.10(rw,sync,no_root_squash,no_all_squash) /var/www/html/pandora_console/attachment 192.168.70.10(rw,sync,no_root_squash,no_all_squash)
システムのファイアーウォールがある場合は、必要なポートを開けます。
# CentOS firewall-cmd --permanent --zone=public --add-service=nfs firewall-cmd --reload
設定が完了したらサービスを開始します。
# CentOS service rpcbind start service nfs-server start service nfs-lock start service nfs-idmap start
システム起動時に NFS が開始されるように設定します。
chkconfig rpcbind on chkconfig nfs-server on chkconfig nfs-lock on chkconfig nfs-idmap on
/etc/export の設定を変更したら、nfs-server を再起動します。
systemctl restart nfs-server
2.3 NFS クライアントの設定
最初にディレクトリをバックアップします。
mv /var/spool/pandora/data_in /var/spool/pandora/data_in_locale
注意: apache がインストールされていないシステムの場合(インストールは必須ではありません)は、競合が発生しないように /etc/passwd および /etc/group に apache を追加します。
echo "apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin" >> /etc/passwd echo "apache:x:48:" >> /etc/group
フォルダーのパーミッションを確認します。
chown pandora:apache /var/spool/pandora/data_in chmod 770 /var/spool/pandora/data_in
リモートのディスクをマウントできるか確認します。
mount -t nfs [IP_SERVIDOR_NFS]:/var/spool/pandora/data_in/conf /var/spool/pandora/data_in/conf mount -t nfs [IP_SERVIDOR_NFS]:/var/spool/pandora/data_in/md5 /var/spool/pandora/data_in/md5 mount -t nfs [IP_SERVIDOR_NFS]:/var/spool/pandora/data_in/collections /var/spool/pandora/data_in/collections mount -t nfs [IP_SERVIDOR_NFS]:/var/spool/pandora/data_in/netflow /var/spool/pandora/data_in/netflow
ここで、[IP_SERVIDOR_NFS] は、NFS サービスを提供するサーバの IP アドレスです。
例:
mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/conf /var/spool/pandora/data_in/conf mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/md5 /var/spool/pandora/data_in/md5 mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/collections /var/spool/pandora/data_in/collections mount -t nfs 192.168.70.10:/var/spool/pandora/data_in/netflow /var/spool/pandora/data_in/netflow
上記のコマンドが失敗した場合は、以下を確認します。
- ファイアーウォールの状態
- root で実行しているかどうか
- マウントポイントのディレクトリが存在するかどうか
ここまでですべて問題がなければ、再起動した時に自動的にマウントされるように /etc/fstab を設定します。
/etc/fstab ファイルに次の行を追加します。
[NFS_SERVER_IP]:/var/spool/pandora/data_in/conf /var/spool/pandora/data_in/conf nfs defaults 0 0 [NFS_SERVER_IP]:/var/spool/pandora/data_in/md5 /var/spool/pandora/data_in/md5 nfs defaults 0 0 [NFS_SERVER_IP]:/var/spool/pandora/data_in/collections /var/spool/pandora/data_in/collections nfs defaults 0 0 [NFS_SERVER_IP]:/var/spool/pandora/data_in/netflow /var/spool/pandora/data_in/netflow nfs defaults 0 0 [NFS_SERVER_IP]:/var/www/html/pandora_console/attachment /var/www/html/pandora_console/attachment nfs defaults 0 0
ここで、[NFS_SERVER_IP] は、NFS サービスを提供しているサーバの IP アドレスです。
3 GlusterFS 設定
GlusterFS を使用すると、サーバ間で Pandora FMS のキーディレクトリを共有できるため、いずれかのサーバがアクセスできない場合でもデータを利用できます。 このシステムのにより、常にアクティブなリソースがあり、すべてのサーバが機能していなくてもデータにアクセスできます。
3.1 必要条件
- Selinux は無効化もしくは正しくルールを設定する必要があります。
- ファイアーウォール は無効化または正しくルールを設定する必要があります。
- ポート 24009/tcp が開いている必要があります。
- /etc/hosts ファイルに前サーバの名前と IP アドレスが設定されている必要があります。
- パーティショニングをしていない追加ディスク を全サーバに用意する必要があります。
3.2 パッケージインストール
GlusterFS をインストールするために、現状のバージョンを検索します。
yum search centos-release-gluster
最新の LTS 安定バージョンをインストールします。
yum install centos-release-gluster37 yum install glusterfs glusterfs-cli glusterfs-libs glusterfs-fuse
3.3 XFS パーティションの作成 (ブロック)
/dev/xvdb ディスクを使って新たな物理ボリュームを作成します。
pvcreate /dev/xvdb Physical volume “/dev/xvdb” successfully created
/var/xvdb にボリュームグループを作成します。
vgcreate vg_gluster /dev/xvdb Volume group “vg_gluster” successfully created
両クラスタノードの XFS ブロックとして brick1 ボリュームを作成します。割り当てる容量を -L パラメータで指定します。
lvcreate -L 5G -n brick1 vg_gluster Logical volume "brick1" created.
他には、ディスクのパーセンテージで容量を割り当てることもできます。
lvcreate -l 100%FREE -n brick1 vg_gluster
ファイルシステムを XFS として設定します。
mkfs.xfs /dev/vg_gluster/brick1
マウントポイントを作成し、XFS ブロックをマウントします。
mkdir -p /glusterfs/brick1 mount /dev/vg_gluster/brick1 /glusterfs/brick1
/etc/fstab ファイルを開き、次の行を追加します。
/dev/vg_gluster/brick1 /glusterfs/brick1 xfs defaults 0 0
両ノードで、glusterfsd.service を有効化し、開始します。
systemctl enable glusterd.service --now
最初の GlusterFS ノードから 2台目へ接続し、信頼されたプール(ストレージクラスタ)を作成します。
gluster peer probe gluster2.example.com peer probe: success.
クラスタの相手を確認します。
gluster peer status Number of Peers: 1 Hostname: gluster2.example.com Uuid: e528dc23-689c-4306-89cd-1d21a2153057 State: Peer in Cluster (Connected)
3.4 HA ボリュームの作成
HA 同期ボリューム を作成するためには、両ノードの XFS パーティション /glusterfs/brick1 を利用します。
/glusterfs/brick1 マウントポイントにサブフォルダを作成します。GlusterFS が動作するために必要です。
mkdir /glusterfs/brick1/brick
GlusterFS 同期ボリュームを作成します。
gluster volume create glustervol1 replica 2 transport tcp gluster1.example.com:/glusterfs/brick1/brick \ gluster2.example.com:/glusterfs/brick1/brick volume create: glustervol1: success: please start the volume to access data
gluster volume start glustervol1 volume start: glustervol1: success
GlusterFS ボリュームを確認します。
gluster volume info all Volume Name: glustervol1 Type: Replicate Volume ID: 6953a675-f966-4ae5-b458-e210ba8ae463 Status: Started Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: gluster1.example.com:/glusterfs/brick1/brick Brick2: gluster2.example.com:/glusterfs/brick1/brick Options Reconfigured: performance.readdir-ahead: on
3.5 クライアントでのボリュームのマウント
GlusterFS のクライアントパッケージをインストールします。
yum install glusterfs glusterfs-fuse attr -y
Pandora FMS ファイルのためのフォルダを作成します。
mkdir /pandora_files/
クライアントで GlusterFS ボリュームをマウントします。
mount -t glusterfs gluster1.example.com:/glustervol1 /pandora_files/
/etc/fstab へ次の行を追加します。
gluster1.example.com:/glustervol1 /pandora_files glusterfs defaults,_netdev 0 0
パーティションを /pandora_files/ にマウントしたら、このフォルダ内に必要なディレクトリすべてを作成します。
cd /pandora_files/ mkdir collections md5 conf netflow attachment
オリジナルの /var/spooll/pandora/data_in フォルダから、一通りコピーします。
cp -rp /var/spool/pandora/data_in/conf /pandora_files/ cp -rp /var/spool/pandora/data_in/md5 /pandora_files/ cp -rp /var/spool/pandora/data_in/collections /pandora_files/ cp -rp /var/spool/pandora/data_in/netflow /pandora_files/ cp -rp /var/www/html/pandora_console/attachment /pandora_files/
古いフォルダを削除します。
rm -rf /var/spool/pandora/data_in/conf rm -rf /var/spool/pandora/data_in/md5 rm -rf /var/spool/pandora/data_in/collections rm -rf /var/spool/pandora/data_in/netflow rm -rf /var/www/html/pandora_console/attachment
両方のサーバでシンボリックリンクを作成します。
ln -s /pandora_files/conf /var/spool/pandora/data_in/ ln -s /pandora_files/md5 /var/spool/pandora/data_in/ ln -s /pandora_files/collections /var/spool/pandora/data_in/ ln -s /pandora_files/netflow /var/spool/pandora/data_in/ ln -s /pandora_files/attachment /var/www/html/pandora_console/
3.6 ボリュームの追加
GlusterFS ボリュームは、ブロック数を増やすことにより停止することなく容量を拡張することができます。
それには、最初のステップど同様に次のように新たなディスクを作成する必要があります。
lvcreate -L 5G -n brick2 vg_gluster Logical volume "brick2" created.
XFS として設定します。
mkfs.xfs /dev/vg_gluster/brick2
新たなマウントポイントを作成し、新たなブロックをマウントします。
mkdir -p /bricks/brick2 mount /dev/vg_gluster/brick2 /bricks/brick2
/etc/fstab に追記します。
/dev/vg_gluster/brick2 /bricks/brick2 xfs defaults 0 0
新たなブロックのフォルダを作成します。
mkdir /glusterfs/brick2/brick
ボリュームを拡大します。
gluster volume add-brick glustervol1 gluster1.example.com:/glusterfs/brick2/brick \ gluster2.example.com:/glusterfs/brick2/brick
ボリュームを確認します。
gluster volume info glustervol1 Volume Name: glustervol1 Type: Distributed-Replicate Volume ID: 6953a675-f966-4ae5-b458-e210ba8ae463 Status: Started Number of Bricks: 2 x 2 = 4 Transport-type: tcp Bricks: Brick1: gluster1.example.com:/glusterfs/brick1/brick Brick2: gluster2.example.com:/glusterfs/brick1/brick Brick3: gluster1.example.com:/glusterfs/brick2/brick Brick4: gluster2.example.com:/glusterfs/brick2/brick
リバランシングの前にディスク使用量を確認します。
df -h | grep brick
リバランス:
gluster volume rebalance glustervol1 start
リバランスの確認:
gluster volume rebalance glustervol1 status
ディスク使用量の再確認:
df -h | grep brick
ブロック内のファイル確認:
ls -l /glusterfs/brick*/brick/
4 Tentacle サーバを NFS 同時アクセス用に設定する
環境の準備ができたら、両方のコンピュータの Tentacle サーバを設定して、XML ファイルが別々のフォルダーに分散されるようにし、データサーバーが両方の Pandora FMS サーバでファイルを処理するときの同時実行を回避します。
それには、/var/spool/pandora/data_in ディレクトリに 2つのフォルダを作成します。
mkdir /var/spool/pandora/data_in/xml_srv1 mkdir /var/spool/pandora/data_in/xml_srv2
両方のディレクトリのパーミッションを調整します。
chmod pandora:apache /var/spool/pandora/data_in/xml_srv1 chmod pandora:apache /var/spool/pandora/data_in/xml_srv2
/etc/init.d/tentacle_serverd ファイル内で XML ファイルフォルダの設定をするための TENTACLE_EXT_OPTS の値を編集します。
TENTACLE_EXT_OPTS="-i.*\.conf:conf;.*\.md5:md5;.*\.zip:collections"
サーバ 1 では、次のようになります。
TENTACLE_EXT_OPTS="-i.*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.data:xml_srv1"
サーバ 2 では、次のようになります。
TENTACLE_EXT_OPTS="-i.*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.data:xml_srv2"
最後に、両方の Pandora FMS サーバの設定ファイルを次のように編集します。
# Pandora FMS server number 1 # incomingdir: It defines directory where incoming data packets are stored # You could set directory relative to base path or absolute, starting with / incomingdir /var/spool/pandora/data_in/xml_srv1
# Pandora FMS server number 2 # incomingdir: It defines directory where incoming data packets are stored # You could set directory relative to base path or absolute, starting with / incomingdir /var/spool/pandora/data_in/xml_srv2
すべての変更が完了したら、両方のサーバで pandora_server サービスと tentacle_serverd サービスの両方を再起動します。