# Faça balanceamento de carga entre registros DNS

import Tabs from '~/components/tabs/Tabs'
import Code from '~/components/Code/Code.astro'


Você pode usar uma [zona do Edge DNS](/pt-br/documentacao/produtos/secure/edge-dns/) para criar vários registros e realizar um balanceamento de carga DNS. Atribuir diferentes pesos a cada registro para a mesma zona ajuda a distribuir o tráfego de rede recebido, garantindo uma melhor utilização dos recursos e evitando sobrecarga em um único servidor.

Neste guia, você aprenderá um exemplo usando um tipo de registro `A`, que aceita valores no formato de endereço IPv4.

---

<Tabs client:visible>
    <Fragment slot="tab.console">Console</Fragment>
    <Fragment slot="tab.api">API</Fragment>

<Fragment slot="panel.console">
1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Edge DNS**.
2. Escolha a zona na qual deseja adicionar registros na lista ou [crie uma zona](/pt-br/documentacao/produtos/guias/secure/edge-dns-definir-main-settings/#crie-uma-nova-zona).
3. Selecione a aba **Records**.
4. Clique no botão **+ Record**.
5. Em **Name**, forneça o nome do novo registro como um subdomínio.
6. Em **Type**, selecione o tipo de registro `A`.
7. Em **Value**, adicione os itens para a resposta DNS ao registro registrado no formato de endereço IPv4. Exemplo: `192.111.0.1`.
8. Em **TTL (seconds)**, escolha o tempo, em segundos, que uma resposta pode ser armazenada em um servidor de resolução. Valor máximo: `2147483647`.
9. Em **Policy**, selecione **Weighted**.
    - Em **Weight**, especifique o peso para o registro, considerando que você criará outros registros para a mesma zona com pesos diferentes. Aceita valores de `0` a `255`.
    - Em **Description** (opcional), você pode adicionar um texto curto que diferencia os registros que você criará para o balanceamento de carga. Aceita até *45 caracteres*.
10. Clique no botão **Save**.
11. Repita as etapas de 4 a 10 para criar os outros registros DNS balanceados necessários, observando sempre os limites do Edge DNS, usando sempre o mesmo **Name** e definindo os endereços desejados em **Value** e pesos diferentes para cada registro em **Weight**.

Se você adicionar 3 registros, por exemplo, pode especificar um peso de **50** para o primeiro registro, **20** para o segundo registro e **30** para o terceiro registro.
</Fragment>

<Fragment slot="panel.api">
1. Execute a seguinte requisição `GET` em seu terminal, substituindo `[TOKEN VALUE]` pelo seu [personal token](/pt-br/documentacao/produtos/guias/personal-tokens/) para recuperar seu `<hosted_zone_id>`:

<Code lang="bash" code={`
curl --request GET \
  --url https://api.azion.com/v4/edge_dns/zones \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]'
`} />

2. Você receberá uma resposta com todas as suas zonas existentes. Copie o valor do `<id>` que deseja usar.
3. Execute a seguinte requisição `POST`, substituindo `[TOKEN VALUE]` pelo seu [personal token](/pt-br/documentacao/produtos/guias/personal-tokens/) e o valor `<hosted_zone_id>` que você copiou:

<Code lang="bash" code={`
curl --request POST \
  --url https://api.azion.com/v4/edge_dns/zones/{zoneId}/records \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "A",
    "name": "lbexample",
    "rdata": ["192.111.0.1", "192.111.0.2"],
    "ttl": 20,
    "policy": "weighted",
    "weight": 50,
    "description": "policy weight 50"
  }'
`} />

4. Você receberá uma resposta semelhante a esta:

<Code lang="json" code={`
{
  "state": "executed",
  "data": {
    "id": <record_id>,
    "description": "policy weight 50",
    "name": "lbexample",
    "ttl": 20,
    "type": "A",
    "rdata": [
      "192.111.0.1",
      "192.111.0.2"
    ],
    "policy": "weighted",
    "weight": 50
  }
}
`} />

Aguarde alguns minutos para que as alterações se propaguem e seus registros sejam criados na zona hospedada que você escolheu.

5. Repita as etapas para criar os outros registros DNS balanceados necessários, observando sempre os limites do Edge DNS, usando sempre o mesmo `entry` e definindo os endereços desejados no parâmetro `answers_list` e pesos diferentes para cada registro no parâmetro `weight`.

:::tip
Consulte a [documentação da API da Azion](https://api.azion.com/) para saber mais sobre o que a API da Azion pode oferecer.
:::

</Fragment>

</Tabs>

---

## Testando seu registro balanceado

Após configurar seu registro balanceado, você pode testar e ver se está funcionando por meio de comandos no terminal:

1. Execute `dig +short [seu hostname balanceado]` algumas vezes seguidas.
    - Você verá a lista de endereços variar, a cada vez, com base no registro selecionado pelo balanceador de carga feito no Edge DNS.
2. A resposta será semelhante a:

```bash
dig +short lbexemplo @ns1.aziondns.net
192.111.0.1
```

```bash
dig +short lbexemplo @ns1.aziondns.net
192.111.0.2
```

```bash
dig +short lbexemplo @ns1.aziondns.net
192.111.0.3
```

---