这是来自一个客户的需求,想要调用 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 } ] }}"