Problemas comuns na criação de instâncias de DCS usando uma API
Este tópico descreve problemas comuns que podem ocorrer quando você cria instâncias de DCS usando as API.
|
Edição |
Solução |
|---|---|
|
Configurando a quantidade de réplicas ao comprar uma instância usando uma API |
Se uma instância for comprada usando uma API, sua quantidade de réplica será determinada pelo parâmetro spec_code especificado durante a compra. A quantidade de réplica é o valor de replica_count no exemplo de resposta fornecido em Consulta de variantes do produto. |
|
Use uma API para obter o ID de sub-rede correto ao criar uma instância. |
|
|
Se os recursos em uma AZ forem insuficientes, a criação de instâncias na AZ falhará. Você pode usar o valor de flavors_available_zones.az_codes para garantir que a AZ que você usa tenha recursos suficientes, conforme mostrado no exemplo de resposta em Consulta de variantes do produto. |
|
|
Chame a API descrita em Consulta das cotas de locatário. O valor de quota indica o número máximo de instâncias que podem ser criadas e a memória total máxima permitida. |
Configurando a quantidade de réplicas ao comprar uma instância usando uma API
Se uma instância for comprada usando uma API, sua quantidade de réplica será determinada pelo parâmetro spec_code especificado durante a compra. O número de réplicas é o valor de replica_count na resposta de exemplo da Consulta de variantes do produto API.
Exemplo de solicitação:
GET https://{dcs_endpoint}/v2/flavors?cache_mode={cache_mode}&engine={engine}&engine_version={engine_version}&cpu_type={cpu_type}&capacity={capacity}
Exemplo de resposta:
{
"flavors": [
{
"dec": false,
"spec_code": "redis.ha.xu1.large.r4.2",
"cloud_service_type_code": "hws.service.type.dcs",
"cloud_resource_type_code": "hws.resource.type.dcs3",
"cache_mode": "ha",
"engine": "redis",
"engine_version": "4.0;5.0",
"product_type": "generic",
"cpu_type": "x86_64",
"storage_type": "DRAM",
"capacity": [
"2"
],
"billing_mode": [
"Hourly",
"Monthly",
"Yearly"
],
"tenant_ip_count": 4,
"pricing_type": "normal",
"is_dec": false,
"attrs": [
{
"capacity": "2",
"name": "max_memory",
"value": "2"
},
{
"capacity": "2",
"name": "max_connections",
"value": "50000"
},
{
"capacity": "2",
"name": "sharding_num",
"value": "1"
},
{
"capacity": "2",
"name": "proxy_num",
"value": "0"
},
{
"capacity": "2",
"name": "db_number",
"value": "256"
},
{
"capacity": "2",
"name": "max_clients",
"value": "10000"
},
{
"capacity": "2",
"name": "max_bandwidth",
"value": "128"
}
],
"flavors_available_zones": [
{
"capacity": "2",
"unit": "GB",
"available_zones": [
"a0865121f83b41cbafce65930a22a6e8",
"15dcd3f789cb4fc088dbdece9c5eb547",
"2dcb154ac2724a6d92e9bcc859657c1e",
"effdcbc7d4d64a02aa1fa26b42f56533"
],
"az_codes": [
"xx-xx-xx1",
"xx-xx-xx2",
"xx-xx-xx3",
"xx-xx-xx4"
]
}
],
"replica_count": 4,
"inquery_spec_code": null
}
]
}
Ao comprar uma instância, certifique-se de que o valor de spec_code corresponda ao valor da capacity.
Obtendo a ID da sub-rede
Ao comprar uma instância, configure o ID de sub-rede correto para que você possa se conectar com êxito à instância. Você pode obter o ID de sub-rede usando GET /v1/{project_id}/subnets?{vpc_id}. vpc_id pode ser obtido usando a API GET /v1/{project_id}/vpcs.
Exemplo de solicitação para obtenção de vpc_id:
GET https://{vpc_endpoint}/v1/7d80ae32f57b499eb8781f9a9f57c538/vpcs
Para obter o valor de {vpc_endpoint}, consulte Regiões e Endpoints.
Exemplo de resposta para obtenção de vpc_id:
{
"vpcs": [{
"id": "743bf021-2c2d-4511-aeac-85bd48c06af7",
"name": "vpc-d2d4",
"description": "",
"cidr": "192.168.0.0/16",
"status": "OK",
"routes": [],
"enterprise_project_id": "0"
}]
}
Exemplo de solicitação para obter o ID da sub-rede:
GET https://{vpc_endpoint}/v1/7d80ae32f57b499eb8781f9a9f57c538/subnets?vpc_id=743bf021-2c2d-4511-aeac-85bd48c06af7
Exemplo de resposta para obter o ID da sub-rede:
{
"subnets": [{
"id": "b0d6e0ac-fcce-4e11-a4a6-707e851ae1c3",
"name": "subnet-d2e4",
"description": "",
"cidr": "192.168.0.0/24",
"dnsList": ["100.125.1.250",
"100.125.129.250"],
"status": "ACTIVE",
"vpc_id": "743bf021-2c2d-4511-aeac-85bd48c06af7",
"ipv6_enable": false,
"gateway_ip": "192.168.0.1",
"dhcp_enable": true,
"primary_dns": "100.125.1.250",
"secondary_dns": "100.125.129.250",
"availability_zone": "xxxxxx",
"neutron_network_id": "b0d6e0ac-fcce-4e11-a4a6-707e851ae1c3",
"neutron_subnet_id": "3d4ccce0-cadc-4af4-8c21-14d2857ffe5e",
"extra_dhcp_opts": []
}]
}
Recursos de AZ insuficientes durante a compra da instância
Ao comprar uma instância, se você quiser verificar se os recursos de um sabor são suficientes em uma AZ, você pode chamar a API descrita em Consulta de variantes do produto para exibir detalhes sobre as AZ em que a sabor está disponível e determinar as AZ que podem ser usadas com base no valor de flavors_available_zones.
Veja a seguir um exemplo de solicitação para consultar as AZ com recursos suficientes para sabor redis.ha.xu1.large.r2.2 em uma região:
https://{dcs_endpoint}/v2/05041fffa40025702f6dc009cc6f8f33/flavors?spec_code=redis.ha.xu1.large.r2.2
Exemplo de resposta:
{
"flavors": [
{
"dec": false,
"spec_code": "redis.ha.xu1.large.r2.2",
"cloud_service_type_code": "hws.service.type.dcs",
"cloud_resource_type_code": "hws.resource.type.dcs3",
"cache_mode": "ha",
"engine": "redis",
"engine_version": "4.0;5.0",
"product_type": "generic",
"cpu_type": "x86_64",
"storage_type": "DRAM",
"capacity": [
"2"
],
"billing_mode": [
"Hourly",
"Monthly",
"Yearly"
],
"tenant_ip_count": 2,
"pricing_type": "normal",
"is_dec": false,
"attrs": [
{
"capacity": "2",
"name": "max_memory",
"value": "2"
},
{
"capacity": "2",
"name": "max_connections",
"value": "50000"
},
{
"capacity": "2",
"name": "sharding_num",
"value": "1"
},
{
"capacity": "2",
"name": "proxy_num",
"value": "0"
},
{
"capacity": "2",
"name": "db_number",
"value": "256"
},
{
"capacity": "2",
"name": "max_clients",
"value": "10000"
},
{
"capacity": "2",
"name": "max_bandwidth",
"value": "128"
}
],
"flavors_available_zones": [
{
"capacity": "2",
"unit": "GB",
"available_zones": [
"a0865121f83b41cbafce65930a22a6e8",
"15dcd3f789cb4fc088dbdece9c5eb547",
"2dcb154ac2724a6d92e9bcc859657c1e",
"effdcbc7d4d64a02aa1fa26b42f56533"
],
"az_codes": [
"xx-xx-xx1",
"xx-xx-xx2",
"xx-xx-xx3",
"xx-xx-xx4"
]
}
],
"replica_count": 2,
"inquery_spec_code": null
}
]
}
flavors_available_zones indica as AZ com recursos suficientes para o sabor.
Consultando Cotas de Recurso
Para consultar as cotas de recursos da conta atual, incluindo as cotas usadas, chame a API descrita em Consulta das cotas de locatário.
Exemplo de solicitação:
GET https://{dcs_endpoint}/v2/05041fffa40025702f6dc009cc6f8f33/quota
Exemplo de resposta:
{
"quotas": {
"resources": [
{
"quota": 160,
"used": 1,
"type": "instance",
"min": 0,
"max": 2147483647,
"unit": null
},
{
"quota": 64000,
"used": 0,
"type": "ram",
"min": 0,
"max": 1048576,
"unit": "GB"
}
]
}
}
- Quando type é definido como instance, max e min indicam as cotas máximas e mínimas de instância que podem ser aplicadas, respectivamente.
- Quando type é definido como ram, max e min indicam as cotas máximas e mínimas de memória que podem ser aplicadas, respectivamente.
- quota é o número máximo de instâncias que podem ser criadas e a memória total máxima permitida.
- used é o número de instâncias criadas e de memória usada.