Ejemplo 3: Asignación de una dirección IP virtual a un ECS para HA
Escenarios
Las direcciones IP virtuales se utilizan para una alta disponibilidad, ya que hacen posible la conmutación de ECS activa/en standby. De esta manera, si un ECS se cae por alguna razón, el otro puede hacerse cargo y los servicios continúan ininterrumpidos.
Esta sección describe cómo asignar una dirección IP virtual a un ECS para HA invocando a las API.
Prerrequisitos
- Ha creado una VPC y una subred y ha obtenido el ID de VPC y el ID de subred. Para obtener más información, consulte la sección Creación de una VPC y una subred.
- Usted ha comprado un ECS. Para obtener más información, véase la sección descripción general.
- Si utiliza un token para la autenticación, debe obtener el token y agregar X-Auth-Token al encabezado de solicitud cuando realice una llamada a la API. Obtenga el token haciendo referencia a Autenticación.
El token obtenido de IAM es válido por solo 24 horas. Si desea utilizar un token para la autenticación, puede almacenarlo en caché para evitar llamadas frecuentes.
Procedimiento
- Asigne una dirección IP virtual.
- Envíe POST https://VPC endpoint/v2.0/ports.
- Agregue X-Auth-Token al encabezado de solicitud.
- Establezca los siguientes parámetros en el cuerpo de la solicitud. La dirección IP virtual y el ECS deben estar en la misma subred.
{ "port": { "network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "device_owner": "neutron:VIP_PORT", "name": "vip_port_test" } }
Alternativamente, puede asignar una dirección IP específica.
{ "port": { "network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "device_owner": "neutron:VIP_PORT", "name": "vip_port_test", "fixed_ips": [ { "ip_address": "192.168.0.220" } ] } }
- Compruebe el mensaje de respuesta.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.
{ "port": { "id": "a7d98f3c-b42f-460b-96a1-07601e145961", "name": "port-test", "status": "DOWN", "admin_state_up": true, "fixed_ips": [{ "subnet_id": "213cb9d-3122-2ac1-1a29-91ffc1231a12", "ip_address": "192.168.0.220" }], "mac_address": "fa:16:3e:01:f7:90", "network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "tenant_id": "db82c9e1415a464ea68048baa8acc6b8", "project_id": "db82c9e1415a464ea68048baa8acc6b8", "device_id": "", "device_owner": "neutron:VIP_PORT", "security_groups": ["d0d58aa9-cda9-414c-9c52-6c3daf8534e6"], "extra_dhcp_opts": [], "allowed_address_pairs": [], "binding:vnic_type": "normal", "binding:vif_details": {}, "binding:profile": {}, "port_security_enabled": true, "created_at": "2018-09-20T01:45:26", "updated_at": "2018-09-20T01:45:26" } }
- Para obtener más información sobre los códigos de error que se muestran si la solicitud falla, consulte la sección Códigos de error.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.
- Obtenga la información de NIC basada en el ID de ECS.
- Envíe GET https://VPC endpoint/v2.0/ports?device_id={ecs_id}&network_id={network_id}.
- Agregue X-Auth-Token al encabezado de solicitud.
- Compruebe el mensaje de respuesta.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.
{ "ports": [{ "id": "02c72193-efec-42fb-853b-c33f2b802467", "name": "", "status": "ACTIVE", "admin_state_up": true, "fixed_ips": [{ "subnet_id": "213cb9d-3122-2ac1-1a29-91ffc1231a12", "ip_address": "192.168.0.75" }], "mac_address": "fa:16:3e:47:5f:c1", "network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "tenant_id": "db82c9e1415a464ea68048baa8acc6b8", "project_id": "db82c9e1415a464ea68048baa8acc6b8", "device_id": "ea61f836-b52f-41bf-9d06-685644001d6f", "device_owner": "compute:br-iaas-odin1a", "security_groups": [ "e0598d96-9451-4f8a-8de0-b8b4d451d9e7" ], "extra_dhcp_opts": [], "allowed_address_pairs": [], "binding:vnic_type": "normal", "binding:vif_details": { "primary_interface": true }, "binding:profile": {}, "port_security_enabled": true, "created_at": "2020-06-20T08:07:29", "updated_at": "2020-06-20T08:07:29" }] }
- Para obtener más información sobre los códigos de error que se muestran si la solicitud falla, consulte la sección Códigos de error.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.
- Vincule un ECS a la dirección IP virtual.
- Envíe PUT https://VPC endpoint/v2.0/ports/{port_id}. port_id indica el ID de puerto correspondiente a la dirección IP virtual asignada.
- Agregue X-Auth-Token al encabezado de solicitud.
- Establezca los siguientes parámetros en el cuerpo de la solicitud. Establezca el valor de ip_address en la dirección IP de la NIC del ECS obtenido en 2.
{ "port": { "allowed_address_pairs": [{ "ip_address": "192.168.0.75" }] } }
- Compruebe el mensaje de respuesta.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.
{ "port": { "id": "a7d98f3c-b42f-460b-96a1-07601e145961", "name": "port-test", "status": "DOWN", "admin_state_up": true, "fixed_ips": [{ "subnet_id": "213cb9d-3122-2ac1-1a29-91ffc1231a12", "ip_address": "192.168.0.220" }], "mac_address": "fa:16:3e:01:f7:90", "network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "tenant_id": "db82c9e1415a464ea68048baa8acc6b8", "project_id": "db82c9e1415a464ea68048baa8acc6b8", "device_id": "", "device_owner": "neutron:VIP_PORT", "security_groups": ["d0d58aa9-cda9-414c-9c52-6c3daf8534e6"], "extra_dhcp_opts": [], "allowed_address_pairs": [{ "ip_address": "192.168.0.75" }] "binding:vnic_type": "normal", "binding:vif_details": {}, "binding:profile": {}, "port_security_enabled": true, "created_at": "2018-09-20T01:45:26", "updated_at": "2018-09-20T01:45:26" } }
- Para obtener más información sobre los códigos de error que se muestran si la solicitud falla, consulte la sección Códigos de error.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.
- Deshabilite la función de comprobación de origen/destino para la NIC de ECS.
- Envíe PUT https://VPC endpoint/v2.0/ports/{port_id}. port_id es el ID de NIC obtenido en 2.
- Agregue X-Auth-Token al encabezado de solicitud.
- Establezca los siguientes parámetros en el cuerpo de la solicitud. Establezca el valor de ip_address en 1.1.1.1/0, la dirección IP de NIC del ECS.
{ "port": { "allowed_address_pairs": [{ "ip_address": "1.1.1.1/0" }] } }
- Compruebe el mensaje de respuesta.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.
{ "port": { "id": "02c72193-efec-42fb-853b-c33f2b802467", "name": "", "status": "ACTIVE", "admin_state_up": true, "fixed_ips": [{ "subnet_id": "213cb9d-3122-2ac1-1a29-91ffc1231a12", "ip_address": "192.168.0.75" }], "mac_address": "fa:16:3e:47:5f:c1", "network_id": "4779ab1c-7c1a-44b1-a02e-93dfc361b32d", "tenant_id": "db82c9e1415a464ea68048baa8acc6b8", "project_id": "db82c9e1415a464ea68048baa8acc6b8", "device_id": "ea61f836-b52f-41bf-9d06-685644001d6f", "device_owner": "compute:br-iaas-odin1a", "security_groups": ["e0598d96-9451-4f8a-8de0-b8b4d451d9e7"], "extra_dhcp_opts": [], "allowed_address_pairs": [{ "ip_address": "1.1.1.1/0" }], "binding:vnic_type": "normal", "binding:vif_details": { "primary_interface": true }, "binding:profile": {}, "port_security_enabled": true, "created_at": "2020-06-20T08:07:29", "updated_at": "2020-06-20T08:07:29" } }
- Para obtener más información sobre los códigos de error que se muestran si la solicitud falla, consulte la sección Códigos de error.
- La solicitud se realiza correctamente si se muestra la siguiente respuesta.