本記事では、obshell-sdk-goを使用してクラスタ内の特定ノードを削除する方法について説明します。
説明
まず、obshell-sdk-go クイックスタート を参照し、obshell-sdk-goの使用方法を確認することをお勧めします。
注意事項
クラスタのスケールインを行う前に、以下の要件に注意してください:
リクエスト元のclientに対応するノードは、スケールイン対象のクラスタ内に存在し、かつ削除対象のノードであってはなりません。つまり、ノード自身がクラスタから削除されることはできません。
obshellが正常に実行されている必要があります。
サンプルコード
タスクの同時実行
タスクの非同期実行
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
)
func main() {
// clientインスタンスを作成します。ノードのアドレスは'10.10.10.1'、ポートは2886です。
// 所在クラスタのroot@sysパスワードは'****'です。
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
if err != nil {
panic(err)
}
// ノード'10.10.10.3:2886'をクラスタから削除します。
req := client.V1().NewScaleInRequest("10.10.10.3", 2886)
if _, err = client.V1().ScaleInSyncWithRequest(req); err != nil {
panic(err)
}
}
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
)
func main() {
// クライアントインスタンスを作成します。ノードのアドレスは '10.10.10.1'、ポートは2886です。
// 所在するクラスタのroot@sysパスワードは '****' です。
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
if err != nil {
panic(err)
}
// ノード '10.10.10.3:2886' をクラスタから削除します。
req := client.V1().NewScaleInRequest("10.10.10.3", 2886)
dag, err := client.V1().ScaleInWithRequest(req)
if err != nil {
panic(err)
}
// タスクが成功するまで待機します。
if dag != nil && dag.GenericDTO != nil {
if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
panic(err)
}
}
}
関連ドキュメント
クラスタのスケールインに関するAPIインターフェースの説明については、クラスタのスケールインを参照してください。
obshell-sdk-pythonを使用したAPIメソッドの呼び出し方法については、クラスタのスケールインを参照してください。