Como configurar múltiplas origens com algoritmos de balanceamento de carga
Quando você cria uma application, você precisa definir uma origem. No entanto, infraestruturas mais complexas e robustas podem precisar de múltiplas origens para a mesma aplicação. O módulo Load Balancer permite que você use algoritmos de balanceamento de carga para gerenciar altos números de acesso e controlar os comportamentos de sua origem.
Existem instruções separadas para API v3 usando configurações legadas de Origin e API v4 usando o novo produto Connector.
Os seguintes passos irão descrever um caso de uso onde a default origin deve ser do tipo Load Balancer com o algoritmo Round-Robin. Sinta-se à vontade para interpretar e modificar as instruções passo a passo de acordo com o seu caso de uso específico.
As seguintes regras de negócio de diferentes servidores de origem devem ser configuradas com balanceamento de carga:
- A aplicação deve ter três origens.
- O servidor primário deve ter uma maior capacidade de carga.
- O servidor secundário deve ter uma capacidade de carga média, suficiente para lidar com grandes picos de tráfego de entrada.
- O servidor de backup deve ter uma baixa capacidade de carga e só deve ser ativo em circunstâncias especiais.
- Cada um desses servidores deve ser hospedado em um provedor de armazenamento ou serviço de nuvem diferente, já que as falhas de servidor não ocorrem frequentemente ao mesmo tempo.
- Todas as origens devem conter o mesmo conteúdo e ser configuradas da mesma forma para a edge application.
Portanto, as configurações necessárias são:
Origem | Função | Endereço | Capacidade de carga | Status |
---|---|---|---|---|
1 | Servidor primário | example.com | Alta capacidade de carga | Deve estar sempre ativo. |
2 | Servidor secundário | example.net | Capacidade de carga média | Deve estar sempre ativo. |
3 | Servidor de backup | example.org | Baixa capacidade de carga | Deve estar ativo apenas em caso de manutenção ou picos de tráfego. |
Agora você precisa configurar um novo Connector para vincular sua aplicação ao seu bucket do Object Storage. Para isso:
- Acesse o Azion Console > Connector.
- Clique no botão + Connector.
- Na seção General, dê ao seu Connector um nome único e descritivo (por exemplo,
Multiple Origins Connector
). - Na seção Connector Type, selecione HTTP.
- Ative o switch Load Balancer, que permite adicionar múltiplos endereços.
- No campo Method, selecione Round-Robin.
- No primeiro campo Address, especifique o servidor primário. Por exemplo,
example.com
. - Como esta origem tem uma maior capacidade de carga, no campo Weight, adicione um peso de
3
para esta primeira origem. - No campo Server Role, mantenha Primary selecionado.
- Mantenha este endereço Active.
- No segundo campo Address, especifique o servidor secundário. Neste caso,
example.net
. - Devido à sua menor capacidade, no campo Weight, adicione um peso de
2
para este endereço. - No campo Server Role, selecione Primary. Como este endereço tem menor peso, o primeiro endereço será priorizado nas conexões.
- Mantenha este endereço Active.
- Adicione uma terceira origem clicando no botão + Add Address.
- No campo Address, especifique a origem de backup. Neste caso,
example.org
. - Mantenha o campo Weight em branco. Ele assumirá um valor padrão de
1
. - No campo Server Role, selecione Backup.
- Desative este endereço desligando o switch Active.
- Clique no botão Save.
Para ativar o Connector na sua edge application:
- Acesse a aba Rules Engine.
- Edite a regra padrão ou adicione uma nova regra de request.
- Na seção Criteria, para aplicar o Connector para toda a aplicação, defina o critério como
If ${uri} starts with /
. - Na seção Behavior, selecione o comportamento Set Connector.
- Selecione o Connector que deseja aplicar.
- Clique no botão Save.
- Aguarde alguns minutos para que as mudanças se propaguem para o edge. Em seguida, acesse sua aplicação ou use a linha de comando para fazer uma requisição e verificar se as mudanças foram feitas.
Primeiro, para habilitar o módulo Load Balancer:
- Acesse o Azion Console > Applications.
- Clique na edge application para a qual você quer configurar uma nova origem com balanceador de carga.
- Na aba Main Settings, em Modules, ative o Load Balancer.
- Clique no botão Save.
Para modificar a origem de acordo com o cenário descrito acima:
- Selecione a aba Origins.
- Na aba Origins, clique na Default Origin da lista.
- Dê um nome para sua nova origem.
- Em Type, selecione Load Balancer.
- No campo Method, selecione Round-Robin.
- No primeiro campo Address, especifique o servidor primário. Por exemplo,
example.com
. - Como esta origem tem uma maior capacidade de carga, no campo Weight, adicione um peso de
3
para esta primeira origem. - No campo Server Role, mantenha Primary selecionado.
- Mantenha esta origem Active.
- No segundo campo Address, especifique o servidor secundário. Neste caso,
example.net
. - Devido à sua menor capacidade, no campo Weight, adicione um peso de
2
para esta origem. - No campo Server Role, selecione Primary. Esta origem tem um valor de peso menor, a origem preferida para conexões será a primeira.
- Mantenha esta origem Active.
- Adicione uma terceira origem clicando no botão + Add Origin.
- No campo Address, especifique a origem de backup. Neste caso,
example.org
. - Mantenha o campo Weight em branco. Ele assumirá um valor padrão de
1
. - No campo Server Role, selecione Backup.
- Desative esta origem desligando o interruptor Active.
- Clique no botão Save.
Aguarde alguns minutos para que as mudanças se propaguem. Em seguida, acesse sua aplicação ou use a linha de comando para fazer uma requisição e verificar se as mudanças foram feitas.
- Execute a seguinte requisição
GET
em seu terminal, substituindo[TOKEN VALUE]
pelo seu personal token e a variável<application_id>
pelo ID da sua application para recuperar a<origin_key>
da sua origem padrão, que é um valor UUID:
curl --location 'https://api.azionapi.net/edge_applications/<application_id> --header 'Accept: application/json; version=3' --header 'Authorization: Token [TOKEN VALUE]'
- Você receberá uma resposta semelhante a esta:
{ "results": { "origin_id": <origin_id>, "origin_key": "<origin_key>", "name": "Default Origin", "origin_type": "single_origin", ... }}
- Copie o valor
<origin_key>
. - Execute a seguinte requisição
PATCH
para modificar a origem padrão como segue, substituindo a chave e o id da aplicação na URL:
curl --location --request PATCH 'https://api.azionapi.net/edge_applications/<application_id>/origins/<origin_key>' --header 'Accept: application/json; version=3' --header 'Content-Type: application/json' --header 'Authorization: Token [TOKEN VALUE]' --data '{ "name": "Default Origin RR3", "origin_type": "load_balancer", "addresses": [ { "address": "example.com", "weight": 3, "server_role": "primary", "is_active": true }, { "address": "example.net", "weight": 2, "server_role": "primary", "is_active": true }, { "address": "example.org", "weight": 1, "server_role": "backup", "is_active": false } ], "host_header": "${host}", "method": "round_robin"}'
- Você receberá uma resposta semelhante a esta, confirmando que as mudanças foram feitas:
{ "results": { "origin_id": <origin_id>, "origin_key": "<origin_key>", "name": "Default Origin (RR3)", "origin_type": "load_balancer", "addresses": [ { "address": "example.com", "weight": 3, "server_role": "primary", "is_active": true }, { "address": "example.net", "weight": 2, "server_role": "primary", "is_active": true }, { "address": "example.org", "weight": 1, "server_role": "primary", "is_active": false } ], "host_header": "${host}", "method": "round_robin" ... }}
- Aguarde alguns minutos para que a propagação ocorra.
- Execute a seguinte requisição
POST
em seu terminal, substituindo[TOKEN VALUE]
pelo seu personal token para criar um Connector.
curl --request POST --url https://api.azion.com/v4/edge_connector/connectors --header 'Accept: application/json' --header 'Authorization: Token [TOKEN VALUE]' --header 'Content-Type: application/json' --data '{ "name": "Multiple Origins Connector", "active": true, "type": "http", "attributes": { "addresses": [ { "active": true, "address": "example.com", "http_port": 80, "https_port": 443, "modules": { "load_balancer": { "server_role": "primary", "weight": 3 } } }, { "active": true, "address": "example.net", "http_port": 80, "https_port": 443, "modules": { "load_balancer": { "server_role": "primary", "weight": 2 } } }, { "active": false, "address": "example.org", "http_port": 80, "https_port": 443, "modules": { "load_balancer": { "server_role": "backup" } } } ], "connection_options": { "dns_resolution": "preserve", "transport_policy": "preserve", "http_version_policy": "http1_1", "host": "${host}", "path_prefix": "", "following_redirect": false, "real_ip_header": "X-Real-IP", "real_port_header": "X-Real-PORT" }, "modules": { "load_balancer": { "enabled": true, "config": { "method": "round_robin", "max_retries": 0, "connection_timeout": 60, "read_write_timeout": 120 } }, "origin_shield": { "enabled": false, "config": null } } }}'
- Você deve receber uma resposta confirmando a criação do Connector, copie o campo ID. Ele será usado no próximo passo.
- Execute a seguinte requisição
POST
em seu terminal para criar uma regra no Rules Engine, vinculando o Connector à sua Application. Substitua a variável<application_id>
pelo ID da Application e<connector_id>
pelo ID do Connector copiado anteriormente:
curl --request POST --url https://api.azion.com/v4/edge_application/applications/<application_id>/request_rules --header 'Accept: application/json' --header 'Authorization: Token [TOKEN VALUE]' --header 'Content-Type: application/json' --data '{"name": "string","active": true,"criteria": [ { "conditional": "if", "variable": "${uri}", "operator": "starts_with", "argument": "/" } ],"behaviors": [ { "type": "set_edge_connector", "attributes": { "value": "<connector_id>" } }]}'