Alteryx Serverのバックアップを定期的に取得してS3バケットに保存する

転ばぬ先のバックアップ
2021.07.07

こんにちは、アライアンス統括部・新納(にいの)です。本日7/7は弊社クラスメソッドの創業記念日です。なんだかだんだんAlteryx Serverのバックアップを定期実行したくなってきませんか?というわけで今回はAlteryx Serverのバックアップを取得し、S3バケットに保存するまでを自動化してみました。

前提

今回の検証で使用した環境は以下の通り。

  • Alteryx Server 2021.2
  • Windows Server 2012 Standard R2 on AWS EC2
  • Alteryx Server埋め込みのMongoDBを使用
  • 単一ノード構成

Alteryx Serverのバックアップについての概要

デフォルトの場合、Alteryx Server上に存在するデータはすべて埋め込みのMongoDBに格納されています。Alteryx Serviceを停止し、emongodumpコマンド実行することで簡単にMongoDBのバックアップを取得可能です。バックアップ・リストアの詳細な手順は以下エントリに記載しております。

単純にバックアップするだけなら上記手順でも構いませんが、サーバー自体に不具合が発生し、バックアップファイルにアクセスできなくなった場合にリストアが難しくなってしまいます。このような不測の事態を防ぐためにも、Alteryx Serverの外部にバックアップファイルを保存しておくとより安心して運用できます。今回はAWS CLIを使用してS3バケットへバックアップファイルを保存します。

バックアップスクリプトで実現したいこと

バックアップスクリプトで実行するコマンドは以下の通り。

  • 設定ファイルをコピーする
    • C:/ProgramData/Alteryx/RuntimeSettings.xml
    • C:/ProgramData/Alteryx/Engine/SystemAlias.xml
    • C:/ProgramData/Alteryx/Engine/SystemConnections.xml
  • Alteryx Serviceを停止する
  • MongoDBをバックアップする
  • Alteryx Serviceを起動する
  • 設定ファイル・MongoDBのバックアップをzipに圧縮する
  • 所定のS3バケットへzipファイルをアップロードする

事前準備

AWS CLIのインストール

今回のケースではバックアップファイルをS3にアップロードするため、AWSのサービスをコマンドラインから操作するAWS CLIをAlteryx Serverへインストールする必要があります。インストール方法は以下をご参照ください。

IAMユーザーを作成

AWSマネジメントコンソールよりIAMユーザーを作成します。AWSアクセスの種類を選択では「プログラムによるアクセス」を指定します。

このIAMユーザーはS3バケットへのアップロードする用途にのみ使用するため、アクセスポリシーには「既存のポリシーを直接アタッチ」よりAmazonS3FullAccessを選択し、アタッチします。

「.csvのダウンロード」から作成したIAMユーザーのクレデンシャル情報がダウンロードできます。ここに記載されている情報はAWS CLIの設定で使用します。安全な場所に保管しておきましょう。

AWS CLIの設定

作成したIAMユーザーでAWS CLIを設定します。Alteryx Serverにリモートデスクトップ接続し、コマンドプロンプトを起動してaws configureを実行します。

項目
AWS Access key ID [None] 作成したIAMユーザーのアクセスキー
AWS Secret Access Key [None] 作成したIAMユーザーのシークレットキー
Default region name [None] S3バケットのリージョン
Default output format [None] 指定しなければJSONになります

S3バケットの作成

バックアップファイルの保存先となるS3バケットを作成します。マネジメントコンソールからでも作成できますし、CLIが使えるようになったので以下コマンドを実行して作成することもできます。

aws s3 mb s3://Alteryx-Server-Backup-Backet

バックアップスクリプト

完成したスクリプトはこちら。

::設定ファイルのバックアップ

copy /y C:\ProgramData\Alteryx\RuntimeSettings.xml C:\Users\Administrator\Documents\Backup
copy /y C:\ProgramData\Alteryx\Engine\SystemAlias.xml C:\Users\Administrator\Documents\Backup
copy /y C:\ProgramData\Alteryx\Engine\SystemConnections.xml C:\Users\Administrator\Documents\Backup

::Alteryx Service停止・MongoDBバックアップ・Alteryx Service起動

"C:/Program Files/Alteryx/bin/AlteryxService.exe" stop
"C:/Program Files/Alteryx/bin/AlteryxService.exe" emongodump=C:\Users\Administrator\Documents\Backup\MongoDBBackup
"C:/Program Files/Alteryx/bin/AlteryxService.exe" start

::バックアップファイル圧縮

powershell -Command "compress-archive -Path C:\Users\Administrator\Documents\Backup -DestinationPath C:\Users\Administrator\Documents\Backup.zip -Force"

::S3アップロード

aws s3 cp "C:\Users\Administrator\Documents\Backup.zip" s3://alteryx-server-backup-backet/

スケジュール設定

上記スクリプトを.batファイルとして保存し、タスクスケジューラに登録します。Alteryx Serviceの停止を伴うため、実行中はGalleryへのアクセスができなくなります。ユーザーが使用していない時間帯にスケジュールしておきましょう。

実行結果

指定したS3バケットにバックアップファイルが配置されていることが確認できました。

S3バケットのバージョニングを有効にしている場合、「バージョンの表示」トグルスイッチをONにすることで過去バージョンも遡って取得できます。最新バージョンよりも前のファイルからのリストアが必要なケースに役立ちます。

おわりに

Alteryx Serverの運用においてバックアップの取得は必須です。Alteryx Server上ではなくS3を使用することでサーバー自体がクラッシュするような事態にも対処でき、S3の機能でバージョン管理もできる上に、安価で確実にファイルを保存しておけます。良いこと尽くめですね。

このブログがAlteryx Serverの運用に悩む方の一助になれば幸いです。