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秒間隔でログを送信しながらバージョンアップを行った際にログが欠落していないことを確認してみたところ、一時的にメンテナンスモードにしたことによる影響と想定されるが、一部ログに重複が発生していることを確認した。ただし、ログの欠落はなかったことから、バージョンアップによる停止が発生したとしても、ログの取りこぼしは発生しないことが確認できた。