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