Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda> Virtual Private Cloud> Referencia de la API> Ejemplos de aplicación> Ejemplo 3: Asignación de una dirección IP virtual a un ECS para HA
Actualización más reciente 2023-02-03 GMT+08:00

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

  1. Asigne una dirección IP virtual.
    1. Envíe POST https://VPC endpoint/v2.0/ports.
    2. Agregue X-Auth-Token al encabezado de solicitud.
    3. 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"
      			}
      		]
      	}
      }
    4. 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.
  2. Obtenga la información de NIC basada en el ID de ECS.
    1. Envíe GET https://VPC endpoint/v2.0/ports?device_id={ecs_id}&network_id={network_id}.
    2. Agregue X-Auth-Token al encabezado de solicitud.
    3. 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.
  3. Vincule un ECS a la dirección IP virtual.
    1. 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.
    2. Agregue X-Auth-Token al encabezado de solicitud.
    3. 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"
      		}]
      	}
      }
    4. 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.
  4. Deshabilite la función de comprobación de origen/destino para la NIC de ECS.
    1. Envíe PUT https://VPC endpoint/v2.0/ports/{port_id}. port_id es el ID de NIC obtenido en 2.
    2. Agregue X-Auth-Token al encabezado de solicitud.
    3. 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"
      		}]
      	}
      }
    4. 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.