Exemplo de API do balanceador de carga do aplicativo
Para fazer chamadas de API, deve-se usar um cliente REST. Por exemplo, é possível usar um comando curl
para recuperar todos os balanceadores de carga existentes:
curl -X GET "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" -H "Authorization: $iam_token"
Para obter informações detalhadas sobre as APIs disponíveis para balanceadores de carga do aplicativo em seu ambiente VPC, consulte a seção de balanceadores de carga na Referência de API de VPC.
No exemplo a seguir, use a API para criar um balanceador de carga do aplicativo na frente de duas instâncias de servidor virtual VPC (192.168.100.5
e 192.168.100.6
) executando um aplicativo da web que atenda na porta
80
. O balanceador de carga tem um listener de front-end, que permite acesso seguro ao aplicativo da web usando HTTPS. É possível usar a API para obter detalhes do balanceador de carga após a sua criação e para a sua exclusão.
As etapas de exemplo a seguir ignoram as etapas de pré-requisito de uso do console do IBM Cloud, da CLI ou da API para provisionar uma VPC, sub-redes e instâncias.
Também é possível criar um balanceador de carga usando a IU ou a CLI. Para obter instruções, consulte Criando um IBM Cloud Application Load Balancer for VPC ou a Referência de CLI.
Etapa 1. Crie um balanceador de carga com um listener, um conjunto e instâncias do servidor conectadas (membros do conjunto)
curl -H "Authorization: $iam_token" -X POST
"$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \
-d '{
"name": "example-balancer",
"logging": {
"datapath": {
"active": true
}
},
"is_public": true,
"listeners": [
{
"certificate_instance": {
"crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/123456:b8877ea4-b8eg-467e-912a-da1eb7f031cg:certificate:43219c4c97d013fb2a95b21dddde1234"
},
"port": 443,
"protocol": "https",
"default_pool": {
"name": "example-pool"
}
}
],
"pools": [
{
"algorithm": "round_robin",
"health_monitor": {
"delay": 5,
"max_retries": 2,
"timeout": 2,
"type": "http",
"url_path": "/"
},
"name": "example-pool",
"protocol": "http",
"session_persistence": {
"cookie_name": "string",
"type": "source_ip"
},
"members": [
{
"port": 80,
"target": {
"address": "192.168.100.5"
},
"weight": 50
},
{
"port": 80,
"target": {
"address": "192.168.100.6"
},
"weight": 50
}
]
}
],
"subnets": [
{
"id": "7ec87131-1c7e-4990-b4f0-a26f2e61f98e"
}
]
}'
Saída de amostra:
{
"created_at": "2018-07-12T23:17:07.5985381Z",
"crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
"hostname": "ac34687d.lb.appdomain.cloud",
"href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
"id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
"is_public": true,
"logging": {
"datapath": {
"active": true
}
},
"listeners": [
{
"id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
"href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
}
],
"name": "example-balancer",
"operating_status": "offline",
"pools": [
{
"id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
"href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
"name": "example-pool"
}
],
"provisioning_status": "create_pending",
"resource_group": {
"id": "56969d60-43e9-465c-883c-b9f7363e78e8"
},
"subnets": [
{
"id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
"href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
"name": "example-subnet"
}
]
}
Salve o ID do balanceador de carga para usar nas próximas etapas. Por exemplo, salve-o na variável lbid
.
lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
É possível implementar dispositivos do balanceador de carga em múltiplas sub-redes. Para obter maior disponibilidade e redundância, implemente o balanceador de carga em sub-redes em zonas diferentes.
Etapa 2. Obtenha detalhes sobre o balanceador de carga
curl -H "Authorization: $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"
Permita algum tempo para fornecimento. Quando o balanceador de carga estiver pronto, ele será configurado como online
e o status active
, conforme mostrado na saída de amostra a seguir:
Saída de amostra:
{
"id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
"crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
"href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
"name": "example-balancer",
"created_at": "2018-07-13T22:22:24.489Z",
"hostname": "dd754295-e9e0-4c9d-bf6c-58fbc59e5727.lb.appdomain.cloud",
"is_public": true,
"logging": {
"datapath": {
"active": true
}
},
"listeners": [
{
"id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
"href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
}
],
"operating_status": "online",
"pools": [
{
"id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
"href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
"name": "example-pool"
}
],
"private_ips": [
{
"address": "192.168.10.5"
},
{
"address": "192.168.10.6"
}
],
"provisioning_status": "active",
"public_ips": [
{
"address": "169.11.111.115"
},
{
"address": "169.11.111.116"
}
],
"resource_group": {
"id": "0738-56969d60-43e9-465c-883c-b9f7363e78e8"
},
"subnets": [
{
"id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
"href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
"name": "example-subnet"
}
]
}
Etapa 3. Excluir o balanceador de carga do aplicativo
curl -H "Authorization: $iam_token" -X DELETE "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"