Configuration d'une application à haute disponibilité

Vous pouvez déployer votre application « IBM Cloud® Code Engine » dans plusieurs régions afin de la rendre résiliente face aux pannes régionales. Notez que cet exemple utilise un réseau de diffusion de contenu (CDN) mondial appelé IBM Cloud Internet Services, mais vous pouvez utiliser d’autres fournisseurs. Cet exemple utilise également un domaine personnalisé.

Prérequis

  • Vous devez disposer d'un nom de domaine personnalisé pour votre application, tel que example.com. Ce nom de domaine est utilisé par votre application Code Engine.
  • Configurez une instance de Cloud Internet Services (CIS).
  • Ajoutez votre nom de domaine à Cloud Internet Services (CIS). Lorsque vous enregistrez votre nom de domaine avec Cloud Internet Services (CIS), vous déléguez le contrôle de votre nom de domaine à Cloud Internet Services (CIS). Notez que cette étape peut prendre un certain temps.

Créer des projets dans différentes régions

Créez un projet Code Engine dans trois régions différentes. Vous pouvez utiliser un modèle de dénomination commun et une étiquette partagée.

Par exemple, créez un projet appelé global-app-project dans les régions au-syd, eu-de et br-sao avec l'interface de ligne de commande ou à partir de la console.

Projets dans plusieurs régions
Nom Statut Balise Emplacement Groupe de ressources Créé
global-app-project Prêt global-app Sydney (au-syd) par défaut
global-app-project Prêt global-app Francfort (eu-de) par défaut 2 minutes
global-app-project Prêt global-app Sao Paulo (br-sao) par défaut 3 min

Pour plus d'informations, voir Gestion des projets.

Déployez vos applications dans plusieurs régions

Maintenant que vos projets sont créés dans plusieurs régions, déployez votre application dans chaque projet.

Par exemple, déployez l'application codeengine/helloworld.

  1. Dans la page ProjetsCode Engine, cliquez sur le nom de l'un des projets que vous avez créés.

  2. Cliquez sur Applications, puis sur Créer pour créer une application.

  3. Configurez votre application avec les paramètres suivants.

    1. Nommez votre application global-app.
    2. Sélectionnez « Utiliser une image de conteneur existante » pour référencer une image de conteneur pour votre application.
    3. Entrez icr.io/codeengine/helloworld pour votre référence d'image.
    4. Dans la section Ressources & mise à l'échelle, définissez le nombre minimal d'instances sur 1. En définissant le nombre minimal d'instances sur 1, vous pouvez activer les diagnostics d'intégrité à partir de votre instance CIS pour surveiller la disponibilité des pools afin que le trafic puisse être acheminé vers les pools sains.
    5. Conservez les paramètres par défaut des autres options et cliquez sur Créer.
  4. Répétez ces étapes pour créer l'application dans chaque projet.

Pour plus d'informations sur le déploiement de votre application, voir Déploiement d'applications.

Générez un certificat pour votre domaine personnalisé

Dans un environnement d'entreprise, travaillez avec votre administrateur de domaine d'entreprise pour obtenir les certificats nécessaires. Toutefois, si le domaine personnalisé est sous votre contrôle et que vous souhaitez créer rapidement un certificat qui n'est pas auto-certifié, vous pouvez éventuellement utiliser le service Let's Encrypt et Certbot pour obtenir un certificat.

  1. Installez Certbot. Certbot est un client du protocole Automatic Certificate Management Environment(ACME) qui permet d'automatiser les interactions entre une autorité de certification et un serveur. Le service Let's Encrypt utilise ce client pour vérifier la propriété du domaine et émettre des certificats. Sur la page Instructions Certbot, sélectionnez Other comme logiciel et sélectionnez le système d'exploitation de votre poste de travail pour obtenir les informations applicables à l'installation de la ligne de commande Certbot.

  2. Exécutez la commande suivante pour créer votre certificat. Cet exemple de commande crée un certificat pour les domaines personnalisés example.com et www.example.com. Veillez à mettre à jour la commande pour votre propre domaine personnalisé.

    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
    
  3. Pour vérifier que vous possédez le domaine, définissez un enregistrement TXT avec votre registre de domaine pour les domaines que vous avez demandés à l'étape précédente avec les valeurs fournies avec la sortie de l'outil Certbot ; par exemple, _acme_challenge.example.com et _acme_challenge.ww.example.com. Après avoir défini l'enregistrement TXT, passez à la commande Certbot.

  4. Certbot extrait le certificat signé par Let's Encrypt. L'emplacement dans lequel le certificat est stocké est fourni par la sortie Certbot. Recherchez les fichiers fullchain.pem et privkey.pem.

Créer un secret « TLS »

Créez un secret « TLS » pour stocker votre certificat sur Code Engine.

  1. Dans la page ProjetsCode Engine, cliquez sur le nom de l'un des projets que vous avez créés.
  2. Sélectionnez les « Secrets » et les « configmaps ».
  3. Cliquez sur Créer.
  4. Cliquez sur « TLS secret ».
  5. Entrez global-tls comme nom.
  6. Copiez le contenu du fichier fullchain.pem dans la zone Chaîne de certificats.
  7. Copiez le contenu du fichier privkey.pem dans la zone Clé privée.
  8. Cliquez sur Créer.
  9. Répétez ces étapes pour créer un secret « TLS » dans chacun des projets que vous avez créés précédemment.

Pour plus d'informations, voir Utilisation de secrets.

Configurer les mappages de domaines personnalisés

Une fois vos applications déployées, configurez un mappage de domaine personnalisé pour elles.

  1. Dans la page ProjetsCode Engine, cliquez sur le nom de l'un des projets que vous avez créés.
  2. Sélectionnez « Applications ».
  3. Sélectionnez votre application global-app.
  4. Sélectionnez Mappages de domaine.
  5. Sélectionnez Public pour votre visibilité.
  6. Cliquez sur Créer pour créer un mappage de domaine personnalisé.
  7. Cliquez sur « Sélectionner » pour choisir un secret « TLS » existant, puis sélectionnez « global-tls ».
  8. Entrez votre nom de domaine complet ; par exemple, www.example.com.
  9. Notez la valeur cible CNAME. Vous avez besoin de cette valeur pour configurer le routage pour votre domaine dans CIS.
  10. Vérifiez que le nom de l'application est global-app.
  11. Cliquez sur Créer.
  12. Répétez ces étapes pour créer un mappage de domaine personnalisé pour chaque application que vous avez créée.

Configurer un diagnostic d'intégrité

Lorsque vous avez créé vos applications, vous définissez le Nombre minimal d'instances sur 1. Etant donné qu'une instance de votre application est toujours en cours d'exécution dans chaque région, vous pouvez configurer un diagnostic d'intégrité à partir de votre instance CIS pour surveiller la disponibilité des pools. En configurant un diagnostic d'intégrité, le trafic est toujours acheminé vers une instance en cours d'exécution, ce qui rend votre application hautement disponible.

  1. A partir de votre instance CIS, accédez à Fiabilité > Equilibreurs de charge globaux > Vérifications de santé.
  2. Cliquez sur Créer.
  3. Attribuez à votre diagnostic d'intégrité le même nom que celui de votre application: global-app.
  4. Définissez le Type de moniteur sur HTTPS et le Port sur 443.
  5. Acceptez les valeurs par défaut pour les autres options. Notez que si vous utilisez une application autre que codeengine/helloworld, ajustez les options requises par votre application.
  6. Cliquez sur Créer.

Pour plus d'informations, voir Configuration de diagnostics d'intégrité.

Configurer l'équilibreur de charge Cloud Internet Services (CIS)

Une fois que vos mappages de domaine personnalisés sont à l'état Ready, configurez l'équilibreur de charge Cloud Internet Services (CIS) pour votre noeud final global d'application. Pour plus d'informations, voir Configuration d'un équilibreur de charge global (GLB).

  1. Accédez à la page Fiabilité dans la console Cloud Internet Services (CIS).

  2. Sélectionnez Pools d'origine et cliquez sur Créer.

    1. Nommez votre pool global-app-au-syd.
    2. Définissez l'adresse d'origine sur la cible CNAME de votre mappage de nom de domaine.
    3. Définissez l'en-tête de l'hôte sur votre nom de domaine.
    4. Dans Health check, sélectionnez Existing health check, puis sélectionnez global-app.
    5. Cliquez sur Sauvegarder.
    6. Répétez ces étapes pour chaque région qui contient votre application déployée. Modifiez le nom pour refléter la région que vous ciblez. Par exemple, global-app-de-eu et global-app-br-sao.
  3. Sélectionnez Equilibreurs de charge et cliquez sur Créer.

    1. Nommez votre équilibreur de charge. Notez que ce nom apparaît dans votre domaine personnalisé URL. Par exemple, si votre domaine personnalisé est global-app.example.com et que vous nommez votre équilibreur de charge global-app, votre URL est global-app.example.com.
    2. Définissez Direction du trafic sur Geo.
    3. Ajoutez vos routes Géo. Vous pouvez choisir de créer une route pour toutes les régions CIS ou uniquement pour certaines régions.
      • Si vous créez une route pour toutes les régions CIS, dans chaque route que vous créez, ajoutez tous les pools d'origines que vous avez créés précédemment. Triez-les de sorte qu'une région contenant votre application en cours d'exécution soit la plus proche de la route de région que vous configurez. Par exemple, si vous avez créé des applications dans au-syd, eu-de et br-sao, pour Oceana, placez d'abord au-syd. Pour l'Europe de l'Est et de l'Ouest, mettez de-eu en premier. Et pour l'Amérique du Nord et du Sud, mettez br-sao en premier.
      • Si vous créez une route uniquement pour certaines régions CIS, ajoutez une route pour la région Default. Cette route est la rétromigration à utiliser lorsqu'une région spécifiée n'est pas disponible.
    4. Cliquez sur « Créer » pour créer l'équilibreur de charge.

Vérifiez que votre application est disponible

Ouvrez un navigateur et entrez votre nom d'équilibreur de charge plus votre nom de domaine personnalisé ; par exemple, www.global-app.example.com

Vos applications sont maintenant hautement disponibles.

Nettoyage de votre tutoriel

  1. Supprimez les équilibreurs de charge globaux et les pools d'origines de CIS.
  2. Supprimez vos enregistrements DNS de CIS. Pour plus d'informations, voir Suppression d'enregistrements DNS.
  3. Supprimez chaque projet que vous avez créé. Lorsque vous supprimez un projet, tous les composants qu'il contient sont également supprimés. Pour plus d'informations, voir Suppression d'un projet.

Notez que votre domaine personnalisé n'est pas supprimé, mais qu'il n'est plus associé à l'application que vous avez créée.