![見出し画像](https://assets.st-note.com/production/uploads/images/61949702/rectangle_large_type_2_ffa94f01a3e099f97e2f9452994a2ed6.png?width=1200)
Tableau ServerをWindowsマシン上のDockerで動かすまで
色々な試行錯誤の末、弊社のTableau ServerはさくらのVPS上で稼働しています。
おかげさまで良い感じに稼働していたのですが、ある時を堺にメモリ不足に陥りました。VPSのupgradeすれば良いだろうと思っていたのですが、なんとプランは最大のメモリ32G。もう選択肢は残っていませんでした。
時を同じくして、弊社のオフィスでは映像アーカイブのエンコード作業のために、割と強めのWindowsマシンを設置したばかりでした。こいつ、エンコード時は活躍するのですが、通常時は大した稼働をしておらずもったいないですね。ということで、ここでTableau Server動かせないだろうかと検討開始したというのが今回のお話。
コンテナ版のTableau Serverについて
さすがクラメソさんということで、貴重な情報を得ることが出来ました。Docker初心者の僕としては何が何やら分からないので、調べながらすすめて行きます。
WindowsでDockerを動かすには
ここに書かれているように、仮想化を有効化する必要があります。WinのBiosなんて久しぶりに開きました。
BIOSを起動して「Security」タブではなく「Advanced」タブを開くと
「Intel (R) Virtualization Technology」というのがあるので「Enabled」に変更する。
後は再起動。
ということで設定していきましょう。
これをやったあとに、Hyper-vの有効化も必要です。
ここまでくればDocker DesktopをWindowsにインストール出来ます。早速起動してください。
Tableau Server on Linuxからイメージを作る
まずはVPSの方にDockerをインストールしていきます。手順はこちら参照。
既存のものがあれば、それをremoveして再度入れ直すという手順になってます。
イメージをビルドする
こちらはクラメソさんの手順のとおりです。
イメージをsaveしてWindows端末に転送する
ここは書かれていません。
ビルドしたイメージがこんな感じだった場合、使うコマンドは
docker save
です。saveしたらファイルができるので、そいつをWindows端末に転送しましょう。
Windowsからサーバに接続してファイルを落としてくる
弊社環境は公開鍵認証なので、鍵を作らねばなりません。
PowerShellを使って、キーを作りましょう。詳細はこちら
出来たファイルを開いて公開鍵をコピーして、VPSのauthorized_keysに書き加えます。これで接続の準備はOK。
ファイルはscpコマンドかなんかで落としてきましょう。
ファイルをロードしていきます。
https://rohhie.net/move-a-system-that-built-with-docker-to-another-environment/#RelocationSaveLoad
$ sudo docker load -i apache-test.tar
書かれているように、docker load コマンドでロードしていきます。
ロードしたあとに、Docker Desktopを開くと、imagesの中にリストされていますので、IMAGE IDを控えておきましょう。次のステップで使います。
ロードが完了したらrunしましょう。
docker run \
-e LICENSE_KEY=<Tableau Serverのライセンスキー> \
-e TABLEAU_USERNAME=<初期ログインに使用するユーザーの名前> \
-e TABLEAU_PASSWORD=<初期ログインに使用するユーザーのパスワード> \
-p 8080:8080 -d <イメージのIDかタグ>
こんな形でやります。パスワードに特殊文字がはいってるとエラーになったりします。元環境のデータをリストアする場合は、ユーザーとパスは何でも構いません。どうせ上書きされますので。
注意点ですが、Windows環境だと \ で改行いれるとうまく動きませんでしたので、 \は削除して1行で実行してください。
すると、環境が立ち上がります。
ブラウザから起動を確認する
アクセス先は
localhost:8080
です。とりあえずこれで開いてログインしておきましょう。
元サーバからデータを移管する
元のサーバにログインして、バックアップファイルを作りましょう。
tsm maintenance backup -f 20210924 -d
こんな感じでファイルを作ります。作ったら、そのファイルをDocker側から取得しなくてはいけません。
Dockerにrootログインする
PowerShellから
docker exec -it --user root コンテナID bash
という形でログインするとrootユーザでログインできます。コンテナIDは
docker ps
コマンドを使って取得しましょう。ロードした時のIDとは違うので注意。
諸々インストールとキーを作成
yum -y install openssh-clients
ssh-keygen -t rsa -b 4096
これでキーファイルを作って、VPS側のauthorized_keysに書き込みます。
接続準備が出来たらscpコマンドで先程作ったファイルをダウンロードしてきましょう。
作ったファイルは
mv /var/opt/tableau/tableau_server/data/tabsvc/files/backups/
に動かしてから、
chown tableau:tableau xxxxx.tsbak
とやって、所有者をtableauに変更します。
tableauユーザでDockerログインしてリストア
docker exec -it イメージID bash
という形でDockerにログインしていきます。これで入ると tableau ユーザーでログインすることになります。先ほどと同じようにディレクトリを移動してから
mv /var/opt/tableau/tableau_server/data/tabsvc/files/backups/
一旦TSMを停止します。
tsm stop
次にこちらのコマンドでリストアしましょう。
tsm maintenance restore --file xxxxxx.tsbak
時間はかかりますが、復元されると思います。
復元が終わったら
tsm start
で、Tableau Serverを起動して、
にアクセスしましょう。元のTableau Serverへのログインに使っていたユーザーとパスでログインすることができるはずです。
Tableau DesktopからTableau Serverへのログインをどうするか
いわゆるローカルPCにアクセスすることになります。
localhost:8080とインターネットを接続しなくてはいけません。ここで役に立つのはSlackBotの開発にもよく使っているngrokです。
Windowsにngrokをインストールしてください。手順はログイン後の画面にでているものをそのままやればOK。
./ngrok http 8080
としてngrokを起動することで、8080番ポートに接続するURLをngrokが吐き出してくれます。
Tableau DesktopからTableau Serverにログインする際は、ngrokのURLを使ってログインすればよいのです。
noteにはこれまでの経験を綴っていこうかと思います。サポートによって思い出すモチベーションが上がるかもしれない。いや、上がるはずです。