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 4: Asignación de una dirección IPv6 virtual a ECS para HA
Actualización más reciente 2023-02-03 GMT+08:00

Ejemplo 4: Asignación de una dirección IPv6 virtual a 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.

This section describes how to assign a virtual IPv6 address to ECSs for HA by calling APIs.

Prerrequisitos

  • Ha creado una VPC y una subred que admiten IPv4 e IPv6 y ha obtenido el ID de VPC y el ID de subred. Para obtener más información, consulte Creación de una VPC y una subred.
  • Usted ha comprado un ECS. Para obtener más información, véase la 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 IPv6 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 subred donde reside la dirección IP virtual debe ser la misma que la del ECS. Establezca subnet_id en el ID de la subred IPv6.
      {
          "port":{
              "network_id":"b0ad9b80-bb16-4550-8ce0-514f949e35ee",
              "device_owner":"neutron:VIP_PORT",
              "name":"ipv6_vip_port_test",
              "fixed_ips":[
                  {
                      "subnet_id":"33ce2628-6246-4e3a-859f-99cd753ff704"
                  }
              ]
          }
      }
    4. Compruebe el mensaje de respuesta.
      • La solicitud se realiza correctamente si se muestra la siguiente respuesta:
        {
            "port": {
                "id": "d92cfee7-9ebe-4483-85c1-00ffb1e45cd8",
                "name": "ipv6_vip_port_test",
                "status": "DOWN",
                "admin_state_up": true,
                "fixed_ips": [
                    {
                        "subnet_id": "33ce2628-6246-4e3a-859f-99cd753ff704",
                        "ip_address": "2001:db8:a583:21d:2e25:9403:6f3d:4664"
                    }
                ],
                "mac_address": "fa:16:3e:99:2e:92",
                "network_id": "b0ad9b80-bb16-4550-8ce0-514f949e35ee",
                "tenant_id": "060576782980d5762f9ec014dd2f1148",
                "project_id": "060576782980d5762f9ec014dd2f1148",
                "device_id": "",
                "device_owner": "neutron:VIP_PORT",
                "security_groups": [],
                "extra_dhcp_opts": [],
                "allowed_address_pairs": [],
                "binding:vnic_type": "normal",
                "binding:vif_details": {},
                "binding:profile": {},
                "port_security_enabled": true,
                "created_at": "2020-12-15T03:01:07",
                "updated_at": "2020-12-15T03:01:07"
            }
        }
      • 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. Consulte la información de la NIC de acuerdo con el ID de ECS. El valor de fixed_ips contiene las direcciones de IPv4 y de IPv6.
    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": "47b4cd46-cfe5-415d-957f-5068189dce94",
                    "name": "",
                    "status": "ACTIVE",
                    "admin_state_up": true,
                    "fixed_ips": [
                        {
                            "subnet_id": "0dd17989-1c23-4501-8dc1-40e4085f793f",
                            "ip_address": "172.16.0.191"
                        },
                        {
                            "subnet_id": "33ce2628-6246-4e3a-859f-99cd753ff704",
                            "ip_address": "2001:db8:a583:21d:dfc0:d452:e9ab:65cf"
                        }
                    ],
                    "mac_address": "fa:16:3e:1e:f7:9a",
                    "network_id": "b0ad9b80-bb16-4550-8ce0-514f949e35ee",
                    "tenant_id": "060576782980d5762f9ec014dd2f1148",
                    "project_id": "060576782980d5762f9ec014dd2f1148",
                    "device_id": "ab7ca781-66bf-48a8-814b-1568cb393a38",
                    "device_owner": "compute:xxx",
                    "security_groups": [
                        "0552091e-b83a-49dd-88a7-4a5c86fd9ec3"
                    ],
                    "extra_dhcp_opts": [],
                    "allowed_address_pairs": [],
                    "binding:vnic_type": "normal",
                    "binding:vif_details": {
                        "primary_interface": true
                    },
                    "binding:profile": {},
                    "port_security_enabled": true,
                    "dns_assignment": [
                        {
                            "hostname": "ip-172-16-0-191",
                            "ip_address": "172.16.0.191",
                            "fqdn": "ip-172-16-0-191.br-iaas-odin1.compute.internal."
                        }
                    ],
                    "dns_name": "ip-172-16-0-191",
                    "created_at": "2020-11-19T13:32:37",
                    "updated_at": "2020-11-19T13:33:50"
                }] 
         }
      • 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 IPv6 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 ip_address en la dirección IPv6 de la NIC del ECS obtenido en 2.
      { 
           "port": { 
               "allowed_address_pairs": [{ 
                   "ip_address": "2001:db8:a583:21d:dfc0:d452:e9ab:65cf" 
               }] 
           } 
       }
    4. Compruebe el mensaje de respuesta.
      • La solicitud se realiza correctamente si se muestra la siguiente respuesta:
        {
            "port": {
                "id": "d92cfee7-9ebe-4483-85c1-00ffb1e45cd8",
                "name": "ipv6_vip_port_test",
                "status": "DOWN",
                "admin_state_up": true,
                "fixed_ips": [
                    {
                        "subnet_id": "33ce2628-6246-4e3a-859f-99cd753ff704",
                        "ip_address": "2001:db8:a583:21d:2e25:9403:6f3d:4664"
                    }
                ],
                "mac_address": "fa:16:3e:99:2e:92",
                "network_id": "b0ad9b80-bb16-4550-8ce0-514f949e35ee",
                "tenant_id": "060576782980d5762f9ec014dd2f1148",
                "project_id": "060576782980d5762f9ec014dd2f1148",
                "device_id": "",
                "device_owner": "neutron:VIP_PORT",
                "security_groups": [],
                "extra_dhcp_opts": [],
                "allowed_address_pairs": [{ 
                     "ip_address": "2001:db8:a583:21d:dfc0:d452:e9ab:65cf " 
                 }],
                "binding:vnic_type": "normal",
                "binding:vif_details": {},
                "binding:profile": {},
                "port_security_enabled": true,
                "created_at": "2020-12-15T03:01:07",
                "updated_at": "2020-12-15T03:01:07"
            }
        }
      • 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": "47b4cd46-cfe5-415d-957f-5068189dce94",
                    "name": "",
                    "status": "ACTIVE",
                    "admin_state_up": true,
                    "fixed_ips": [
                        {
                            "subnet_id": "0dd17989-1c23-4501-8dc1-40e4085f793f",
                            "ip_address": "172.16.0.191"
                        },
                        {
                            "subnet_id": "33ce2628-6246-4e3a-859f-99cd753ff704",
                            "ip_address": "2001:db8:a583:21d:dfc0:d452:e9ab:65cf"
                        }
                    ],
                    "mac_address": "fa:16:3e:1e:f7:9a",
                    "network_id": "b0ad9b80-bb16-4550-8ce0-514f949e35ee",
                    "tenant_id": "060576782980d5762f9ec014dd2f1148",
                    "project_id": "060576782980d5762f9ec014dd2f1148",
                    "device_id": "ab7ca781-66bf-48a8-814b-1568cb393a38",
                    "device_owner": "compute:xxx",
                    "security_groups": [
                        "0552091e-b83a-49dd-88a7-4a5c86fd9ec3"
                    ],
                    "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,
                    "dns_assignment": [
                        {
                            "hostname": "ip-172-16-0-191",
                            "ip_address": "172.16.0.191",
                            "fqdn": "ip-172-16-0-191.br-iaas-odin1.compute.internal."
                        }
                    ],
                    "dns_name": "ip-172-16-0-191",
                    "created_at": "2020-11-19T13:32:37",
                    "updated_at": "2020-11-19T13:33:50"
        
             } 
         }
      • 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.