Mesos セットアップ

背景

Mesosの実装は2つのコンポーネントから成ります: アプリケーション マスターとワーカー。ワーカーは、アプリケーションマスタによってセットアップされた環境によってパラメータ化される単純なタスクマネージャです。Mesosの最も洗練されたコンポーネントの実装はアプリケーションマスターです。アプリケーションマスターは現在のところ以下のコンポーネントをホストします:

Mesos スケジューラ

スケジューラは、Mesosと一緒にフレームワークを登録し、リソースをリクエストし、ワーカーノードを起動する責任があります。スケジューラは連続的にフレームワークが健全な状態にあることをMesosに報告する必要があります。クラスタの健全さを検証するためにスケジューラはspawnされたワーカーを監視し、必要であれば失敗したとしてマークをし、それらを再起動します。

FlinkのMesosスケジューラ自身は現在のところ高可用性はありません。しかし、状態についての全ての必要な情報をZookeeperに持続します (例えば、設定、ワーカーのリスト)。障害時には、新しいスケジューラを起動するために外部のシステムに依存します。スケジューラはMesosと一緒に再び登録し、調和フェーズに入ります。調和フェーズでは、スケジューラは実行中のワーカーノードのリストを受け取ります。それはZookeeperから回復された情報と適合し、障害時の前の状態でクラスタに戻すようにします。

Artifact サーバ

artifactサーバはリソースをワーカーノードに提供する責任があります。リソースは、Flinkバイナリから始まり、共有される秘密鍵あるいは設定ファイルまでの何でもありえます。例えば、コンテナ化されていない環境では、アーティファクトサーバはFlinkバイナリを提供するでしょう。何のファイルが提供されるかはオーバーレイが使用する設定に依存します。

Mesos スケジューラは現在のところジョブマネージャーが備わっていますが、将来のバージョンではジョブマネージャーの非依存が始まるでしょう(FLIP-6を見てください)。提案された変更はジョブのサブミットと監視を中心となるだろう Dipsatcher コンポーネントも追加するでしょう。

スタートアップスクリプトと設定のオーバーレイ

開始スクリプトはアプリケーションマスターを設定および開始する方法を提供します。その先の全ての設定はワーカーノードによって継承されます。これは設定オーバーレイを使って行われます。設定のオーバーレイはワーカーノードに発送される環境変数および設定ファイルから設定を推測する方法を提供します。

DC/OS

この章は洗練されたアプリケーションレイヤーを持つMesos配布であるDC/OSを参照します。それはMarathonと一緒にあらかじめインストールされ、障害時にアプリケーションを管理しそれらの状態を維持するためのサービスです。

実行中の DC/OS クラスタが無い場合は、公式webサイト上のDC/OSをインストールする方法の説明に従ってください。

一旦DC/OS クラスタを手にすると、DC/OS Universeを通じてFlinkをインストールすることができます。検索プロンプトの中で、単純にFlinkを検索します。Alternatively, you can use the DC/OS CLI:

dcos package install flink

Further information can be found in the DC/OS examples documentation.

DC/OS無しのMesos

DC/OS無しにMesosを実行することもできます。

Mesosのインストール

公式webサイト上のMesosのセットアップの方法の説明に従ってください。

インストレーションの後で、ファイルMESOS_HOME/etc/mesos/mastersMESOS_HOME/etc/mesos/slavesを作成することで、マスターのセットとエージェントのノードを設定することができます。これらのファイルは各行にそれぞれのコンポーネントが開始されるだろう(これらのノードへのSSHアクセスを仮定します)1つのホストを含みます。

次に、MESOS_HOME/etc/mesos/mesos-master-env.shを作成するか、同じディレクトリ内で見つかるテンプレートを使う必要があります。このファイル内で、以下を定義しなければなりません

export MESOS_work_dir=WORK_DIRECTORY

そして、以下をアンコメントすることをお勧めします

export MESOS_log_dir=LOGGING_DIRECTORY

Mesosエージェントを設定するために、MESOS_HOME/etc/mesos/mesos-agent-env.sh を生成するか、同じディレクトリ内で見つかるテンプレートを使う必要があります。以下を設定しなければなりません

export MESOS_master=MASTER_HOSTNAME:MASTER_PORT

そして、以下をアンコメントします

export MESOS_log_dir=LOGGING_DIRECTORY
export MESOS_work_dir=WORK_DIRECTORY

Mesos ライブラリ

Mesosを使ってJavaアプリケーションを実行するには、Linux上でMESOS_NATIVE_JAVA_LIBRARY=MESOS_HOME/lib/libmesos.soをexportしなければなりません。Mac OS X 下では、MESOS_NATIVE_JAVA_LIBRARY=MESOS_HOME/lib/libmesos.dylibをexportしなければなりません。

Mesosの配備

mesosクラスタを開始するには、配備スクリプトMESOS_HOME/sbin/mesos-start-cluster.shを使います。mesosクラスタを停止するには、配備スクリプトMESOS_HOME/sbin/mesos-stop-cluster.shを使います。配備スクリプトについての更なる情報はここで見つかります。

Marathonのインストール

任意に、高可用性(HA)モードでFlinkを実行するために必要になるだろうMarasonをインストールするかもしれません。

全てのMesosマスターおよびエージェントノード上にFlinkをインストールするかもしれません。配備の間にFink webサイトからバイナリを取り出し、アプリケーションマスターを起動する前に独自の設定を適用することもできます。もっと容易で簡単に取り組みを指示する方法は、Flinkバイナリおよび設定を管理するためにDockerコンテナを使うことです。

これは以下の設定エントリを使って制御されます:

mesos.resourcemanager.tasks.container.type: mesos _or_ docker

‘docker’ に設定した場合、イメージ名を指定します:

mesos.resourcemanager.tasks.container.image.name: image_name

スタンドアローン

Flink配布物の/bin ディレクトリ内で、Mesosクラスタ内のFlinkプロセスを管理する2つのスタートアップ スクリプトが見つかります:

  1. mesos-appmaster.sh これはMesosスケジューラを登録するMesosアプリケーションマスターを開始します。それはワーカーノードを開始する責任もあります。

  2. mesos-taskmanager.sh Mesosワーカープロセスのためのエントリポイント。明示的にこのスクリプトを開始する必要はありません。それは新しいタスクマネージャーを起動するためにMesosワーカーノードによって自動的に起動されます。

mesos-appmaster.sh スクリプトを実行するには、flink-conf.yamlの中でmesos.masterを定義するか、-Dmesos.master=...を使ってそれをJavaプロセスに渡す必要があります。更に、mesos.initial-tasksを使ってMesosによって開始されるタスクマネージャーの数を定義しなければなりません。この値もflink-conf.yamlの中で定義されるか、Javaプロパティとして渡されます。

mesos-appmaster.shを実行する時、それはスクリプトを実行したマシーン上でジョブマネージャーを生成するでしょう。それとは対照的に、タスクマネージャーはMesosクラスタ内でMesosタスクとして実行されるでしょう。

一般的な設定

Mesosアプリケーションマスターに渡されるJavaプロパティを使ってMesosアプリケーションを完全にパラメータ化することができます。これにより一般的なFlinkの設定パラメータも指定することができます。例えば:

bin/mesos-appmaster.sh \
    -Dmesos.master=master.foobar.org:5050 \
    -Djobmanager.heap.mb=1024 \
    -Djobmanager.rpc.port=6123 \
    -Djobmanager.web.port=8081 \
    -Dmesos.initial-tasks=10 \
    -Dmesos.resourcemanager.tasks.mem=4096 \
    -Dtaskmanager.heap.mb=3500 \
    -Dtaskmanager.numberOfTaskSlots=2 \
    -Dparallelism.default=10

高可用性

ノードあるいはプロセスの障害時にFlinkマスタープロセスの再起動の面倒を見るために、MerathonあるいはApache Auroraのようなサービスを実行する必要があるでしょう更に、Flinkドキュメント内の高可用性の章で説明されたように、Zookeeperが設定される必要があります。

タスクの和解が正しく動作するように、high-availability.zookeeper.path.mesos-workersも有効なZookeeperパスに設定してください。

Marathon

Marathon はbin/mesos-appmaster.sh スクリプトを起動するようにセットアップされなければなりません。特に、それはFlinkクラスタのための全ての設定パラメータも調節する必要があります。

これはMarathonのための設定の例です:

{
    "id": "flink",
    "cmd": "$FLINK_HOME/bin/mesos-appmaster.sh -Djobmanager.heap.mb=1024 -Djobmanager.rpc.port=6123 -Djobmanager.web.port=8081 -Dmesos.initial-tasks=1 -Dmesos.resourcemanager.tasks.mem=1024 -Dtaskmanager.heap.mb=1024 -Dtaskmanager.numberOfTaskSlots=2 -Dparallelism.default=2 -Dmesos.resourcemanager.tasks.cpus=1",
    "cpus": 1.0,
    "mem": 1024
}

Marathonと一緒にFlinkを実行する場合、ジョブマネージャーを含むFlinkクラスタの全体はMesosクラスタ内のMesosタスクとして実行されるでしょう。

設定パラメータ

mesos.initial-tasks: マスタが開始した時に起動する初期ワーカー (デフォルト: クラスタの起動時に指定されたワーカーの数)。

mesos.constraints.hard.hostattribute: Constraints for task placement on Mesos based on agent attributes (DEFAULT: None). Takes a comma-separated list of key:value pairs corresponding to the attributes exposed by the target mesos agents. Example: az:eu-west-1a,series:t2

mesos.maximum-failed-tasks: クラスタが故障するまでの失敗したワーカーの最大数 (デフォルト: 初期ワーカーの数)。この機能を無効にするために -1 を設定することができます。

mesos.master: Mesos マスターのURL。値は以下の形式のうちの1つでなければなりません:

  • host:port
  • zk://host1:port1,host2:port2,.../path
  • zk://username:password@host1:port1,host2:port2,.../path
  • file:///path/to/file

mesos.failover-timeout: Mesosスケジューラのためのフェイルオーバー タイムアウトの秒数。実行中のタスクはこの後で自動的にシャットダウンされます (デフォルト: 600)。

mesos.resourcemanager.artifactserver.port: 使用するMesos アーティファクト サーバのポートを定義する設定パラメータ。ポートを0に設定するとOSが利用可能なポートを選択するでしょう。

mesos.resourcemanager.framework.name: Mesos のフレームワーク名 (デフォルト: Flink)

mesos.resourcemanager.framework.role: Mesos フレームワークのロール定義 (デフォルト: *)

high-availability.zookeeper.path.mesos-workers: Mesosワーカーの情報を持続するためのZooKeeperのルートパス。

mesos.resourcemanager.framework.principal: Mesos フレームワーク プリンシパル (デフォルト無し)

mesos.resourcemanager.framework.secret: Mesos フレームワークの秘密鍵 (デフォルト無し)

mesos.resourcemanager.framework.user: Mesos フレームワークのユーザ (デフォルト:””)

mesos.resourcemanager.artifactserver.ssl.enabled: Flinkアーティファクト サーバのためのSSLを有効にします (デフォルト: true)。暗号化を有効にするためにsecurity.ssl.enabledtrue に設定する必要があることに注意してください。

mesos.resourcemanager.tasks.mem: Mesosワーカーに割り当てるメモリのMB数 (デフォルト: 1024)

mesos.resourcemanager.tasks.cpus: Mesosワーカーに割り当てるCPU (デフォルト: 0.0)

mesos.resourcemanager.tasks.container.type: 使用するコンテナ化の型: “mesos” あるいは “docker” (デフォルト: mesos);

mesos.resourcemanager.tasks.container.image.name: コンテナに使用するイメージ名 (デフォルト無し)

mesos.resourcemanager.tasks.container.volumes: A comma separated list of [host_path:]container_path[:RO|RW]. This allows for mounting additional volumes into your container. (NO DEFAULT)

mesos.resourcemanager.tasks.hostname: Optional value to define the TaskManager’s hostname. The pattern _TASK_ is replaced by the actual id of the Mesos task. This can be used to configure the TaskManager to use Mesos DNS (e.g. _TASK_.flink-service.mesos) for name lookups. (NO DEFAULT)

mesos.resourcemanager.tasks.bootstrap-cmd: A command which is executed before the TaskManager is started (NO DEFAULT).

上に戻る

TOP
inserted by FC2 system