テクノロジー概要
このページは、RapidMinerプラットフォームの背後で動いているデプロイメント技術のバックグラウンドについて紹介し、デプロイメントの作成やスケールアップ、スケールダウン、デプロイ可能なコンポーネントの追加、削除などの一般的なデプロイメントの管理タスクの例を紹介します。
コンポーネント(このドキュメント内ではサービスとも言います)をDockerイメージのセットにして配布しています。これらのイメージは、シングルマシンとマルチマシンの両方の基本要素です。
シングルマシンデプロイメント
シングルマシンにRapidMinerプラットフォームをデプロイするにあたり、docker-compose技術を選択しました。
docker-composeを使用してデプロイするには、以下が必要です。
- Dockerがインストールされた(物理または仮想の)ターゲットマシン。Linuxが推奨ホストOS。
- docker-compose.ymlデプロイメント定義ファイル。コンポーネント(サービス)、ネットワーク設定、ボリュームや環境変数を定義します。
- オプションで、.env設定ファイルが推奨されます。このファイルで必要なパラメータを定義でき、docker-compose.ymlファイルから参照されます(これにより、デプロイメントの設定がより簡単に、またエラーも起こしにくくなります。)
docker-composeセクションでは、このdocker-compose.ymlと.envファイルを最も一般的な事例に合わせて提供しています。これらのテンプレートは、すぐに使用できるはずです。
デプロイメントの起動と停止
このようなデプロイメントを開始するには、(上記のファイルをダウンロードしたディレクトリから)docker-composeコマンドラインツールを使用します。
- プラットフォーム全体(全てのサービス)の起動
docker-compose up -d
- 選択したサービスのみ起動 (例:Postgresデータベース、RapidMiner Server、ジョブエージェント)
docker-compose up -d rm-postgresql-svc rm-server-svc rm-server-job-agent-svc
以下ではサービスの停止と再起動の方法を紹介します。
- 全てのサービスの停止
docker-compose down
- 設定のリロードのために、サービスのうち一つを再起動 (例:RapidMiner Serverインスタンス、これはrm-server-svcと呼ばれます)
docker-compose restart rm-server-svc
デプロイメントのスケーリング
スケーリングの典型的な事例は、デプロイメント内のジョブエージェントコンテナ数のスケーリングです。
- サービスのうち一つをスケールアップ、またはスケールダウン (例:RapidMiner ジョブエージェントサービス)
docker-compose up --scale rm-server-job-agent-svc=5 -d
デプロイメントのカスタマイズ
各Dockerイメージには、そのイメージを基にしたDockerコンテナを起動するのに必要な環境変数のリストがあります。各RapidMinerのDockerイメージを、全イメージ集で公開しています。
私たちが配布しているテンプレートでは、定義されたサービスが動作するよう、すでに設定されています。設定パラメータ(環境変数)は.env設定ファイルへまとめられており、そこで設定パラメータを細かく調整することができます。以下があります。
- 「グローバル」設定変数。これは複数のサービスで使用されます(例えば、AUTH_SECRETはRapidMiner Server、ジョブエージェント、Jupyterhubサービスで使用されています)。
- 「サービス固有」設定変数 (例えば、ジョブエージェントのメモリパラメータ)
デプロイメントのアップグレード
デプロイメントをアップグレードするには、docker-compose.ymlを編集して、アップグレードする予定の新しいサービスのバージョンを含ませ、影響を受けるサービスを再起動するだけです(詳細は上記参照)。新しい設定パラメータが必要となる場合は、イメージ集を確認してください。
docker-composeCLIツールの他に、Docker Deployment Managerを使用することができます。これはクラウドイメージに同梱しているもので、とdocker-composeを基にしたデプロイメントを操作するWeb UIです。
マルチマシンデプロイメント
マルチマシンデプロイメントには、オーケストレーション技術にKubernetesを推奨します。私たちのDockerイメージは、どんなKubernetesクラスタにもデプロイすることができます。
以下のKubernetesサービスを用いて、サンプル設定をテストしました。
Kubernetesテンプレートセクションでは、サンプルのデプロイメント設定とチュートリアルを提供していますが、最終的なデプロイメントはお客様のご要望によります。
各テンプレートでは以下を提供しています。 – 提案されたボリューム定義:コンポーネントが必要とするストレージサイズを調整できます。- サービス定義:他のサービスに使用される内部サービス(例:データベースサービス)または外部サービス(例:RapidMIner Server Web UI)で、これらはユーザーに公開されます。 – デプロイメント構成は上記のdocker-compose.ymlファイル内で使用されるものとよく似たコンテナ定義で、必要な環境変数も含んでいます。
Kubernetesデプロイメントプロセス
テンプレートセクションで提案されたオブジェクト定義を基に、RapidMiner ServerプラットフォームをKubernetesクラスタにデプロイすることができます。
- 自身のKubernetesクラスタへの接続が機能しているか確認します。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:02:58Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
- ボリュームの作成と確認
$ kubectl apply -f volumes.yaml
persistentvolumeclaim/pgvolume-claim created
persistentvolumeclaim/rmsvolume-claim created
$ kubectl get pv pvc
$ kubectl get pv pv
- サービスの作成と確認
$ kubectl apply -f services.yaml`
service/rapidminer-server-amq-svc created
service/postgres-svc created
service/rapidminer-server-svc created
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
postgres-svc ClusterIP 10.152.183.3 5432/TCP 72s
rapidminer-server-amq-svc ClusterIP 10.152.183.128 5672/TCP 72s
rapidminer-server-svc LoadBalancer 10.152.183.252 ****** 8080:30661/TCP 72s
- サービスのデプロイ
$ kubectl apply -f database.yaml
pod/database created
$ kubectl apply -f rapidminer-server.yaml
pod/rapidminer-server created
$ kubectl apply -f job-agent.yaml
deployment.apps/job-agent created
- 実行中のPODの確認
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
pod/database 1/1 Running 0 41m
pod/job-agent-556b49567b-5cm8n 1/1 Running 0 44s
pod/job-agent-556b49567b-6585h 1/1 Running 0 44s
pod/job-agent-556b49567b-zk44g 1/1 Running 0 44s
pod/rapidminer-server 1/1 Running 0 40m