ops manager バージョン 3.6 によって管理される mongodb レプリカ セット内でスイッチオーバーを実行することを目的とした Python スクリプト (およびスクリプトを機能させることができないため、それは別の話ですが、それは別の話です) を作成しました。1 つのサイトに 3 つのサーバー、もう 1 つのサイトに 2 つのサイトの 2 つのサイトがあり、そのスクリプトが基本的に行うことは、PUT 要求を送信してレプリカ セットの自動化構成を編集し、指定されたサイトに応じて必要なサーバーの優先度を変更することです。残りを 1 のままにしてアービタを追加し、必要に応じてそれらを削除しながら、2 にします。ここでの目的は、put リクエストで優先度を変更して動作させることです。PUT リクエストは次のようになります。
data = {"replicaSets": [
{
"_id"_: "PP_ATLAS",
"members": [
{
"_id": 2,
"host": "*servername*",
"priority": 2,
},
{
"_id": 3,
"host": "*servername*",
},
{
"_id": 4,
"host": "*servername*",
}
]
}
],
}
headers = {'Content-Type': 'application/json'}
js = requests.put(url, auth=HTTPDigestAuth (MMS_User, MMS_API), data=json.dumps(data), headers=headers, verify=False)
MMS_User と MMS_API は、MMS とも呼ばれる ops マネージャーにアクセスするために使用される識別トークンです。
これを試みると (スクリプトは、切り替え先のサーバー名を引数として要求します)、次のメッセージが表示されます。
{"detail":"Invalid automation config: Process *servername that was given as an argument* referenced in one or more deployment items but not found in configuration.","error":400,"errorCode":null,"parameters":null,"reason":"Bad Request"}
400
引数として指定されたサーバー名は、実際の引用符「引数として指定されたサーバー名」ではなく、それが示すものです。