2021年3月23日火曜日

Splunkバージョンアップ手順③ (インデクサをクラスタ構成している場合)

Splunkの各バージョンは、リリース後24か月でサポート終了となるライフサイクルポリシーとなっている。

2021年3月現在、サポート中のバージョンは7.2以降となっており、2021年内に7.2、7.3、8.0がサポート終了となる。

バージョン サポート期限
7.2 2021/4/30
7.3 2021/6/4
8.0 2021/10/22
8.1 2022/10/19

このような状況であるため、以下記事にてSplunkのバージョンアップ手順を記載した。この記事のSplunkは単体構成となっており、1台のサーバに対してバージョンアップすることで対応が完了した。

一方、Splunkは複数のインデクサをクラスタ構成にして負荷分散と冗長化構成とすることが可能であり、そのような構成の場合、バージョンアップ順序が存在し、多少ではあるがバージョンアップ手順が複雑となる。本記事では、Splunkのインデクサをクラスタ構成とした環境におけるバージョンアップ手順の検証結果を記載する。

環境

今回の検証では、ログ送信元となるUniversal Forwarderのサーバを含めると5台のサーバが必要となる。OSはすべてCentOS 7.8を使用する。インデクサのクラスタ構成のインストール手順は以下記事を参照いただきたい。

Splunkは8.0.5で構築済みの状態とし、8.1.2へバージョンアップを行う。

ホスト名 IPアドレス 種類 台数 説明
t1073spmg 192.168.11.73 Manager Node 1 Splunkの各コンポーネントを管理する。
t1074spsh 192.168.11.74 Search Head 1 Indexerに対して検索を行い結果を表示する。
t1075spin 192.168.11.75 Peer Node (Indexer#1) 1 ログの受信とSearch Headからの検索を受け付ける。Peer Node間でデータがレプリケーションされ冗長化される。
t1076spin 192.168.11.76 Peer Node (Indexer#2) 1 ログの受信とSearch Headからの検索を受け付ける。Peer Node間でデータがレプリケーションされ冗長化される。
t1077spfw 192.168.11.77 Universal Forwarder 1 Peer Nodeに対してログを送信する。

Splunkバージョンアップ手順

1. Splunkのインストーラを配置

Splunkを構成するすべてのサーバに対して、バージョンアップ対象となるインストーラファイル (tgz形式) を配置する。今回は8.1.2にバージョンアップするため、splunk-8.1.2-545206cc9f70-Linux-x86_64.tgzを配置する。

# ls -l
-rw-r--r--. 1 root root 511869044  8月  1  2020 splunk-8.0.5-a1a6394cc5ae-Linux-x86_64.tgz
-rw-r--r--. 1 root root 511782642  3月  3 05:59 splunk-8.1.2-545206cc9f70-Linux-x86_64.tgz

2. Manager Nodeをバージョンアップ

バージョンアップはManager Nodeから実施する。Splunkを停止したのち、tgzファイルを上書きインストールする。その後、Splunkを起動すればバージョンアップの処理が実行されたのち、Splunkが起動する。

なお、初回起動時はライセンス規約への同意とバージョンアップ前確認を求められるので、処理をスキップするために、--accept-license--answer-yesのオプションを付与している。

# /opt/splunk/bin/splunk stop
# tar xvzf splunk-8.1.2-545206cc9f70-Linux-x86_64.tgz -C /opt
# /opt/splunk/bin/splunk start --accept-license --answer-yes

Manager Node起動後、念のためManager NodeのSplunk Webにログインし、[設定]→[インデクサークラスターリング]にて、以下のステータスが「成功」であることを確認しておこう。

  • すべてのデータがサーチ可能
  • サーチ可能データ保持数を満たしています
  • 複製データ保持数を満たしています

Manager Node再起動直後しばらくはエラー表示となるため不安となるものの、数分待機すれば「成功」に変わるはずだ。

▼再起動直後


▼数分後

3. Search Headをバージョンアップ

Manager Nodeがバージョンアップ完了したら、次にSearch Headをバージョンアップする。手順はManager Nodeと同様となる。

# /opt/splunk/bin/splunk stop
# tar xvzf splunk-8.1.2-545206cc9f70-Linux-x86_64.tgz -C /opt
# /opt/splunk/bin/splunk start --accept-license --answer-yes

4. クラスタをメンテナンスモードに変更

次にPeer Nodeをバージョンアップするが、バージョンアップ時はクラスタをメンテナンスモード (保守モード) に変更する必要がある。

メンテナンスモードへの変更はManager Nodeから以下コマンドにて実施する。

# /opt/splunk/bin/splunk show maintenance-mode -auth admin:my_password
  Maintenance mode is : 0,  primaries backup and restore is : 0

# /opt/splunk/bin/splunk enable maintenance-mode --answer-yes
Maintenance mode set

# /opt/splunk/bin/splunk show maintenance-mode
  Maintenance mode is : 1,  primaries backup and restore is : 0

5. Peer Nodeをバージョンアップ

クラスタがメンテナンスモードに変更されたら、Peer Nodeをバージョンアップする。手順はManager Nodeと同様となるが、クラスタのすべてのPeer Nodeで並行して作業を実施する必要があるので注意。

まずは、すべてのPeer NodeにてSplunkを停止する。

# /opt/splunk/bin/splunk stop

次に、すべてのPeer Nodeにてtgzファイルを上書きインストールする。

# tar xvzf splunk-8.1.2-545206cc9f70-Linux-x86_64.tgz -C /opt

最後に、すべてのPeer NodeにてSplunkを起動する。

# /opt/splunk/bin/splunk start --accept-license --answer-yes

6. クラスタのメンテナンスモードを解除

Peer Nodeのバージョンアップが完了したら、Manager Nodeにてメンテナンスモードを解除する。

# /opt/splunk/bin/splunk disable maintenance-mode
No longer in Maintenance mode

# /opt/splunk/bin/splunk show maintenance-mode
  Maintenance mode is : 0,  primaries backup and restore is : 0

最後に、Manager NodeのSplunk Webにて[設定]→[インデクサークラスターリング]を確認し、クラスタの状態が「成功」ステータスとなっていれば問題ない。

以上でSplunkのバージョンアップは完了となる。この後はSplunk Universal Forwarderをバージョンアップすればよい。Universal Forwarderのバージョンアップ手順は以下を参照。

動作確認

最後にバージョンアップ中のログの状態を確認する。今回、Universal Forwarderから1秒間隔でログを送信しながらバージョンアップを行った際にログが欠落していないことを確認してみたところ、一時的にメンテナンスモードにしたことによる影響と想定されるが、一部ログに重複が発生していることを確認した。ただし、ログの欠落はなかったことから、バージョンアップによる停止が発生したとしても、ログの取りこぼしは発生しないことが確認できた。

参考

0 件のコメント:

コメントを投稿

人気の投稿