ThoughtSpot 6.0.5にパッチを適用する

ブラウザの仕様変更など、外部要因でパッチを適用せざるを得ない場合があります。手順は知っておいて損はないです。
2021.01.13

前置き

弊社内管理のEC2インスタンス上でThoughtSpot 6.0.5をインストールし活用していたところ、ある日(2020年9月15日頃)から突然メニューがびろーんと横に伸びてしまい、使い物にならなくなりました。

本来あってほしい姿はこうです。

調査した結果、Google Chromeのアップデートに起因するもので、ThoughtSpot側から修正プログラムが提供されていました。 その修正プログラムの適用を実際にやってみました。

前提

  • ThoughtSpot 6.0.5インストール済み
  • 修正プログラム入手済み

パッチ適用作業

以下、クラスタ起動状態で実施します。

1.スナップショットの取得

ThoughtSpotのインストールセットに含まれるコマンドtscliを使ってスナップショットを取得しておきます。

tscli snapshot create <snapshot_name> upgrade 30
ex) tscli snapshot create 605upgrade upgrade 30
※”30”はスナップショットの保存日数

以下、実行結果例です。

$ tscli snapshot create 605upgrade upgrade 30
Snapshot created successfully! Will be automatically deleted after 30 days
$

2.フルバックアップの取得

同じくtscliコマンドを使用して、ThoughtSpot全体のフルバックアップを取得します。

tscli backup create --mode full <snapshot_name> ./<backup_name>
ex) tscli backup create --mode full 605upgrade ./605upgrade
※データ容量以上のストレージ容量を確保しておく必要あり

以下、実行結果例です。

$ tscli backup create --mode full 605upgrade ./605upgrade
Snapshot 605upgrade is pinned successfully!
Verifying snapshot backup request...
Calculating disk space required...
The backup will take up to 16,632MB space
Copying packs data: 16,635MB/16,632MB (100.02%) ETA: 0:00:00
Done!
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200611.145247-0f8429e5-0741-41a9-80be-8d5924cf2f9c
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200611.152835-df713d1c-6702-4278-8161-5409948f4347
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200612.001227-e3025333-5bf4-4f4e-af09-e7e2cc3b49d8
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200612.011505-d02bee1d-f5db-4881-84ae-8311820d90f9
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200701.052452-5dc8b9c2-3d98-4bc7-83b0-12d60d06957e
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200706.063121-260079e7-e8ec-4e1e-8927-bba040c6a916
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200716.032720-79b99880-9e33-43d9-bf58-0263220111ff
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200729.011723-7a89405e-2cb1-4d80-bad7-10e365d04def
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200904.040048-593c5da7-433b-4b5e-8ba2-55fd3f26fecc
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200904.060309-6bda4f51-7a41-440c-8e39-6c6bac605c5e
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200904.102952-1047e039-f638-41ef-a0b7-508ac88fd553
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200904.160601-e2184c1b-3850-4a27-9103-77abe08c99a4
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200915.000830-e898d731-d645-4426-8c7f-e08f3cdb5249
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200916.055955-7d710ec2-2527-4248-ad60-6264c54d2c3b
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200916.064740-2e336b6d-b867-4ffb-9db2-56d81577ada9
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200916.075742-1a913a37-641e-44be-a759-c7d002ee5463
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200917.084121-a756125e-65ff-42f0-92f8-b37196c2887b
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200917.093919-6a14c5ea-e6a6-4fb1-9623-0c4e86ef6b64
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200917.101529-b5eb7f46-d0f8-4eb6-90f9-dac6acb77b85
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200917.110201-613384d8-7598-40e3-903c-f7190e07d0e7
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200918.045744-4fb42510-cc5e-4801-abb8-a69843b8ea62
/s3a/default/sage/uber/usage_events/usage_log-classmethod-nonprod-1.sage_usage_based_index.0.index_server-20200918.054007-9b5df751-8567-4f5b-81c6-b26ffe8ceec9
Unsuccessful call to hdfsListDirectory for path: /orion/classmethod-nonprod-1/sage/uber/usage_feedback_events
Finishing up ... this will take a few minutes.
62/62 packs are done.
===== SUCCESS =====
Snapshot 605upgrade is unpinned successfully!
$

3.現バージョンとパッチ対象バージョンの一致確認

パッチを適用する前に、現行のシステムがパッチが適用できるバージョンかを確認します。
(パッチが適用されているかどうかは)

tscli cluster status
下記結果のReleaseのバージョンが6.0.5(今回のパッチ対象バージョン)と一致すること
を確認
Cluster : RUNNING
Cluster name : XXXX
Cluster id : XXXX
Number of nodes : 1
Release : 6.0.5
Last update = Wed Jun 3 08:45:32 2020

以下、実行結果例です。

$ tscli cluster status
Cluster: RUNNING
Cluster name    : classmethod-nonprod-1
Cluster id      : classmethod-nonprod-1
Number of nodes : 1
Release         : 6.0.5
Last update     = Thu Jun 11 14:28:06 2020
Heterogeneous Cluster : False
Storage Type    : S3A
Bucket name     : cm-thoughtspot-data

Database: READY
Number of tables in READY state: 56
Number of tables in OFFLINE state: 0
Number of tables in INPROGRESS state: 0
Number of tables in STALE state: 0
Number of tables in ERROR state: 0

Search Engine: READY
Number of tables in KNOWN_TABLES state: 13
Number of tables in READY state: 13
Number of tables in WILL_REMOVE state: 0
Number of tables in BUILDING_AND_NOT_SERVING state: 0
Number of tables in BUILDING_AND_SERVING state: 0
Number of tables in WILL_NOT_INDEX state: 0
$

4.パッチの履歴の実行前確認

パッチ適用済みでないかどうかを確認します。

tscli patch ls
パッチを初めて適用する場合の結果:No patches applied

以下、実行結果例です。

$ tscli patch ls
No patches applied
$

5.パッチ適用

実際にパッチを適用させます。

tscli patch apply 6.0.5-49fe55c-nginx-PR.tar.gz
※通常数分程度で実行が完了

以下、実行結果例です。

$ tscli patch apply 6.0.5-49fe55c-nginx-PR.tar.gz
Found hosts: 10.100.0.237
Saving release to HDFS
Started applying patch
Waiting for patch-apply to start...
Patch Apply is in progress
[2020-09-22 17:36:04] START Staging patch tarball to local file system
[2020-09-22 17:36:04] SUCCESS
[2020-09-22 17:36:04] START CHECK: Default pre-patch-apply check
[2020-09-22 17:41:29] SUCCESS
[2020-09-22 17:41:29] START Applying service: nginx
[2020-09-22 17:41:54] SUCCESS
[2020-09-22 17:41:54] START Post Patch Stage
SUCCESS: Patch Applied successfully
$

6.適用してから数分後、パッチ履歴の実行後の確認

tscli patch ls
下記のような結果を得られれば正常にパッチ適用できている

$ tscli patch ls
              MD5                         Start Time                     End Time                 Services      
================================================================================================================
81358432c7661ac148940dc3bdc6884c     2020-09-22 17:36:04           2020-09-22 17:41:54             nginx        
$

7.ブラウザからのログイン確認とパッチの反映確認

ブラウザからアクセスして、ログインできるか確認します。
可能であれば、パッチ適用の内容を確認しましょう。

(オプション)8.クラスタ再起動

もしパッチが反映されていなければ、クラスタの再起動を行います。

tscli cluster stop
tscli cluster start

以上となります。基本的にはtscliコマンドを順に使うだけなので難しいことはありませんでした。実行結果をよく確認しながら1つ1つ丁寧に作業を進めましょう。