Configurando um aplicativo altamente disponível
Você pode implantar seu aplicativo do IBM Cloud® Code Engine em várias regiões para torná-lo resiliente a falhas regionais. Observe que este exemplo utiliza uma rede global de distribuição de conteúdo (CDN) chamada IBM Cloud Internet Services, mas você pode usar outros provedores. Este exemplo também usa um domínio customizado..
Pré-requisitos
- Você deve ter um nome de domínio personalizado para seu aplicativo, como
example.com. Esse nome de domínio é usado por seu aplicativo Code Engine. - Configure uma instância do Cloud Internet Services (CIS).
- Inclua seu nome de domínio no Cloud Internet Services (CIS). Ao registrar o seu nome de domínio com o Cloud Internet Services (CIS), você está delegando o controle de seu nome de domínio para o Cloud Internet Services (CIS). Observe que esta etapa pode levar um tempo para ser concluída
Criar projetos em diferentes regiões
Crie um projeto Code Engine em três regiões diferentes. Você pode usar um padrão de nomenclatura comum e uma tag compartilhada.
Por exemplo, crie um projeto chamado global-app-project nas regiões au-syd, eu-de e br-sao com a CLI ou por meio de um console
| Nome | Status | Marcar | Local | Grupo de recursos | Criado |
|---|---|---|---|---|---|
global-app-project |
Pronto | global-app |
Sydney (au-syd) |
padrão | |
global-app-project |
Pronto | global-app |
Frankfurt (eu-de) |
padrão | 2 min. |
global-app-project |
Pronto | global-app |
São Paulo (br-sao) |
padrão | 3 min. |
Para obter mais informações, consulte Gerenciando projetos..
Implemente seus aplicativos em várias regiões
Agora que seus projetos foram criados em várias regiões, implemente seu aplicativo em cada projeto
Por exemplo, implementar o app codeengine/helloworld.
-
Na página Projetos Code Engine, clique no nome de um dos projetos criados.
-
Clique em Aplicativos e, em seguida, clique em Criar para criar um novo aplicativo
-
Configure o seu app com as configurações a seguir:
- Dê o nome de “
global-app” ao seu aplicativo. - Selecione “Usar uma imagem de contêiner existente ” para indicar uma imagem de contêiner para seu aplicativo.
- Insira
icr.io/codeengine/helloworldpara a sua referência de imagem - Na seção Recursos e ajuste de escala, configure seu número mínimo de instâncias para 1. Configurando seu número mínimo de instâncias como 1, é possível ativar as verificações de funcionamento por meio de sua instância do CIS para monitorar a disponibilidade de conjuntos para que o tráfego possa ser roteado para os funcionais.
- Deixe o restante das opções nas configurações padrão e clique em Criar.
- Dê o nome de “
-
Repita essas etapas para criar o aplicativo em cada projeto..
Para obter mais informações sobre a implementação de seu aplicativo, consulte Implementando aplicativos.
Gere um certificado para seu domínio customizado
Em um ambiente corporativo, trabalhe com seu administrador de domínio corporativo para obter os certificados necessários.. No entanto, se o domínio customizado estiver dentro de seu controle e você desejar criar rapidamente um certificado que não seja autocertificado, será possível usar opcionalmente o serviço Let' s Encrypt e o Certbot para obter um certificado.
-
Instale o Certbot Certbot é um cliente para o protocolo Automatic Certificate Management Environment(ACME) para automatizar interações entre uma CA e um servidor. O serviço Let' s Encrypt usa esse cliente para verificar a propriedade do domínio e emitir certificados. Na página Instruções do Certbot, selecione
Othercomo o software e selecione o sistema operacional para a sua estação de trabalho para obter as informações aplicáveis para instalar a linha de comandos do Certbot -
Execute o comando a seguir para criar seu certificado. Este comando de exemplo cria um certificado para os domínios customizados
example.comewww.example.comAssegure-se de atualizar o comando para seu próprio domínio customizado.certbot certonly --manual --preferred-challenges dns --email webmaster@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --domain example.com --domain www.example.com -
Para verificar se você possui o domínio, configure um registro
TXTcom seu registro de domínio para os domínios que você solicitou na etapa anterior com valores que foram fornecidos com a saída da ferramenta Certbot; por exemplo,_acme_challenge.example.come_acme_challenge.ww.example.com. Após configurar o registroTXT, continue com o comando Certbot. -
O Certbot recupera o certificado assinado pelo Let' s Encrypt. O local onde o certificado é armazenado é fornecido pela saída Certbot. Localize os arquivos
fullchain.pemeprivkey.pem..
Criar um segredo do tipo “ TLS ”
Crie um segredo do TLS para armazenar seu certificado em Code Engine.
- Na página Projetos Code Engine, clique no nome de um dos projetos criados.
- Selecione “Secrets” e “configmaps ”.
- Clique em Criar.
- Clique em TLS secret.
- Insira
global-tlscomo o nome. - Copie o conteúdo do arquivo
fullchain.pemno campo Cadeia de certificados. - Copie o conteúdo do arquivo
privkey.pemno campo Chave privada. - Clique em Criar.
- Repita essas etapas para criar um segredo do tipo “ TLS ” em cada projeto que você criou anteriormente.
Para obter mais informações, consulte Trabalhando com segredos..
Configure os mapeamentos de domínio customizados..
Depois que seus apps forem implementados, configure um mapeamento de domínio customizado para eles
- Na página Projetos Code Engine, clique no nome de um dos projetos criados.
- Selecione “Aplicativos ”.
- Selecione o seu aplicativo
global-app - Selecione Mapeamentos de domínio
- Selecione Público para sua visibilidade.
- Clique em Criar para criar um mapeamento de domínio customizado..
- Clique em “Selecionar” para escolher um segredo existente do TLS e selecione
global-tls. - Insira seu nome completo do domínio; por exemplo,
www.example.com - Observe o valor de destino
CNAME. Esse valor é necessário para configurar o roteamento para seu domínio no CIS. - Verifique se o nome do app é
global-app - Clique em Criar.
- Repita essas etapas para criar um mapeamento de domínio customizado para cada aplicativo criado.
Configurar uma verificação de funcionamento
Ao criar seus aplicativos, você configura o Número mínimo de instâncias como 1. Como sempre há uma instância de seu app em execução em cada região, é possível configurar uma verificação de funcionamento de sua instância do CIS para monitorar a disponibilidade de conjuntos. Configurando uma verificação de funcionamento, o tráfego é sempre roteado para uma instância em execução, tornando seu app altamente disponível.
- Em sua instância do CIS, navegue para Confiabilidade> balanceadores de carga globais> Verificações de funcionamento.
- Clique em Criar.
- Nomeie sua verificação de funcionamento da mesma forma que o nome do aplicativo:
global-app. - Configure o Tipo de Monitor como
HTTPSe a Portas como443 - Aceite os valores padrão para as demais opções. Observe que se você estiver usando um aplicativo diferente do
codeengine/helloworld, ajuste quaisquer opções que seu aplicativo requer. - Clique em Criar.
Para obter informações adicionais, consulte Configurando verificações de funcionamento.
Configure o balanceador de carga Cloud Internet Services (CIS)
Depois que seus mapeamentos de domínio customizados estiverem em um estado Ready, configure o balanceador de carga do Cloud Internet Services (CIS) para seu terminal global do aplicativo. Para obter mais informações, consulte
Configurando um balanceador de carga global.
-
Acesse a página de Confiabilidade no console do Cloud Internet Services (CIS).
-
Selecione Conjuntos de origem e clique em Criar.
- Nomeie seu conjunto
global-app-au-syd. - Configure o Endereço de origem para o destino CNAME do mapeamento de nome de domínio.
- Configure o cabeçalho Host para seu nome de domínio.
- Na Verificação de funcionamento, selecione Verificação de funcionamento existente e, em seguida, selecione
global-app. - Clique em Salvar.
- Repita essas etapas para cada região que contém o seu app implementado Altere o nome para refletir a região que você está destinando. Por exemplo,
global-app-de-eueglobal-app-br-sao
- Nomeie seu conjunto
-
Selecione Carregar balanceadores e clique em Criar.
- Nomeie seu balanceador de carga. Observe que esse nome aparece em seu domínio personalizado URL. Por exemplo, se seu domínio personalizado for
global-app.example.come você nomear seu balanceador de carga comoglobal-app, seu URL seráglobal-app.example.com. - Configure Direcção de tráfego para
Geo. - Inclua suas rotas de Geo É possível escolher criar uma rota para todas as regiões do CIS ou apenas algumas regiões.
- Se você criar uma rota para todas as regiões do CIS, em cada rota que você criar, inclua todos os conjuntos de origem criados anteriormente. Classifique-os para que uma região que contenha seu app em execução e esteja mais próxima
da rota da região que você está configurando Por exemplo, se você criou apps em
au-syd,eu-deebr-sao, então paraOceana, coloqueau-sydprimeiro. Para a Europa Oriental e Ocidental, coloquede-euprimeiro. E para a América do Norte e do Sul, coloquebr-saoem primeiro lugar. - Se você criar uma rota apenas para algumas regiões do CIS, inclua uma rota para a região Padrão Essa rota é o fallback a ser usado quando uma região especificada não está disponível
- Se você criar uma rota para todas as regiões do CIS, em cada rota que você criar, inclua todos os conjuntos de origem criados anteriormente. Classifique-os para que uma região que contenha seu app em execução e esteja mais próxima
da rota da região que você está configurando Por exemplo, se você criou apps em
- Clique em “Criar” para criar o balanceador de carga.
- Nomeie seu balanceador de carga. Observe que esse nome aparece em seu domínio personalizado URL. Por exemplo, se seu domínio personalizado for
Verifique se seu aplicativo está disponível
Abra um navegador e insira seu nome do balanceador de carga mais seu nome de domínio customizado; por exemplo www.global-app.example.com
Agora, seus aplicativos estão altamente disponíveis
Limpando seu tutorial
- Exclua os balanceadores de carga globais e os conjuntos de origem do CIS
- Exclua seus registros DNS do CIS. Para obter mais informações, consulte Excluindo registros DNS.
- Exclua cada projeto criado. Quando você exclui um projeto, todos os componentes contidos nesse projeto também são excluídos Para obter mais informações, consulte Excluir um projeto.
Observe que seu domínio customizado não foi excluído, mas não está mais associado ao aplicativo criado.