本記事では、obshell-sdk-pythonを使用して、初期化されていないクラスタにノードを追加する方法について説明します。
説明
まず、obshell-sdk-python クイックスタート を参照し、obshell-sdk-pythonの使い方を確認することをお勧めします。
注意事項
初期化されていないクラスタにノードを追加する前に、以下の要件に注意してください:
リクエスト元のクライアントに対応するノードが、初期化対象のクラスタ内に存在する必要があります(自己追加は除く)。
追加されるノードは、これまでにどのクラスタにも参加したことがないこと。
自身のノードを追加する場合、そのノードがこれまでにどのクラスタにも参加したことがなく、かつobshellが正常に実行されていることを確認する必要があります。
サンプルコード
以下のコードは、10.10.10.1 マシンに自身のノードを追加してマスターとし、さらに別のノード(10.10.10.2)を追加してフォロワーとするために使用されます。
from obshell import ClientSet
# クライアントインスタンスを作成します。ノードのアドレスは '10.10.10.1'、ポートは2886です。
client = ClientSet("10.10.10.1", 2886)
# 自身にjoinします。
client.v1.join_sync("10.10.10.1", 2886, "zone1")
# '10.10.10.1' が存在するクラスタに、ノード '10.10.10.2:2886' を追加します。
client.v1.join_sync("10.10.10.2", 2886, "zone1", agent_password="****")
from obshell import ClientSet
# クライアントインスタンスを作成します。ノードのアドレスは '10.10.10.1'、ポートは2886です。
client = ClientSet("10.10.10.1", 2886)
# 自身にjoinします。
dag = client.v1.join("10.10.10.1", 2886, "zone1")
# タスクの完了を待ちます。
client.v1.wait_dag_succeed(dag.generic_id)
# '10.10.10.1' が存在するクラスタに、ノード '10.10.10.2:2886' を追加します。
dag = client.v1.join("10.10.10.2", 2886, "zone1", agent_password="****")
# タスクの完了を待ちます。
client.v1.wait_dag_succeed(dag-generic_id)
関連ドキュメント
クラスタ初期化前にノードを追加するAPIインターフェースの説明については、クラスタ初期化前にノードを追加するを参照してください。
obshell-sdk-goでAPIメソッドを呼び出す方法の紹介については、クラスタ初期化前にノードを追加するを参照してください。