本記事では、obshell-sdk-goを使用してクラスタをスケーリングする方法について説明します。
説明
obshell-sdk-goのクイックスタート を参照し、obshell-sdk-goの使用方法を理解することをお勧めします。
注意事項
クラスタを拡張する前に、以下の要件に留意してください:
要求するクライアントに対応するノードが拡張対象のクラスタ内にある必要があります。
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)
}
configs := map[string]string{
"datafile_size": "24G", "log_disk_size": "24G",
"cpu_count": "16", "memory_limit": "16G", "system_memory": "8G",
"enable_syslog_recycle": "true", "enable_syslog_wf": "true"}
// クラスタにノード'10.10.10.4:2886'を追加します。OBServerノードはzone3に配置され、設定はconfigsです。
req := client.V1().NewScaleOutRequest("10.10.10.4", 2886, "zone3", configs)
if _, err = client.V1().ScaleOutSyncWithRequest(req); err != nil {
panic(err)
}
}
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)
}
configs := map[string]string{
"datafile_size": "24G", "log_disk_size": "24G",
"cpu_count": "16", "memory_limit": "16G", "system_memory": "8G",
"enable_syslog_recycle": "true", "enable_syslog_wf": "true"}
// クラスタにノード'10.10.10.4:2886'を追加します。OBServerノードはzone3に配置され、設定はconfigsです。
req := client.V1().NewScaleOutRequest("10.10.10.4", 2886, "zone3", configs)
dag, err := client.V1().ScaleOutWithRequest(req)
if err != nil {
panic(err)
}
// タスクが成功するまで待機します
if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
panic(err)
}
}
関連ドキュメント
クラスタのスケーリングに関するAPIインターフェースの説明については、クラスタのスケーリングを参照してください。
obshell-sdk-pythonを使用してAPIメソッドをリクエストする方法については、クラスタのスケーリングを参照してください。