这是来自一个客户的需求,想要调用 Avi API 来配合应用禁用/启用 Pool 中的指定成员,所以根据 Avi 的 API 手册简单弄了个文档
Pool 基本信息获取
在控制 Pool 的状态前,需要先获取 Pool 的 UUID,比如: pool-109f6676-a315-4b9b-8c39-d1e2e12f6866
此时可以通过 postman、curl 之类的工具去获取:
# 添加认证 header,可通过下列命令生成
# echo -n 'admin:VMware1!'| base64
curl -k -X GET "https://10.10.50.112/api/pool" -H "accept: application/json" -H "X-Avi-Version: 21.1.4" -H "authorization: Basic YWRtaW46Vk13YXJlMSE="
# 或者直接使用明文密码
curl -k -u admin:VMware1! -X GET "https://10.10.50.112/api/pool" -H "accept: application/json" -H "X-Avi-Version: 21.1.4"
接着需要知道要禁用/启用的后端 server 信息(real server):
- IP:真实的 IP 地址
- Port:端口号
- enabled:是否启用
禁用 pool 成员方式1(更易读)
curl -k --location --request PATCH 'https://10.10.50.112/api/pool/pool-109f6676-a315-4b9b-8c39-d1e2e12f6866' \
--header 'Authorization: Basic YWRtaW46Vk13YXJlMSE=' \
--header 'Content-Type: application/json' \
--data-raw '{
"replace": {
"servers": [
{
"ip": {
"addr": "10.10.50.9",
"type": "V4"
},
"port": 8083,
"enabled": false
}
]
}
}'
禁用 pool 成员方式2
curl -k -X PATCH "https://10.10.50.112/api/pool/pool-109f6676-a315-4b9b-8c39-d1e2e12f6866" -H "accept: application/json" -H "X-Avi-Version: 21.1.4" -H "authorization: Basic YWRtaW46Vk13YXJlMSE=" -H "Content-Type: application/json" -d "{ \"replace\": { \"servers\": [ { \"ip\": { \"addr\": \"10.10.50.9\", \"type\": \"V4\" }, \"port\": 8083, \"enabled\": false } ] }}"