Tutoriel : Déployer une application Java sur un cluster Service Fabric dans Azure
Ce troisième didacticiel de la série vous montre comment déployer une application Service Fabric sur un cluster dans Azure.
Dans ce troisième volet, vous apprenez à :
- Créer un cluster Linux sécurisé dans Azure
- Déployer une application sur le cluster
Cette série de tutoriels vous montre comment effectuer les opérations suivantes :
Prérequis
Avant de commencer ce tutoriel :
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit
- Installer l’interface de ligne de commande Microsoft Azure
- Installez le Kit de développement logiciel (SDK) Service Fabric pour Mac ou Linux
- Installez Python 3
Créer un cluster Service Fabric dans Azure
Les étapes suivantes créent les ressources nécessaires pour déployer votre application sur un cluster Service Fabric. En outre, les ressources nécessaires pour surveiller l’intégrité de votre solution à l’aide de la pile ELK (Elasticsearch, Logstash, Kibana) sont configurées. Plus précisément, Event Hubs est utilisé en tant que récepteur pour les journaux d’activité de Service Fabric. Il est configuré pour envoyer des journaux d’activité du cluster Service Fabric à votre instance Logstash.
Ouvrez un terminal et téléchargez le package suivant qui contient les scripts d’assistance et les modèles nécessaires pour créer les ressources dans Azure
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
Connexion à votre compte Azure
az login
Configurer l’abonnement Azure que vous souhaitez utiliser pour créer les ressources
az account set --subscription [SUBSCRIPTION-ID]
À partir du dossier service-fabric-java-quickstart/AzureCluster, exécutez la commande suivante pour créer un certificat de cluster dans Key Vault. Ce certificat est utilisé pour sécuriser votre cluster Service Fabric. Indiquez la région (doit être identique à votre cluster Service Fabric), le nom du groupe de ressource de coffre de clés, le nom du coffre de clés, le mot de passe du certificat et le nom DNS du cluster.
./new-service-fabric-cluster-certificate.sh [REGION] [KEY-VAULT-RESOURCE-GROUP] [KEY-VAULT-NAME] [CERTIFICATE-PASSWORD] [CLUSTER-DNS-NAME-FOR-CERTIFICATE] Example: ./new-service-fabric-cluster-certificate.sh 'westus' 'testkeyvaultrg' 'testkeyvault' '<password>' 'testservicefabric.westus.cloudapp.azure.com'
La commande précédente renvoie les informations suivantes qui doivent être notées pour une utilisation ultérieure.
Source Vault Resource Id: /subscriptions/<subscription_id>/resourceGroups/testkeyvaultrg/providers/Microsoft.KeyVault/vaults/<name> Certificate URL: https://<name>.vault.azure.net/secrets/<cluster-dns-name-for-certificate>/<guid> Certificate Thumbprint: <THUMBPRINT>
Créez un groupe de ressources pour le compte de stockage qui stocke vos journaux d’activité
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name teststorageaccountrg
Créez un compte de stockage qui sera utilisé pour stocker les journaux d’activité produits
az storage account create -g [RESOURCE-GROUP-NAME] -l [REGION] --name [STORAGE-ACCOUNT-NAME] --kind Storage Example: az storage account create -g teststorageaccountrg -l westus --name teststorageaccount --kind Storage
Accédez au portail Azure, puis à l’onglet Signature d’accès partagé pour votre compte de stockage. Générez le jeton SAP comme suit.
Copiez l’URL de SAP de compte et mettez-la de côté pour l’utiliser lors de la création de votre cluster Service Fabric. L’URL se présente comme suit :
?sv=2017-04-17&ss=bfqt&srt=sco&sp=rwdlacup&se=2018-01-31T03:24:04Z&st=2018-01-30T19:24:04Z&spr=https,http&sig=IrkO1bVQCHcaKaTiJ5gilLSC5Wxtghu%2FJAeeY5HR%2BPU%3D
Créez un groupe de ressources qui contient les ressources Event Hub. Event Hubs est utilisé pour envoyer des messages de Service Fabric au serveur exécutant les ressources ELK.
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name testeventhubsrg
Créez une ressource Event Hubs à l’aide de la commande suivante. Suivez les invites pour entrer les informations de namespaceName, eventHubName, consumerGroupName, sendAuthorizationRule et receiveAuthorizationRule.
az deployment group create -g [RESOURCE-GROUP-NAME] --template-file eventhubsdeploy.json Example: az deployment group create -g testeventhubsrg --template-file eventhubsdeploy.json Please provide string value for 'namespaceName' (? for help): testeventhubnamespace Please provide string value for 'eventHubName' (? for help): testeventhub Please provide string value for 'consumerGroupName' (? for help): testeventhubconsumergroup Please provide string value for 'sendAuthorizationRuleName' (? for help): sender Please provide string value for 'receiveAuthorizationRuleName' (? for help): receiver
Copiez le contenu du champ de sortie dans la sortie JSON de la commande précédente. Les informations d’expéditeur sont utilisées lors de la création du cluster Service Fabric. La clé et le nom du récepteur doivent être enregistrés pour une utilisation dans le didacticiel suivant lorsque le service Logstash est configuré pour recevoir des messages à partir d’Event Hub. L’objet blob suivant est un exemple de sortie JSON :
"outputs": { "receiver Key": { "type": "String", "value": "[KEY]" }, "receiver Name": { "type": "String", "value": "receiver" }, "sender Key": { "type": "String", "value": "[KEY]" }, "sender Name": { "type": "String", "value": "sender" } }
Exécutez le script eventhubssastoken.py pour générer l’URL de la SAP pour la ressource EventHubs que vous avez créée. Cette URL de SAP est utilisée par le cluster Service Fabric pour envoyer des journaux d’activité à Event Hubs. Par conséquent, la stratégie expéditeur est utilisée pour générer l’URL. Le script renvoie l’URL de SAP pour la ressource Event Hubs qui est utilisée dans l’étape suivante :
python3 eventhubssastoken.py 'testeventhubs' 'testeventhubs' 'sender' '[PRIMARY-KEY]'
Copiez la valeur du champ sr dans le JSON renvoyé. La valeur du champ sr est le jeton SAP pour EventHubs. L’URL suivante texte un exemple de champ sr :
https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
Votre URL SAP pour Event Hubs suit la structure :
https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>
. Par exemple :https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
Ouvrez le fichier sfdeploy.parameters.json et remplacez le contenu suivant des étapes précédentes. [SAS-URL-STORAGE-ACCOUNT] a été indiqué à l’étape 8. [SAS-URL-EVENT-HUBS] a été indiqué à l’étape 11.
"applicationDiagnosticsStorageAccountName": { "value": "teststorageaccount" }, "applicationDiagnosticsStorageAccountSasToken": { "value": "[SAS-URL-STORAGE-ACCOUNT]" }, "loggingEventHubSAS": { "value": "[SAS-URL-EVENT-HUBS]" }
Ouvrez sfdeploy.parameters.json. Modifiez les paramètres suivants puis enregistrez le fichier.
- clusterName. Utilisez uniquement des lettres minuscules et des chiffres.
- adminUserName (pour une valeur autre que vide)
- adminPassword (pour une valeur autre que vide)
Exécutez la commande ci-dessous pour créer votre cluster Service Fabric
az sf cluster create --location 'westus' --resource-group 'testlinux' --template-file sfdeploy.json --parameter-file sfdeploy.parameters.json --secret-identifier <certificate_url_from_step4>
Déployer votre application sur le cluster
Avant de déployer votre application, vous devez ajouter l’extrait de code suivant au fichier Voting/VotingApplication/ApplicationManifest.xml. Le champ X509FindValue est l’empreinte renvoyée de l’étape 4 de la section Créer un cluster Service Fabric dans Azure. Cet extrait de code est imbriqué sous le champ ApplicationManifest (le champ racine).
<Certificates> <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" /> </Certificates>
Pour déployer votre application sur ce cluster, vous devez utiliser SFCTL pour établir une connexion au cluster. SFCTL nécessite un fichier PEM avec la clé publique et la clé privée pour se connecter au cluster. Exécutez la commande suivante pour générer un fichier PEM contenant à la fois la clé publique et la clé privée.
openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
Exécutez la commande suivante pour vous connecter au cluster.
sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
Pour déployer votre application, accédez au dossier Voting/Scripts et exécutez le script install.sh.
./install.sh
Pour accéder à Service Fabric Explorer, ouvrez votre navigateur favori et tapez
https://testlinuxcluster.westus.cloudapp.azure.com:19080
. Choisissez le certificat dans le magasin de certificats que vous souhaitez utiliser pour vous connecter à ce point de terminaison. Si vous utilisez un ordinateur Linux, les certificats qui ont été générés par le script new-service-fabric-cluster-certificate.sh doivent être importés dans Chrome pour afficher Service Fabric Explorer. Si vous utilisez un Mac, vous devez installer le fichier PFX dans votre chaîne de clé. Vous remarquerez que votre application a été installée sur le cluster.Pour accéder à votre application, tapez
https://testlinuxcluster.westus.cloudapp.azure.com:8080
Pour désinstaller votre application du cluster, exécutez le script uninstall.sh dans le dossier Scripts
./uninstall.sh
Étapes suivantes
Dans ce didacticiel, vous avez appris à :
- Créer un cluster Linux sécurisé dans Azure
- Créer les ressources nécessaires pour la surveillance avec ELK
Passez au tutoriel suivant :
Monitor your Service Fabric applications using ELK (Surveiller vos applications Service Fabric à l’aide d’ELK)