Tutorial: Implementación de una aplicación para Java en un clúster de Service Fabric en Azure
Este tutorial forma parte de una serie y muestra cómo implementar una aplicación de Service Fabric en un clúster de Azure.
En la tercera parte de la serie, se aprende a:
- Creación de un clúster seguro de Linux en Azure
- Implementación de una aplicación en el clúster
En esta serie de tutoriales, se aprende a:
- Compilar una aplicación Java de Reliable Services en Service Fabric
- Implementar y depurar la aplicación en un clúster local
- Implementar la aplicación en un clúster de Azure
- Configurar la supervisión y el diagnóstico para la aplicación
- Configure CI/CD
Requisitos previos
Antes de empezar este tutorial:
- Si no tiene ninguna suscripción a Azure, cree una cuenta gratuita
- Instalación de la CLI de Azure
- Instalación del paquete del SDK de Service Fabric para Mac o Linux
- Instalación de Python 3
Creación de un clúster de Service Fabric en Azure
Con los pasos siguientes se crean los recursos necesarios para implementar la aplicación en un clúster de Service Fabric. Además, se configuran los recursos necesarios para supervisar el estado de la solución con la pila ELK (Elasticsearch, Logstash, Kibana). En concreto, se utiliza Event Hubs como receptor para los registros de Service Fabric. Se configura para enviar registros desde el clúster de Service Fabric hasta la instancia de Logstash.
Abra un terminal y descargue el siguiente paquete con los scripts auxiliares y las plantillas necesarias para crear los recursos en Azure.
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
Inicio de sesión en la cuenta de Azure.
az login
Configure la suscripción de Azure que quiera usar para crear los recursos
az account set --subscription [SUBSCRIPTION-ID]
Desde la carpeta service-fabric-java-quickstart/AzureCluster, ejecute el siguiente comando para crear un certificado de clúster en Key Vault. Este certificado se usa para proteger el clúster de Service Fabric. Proporcione la región (debe ser la misma que la del clúster de Service Fabric), el nombre del grupo de recursos del almacén de claves, el nombre del almacén de claves, una contraseña de certificado y el nombre DNS del clúster.
./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'
El comando anterior devuelve la siguiente información, anótela para usarla más adelante.
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>
Cree un grupo de recursos para la cuenta de Storage que almacena los registros.
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name teststorageaccountrg
Cree una cuenta de Storage que se usará para almacenar los registros que se produzcan.
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
Acceda a Azure Portal y vaya hasta la pestaña Firma de acceso compartido de la cuenta de Storage. Genere el token de la firma de acceso compartido como se indica a continuación.
Copie la dirección URL de la firma de acceso compartido de la cuenta y establézcala como reserva para usarla al crear el clúster de Service Fabric. Se parece a la siguiente dirección URL:
?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
Cree un grupo de recursos que contenga los recursos de Event Hubs. Con Event Hubs se envían mensajes de Service Fabric al servidor que ejecuta los recursos de ELK.
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name testeventhubsrg
Cree un recurso de Event Hubs mediante el siguiente comando. Siga las instrucciones para escribir detalles en namespaceName, eventHubName, consumerGroupName, sendAuthorizationRule y 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
Copie el contenido del campo de salida en la salida JSON del comando anterior. La información del remitente se utiliza al crear el clúster de Service Fabric. El nombre del receptor y la clave deben guardarse para su uso en el tutorial siguiente, una vez configurado el servicio Logstash para recibir mensajes de Event Hubs. El siguiente blob es una salida JSON de ejemplo:
"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" } }
Ejecute el script eventhubssastoken.py para generar la dirección URL de firma de acceso compartido para el recurso de Event Hubs que creó. Esta dirección URL de firma de acceso compartido la usa el clúster de Service Fabric para enviar registros a Event Hubs. Como resultado, con la directiva del remitente se genera la dirección URL. El script devuelve la dirección URL de la firma de acceso compartido del recurso de Event Hubs que se utiliza en el paso siguiente:
python3 eventhubssastoken.py 'testeventhubs' 'testeventhubs' 'sender' '[PRIMARY-KEY]'
Copie el valor del campo sr del JSON devuelto. El valor del campo sr es el token de firma de acceso compartido de Event Hubs. La dirección URL siguiente es un ejemplo de campo sr:
https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
La dirección URL de la firma de acceso compartido de Event Hubs sigue la estructura:
https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>
. Por ejemplo:https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
Abra el archivo sfdeploy.parameters.json y reemplace el contenido siguiente de los pasos anteriores. [SAS-URL-STORAGE-ACCOUNT] se anotó en el paso 8. [SAS-URL-EVENT-HUBS] se anotó en el paso 11.
"applicationDiagnosticsStorageAccountName": { "value": "teststorageaccount" }, "applicationDiagnosticsStorageAccountSasToken": { "value": "[SAS-URL-STORAGE-ACCOUNT]" }, "loggingEventHubSAS": { "value": "[SAS-URL-EVENT-HUBS]" }
Se abre sfdeploy.parameters.json. Cambie los parámetros siguientes y, a continuación, guarde el archivo.
- clusterName. Use solo letras minúsculas y números.
- adminUserName (para un valor distinto de cero)
- adminPassword (para un valor distinto de cero)
Ejecute el comando siguiente para crear el clúster de 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>
Implemente la aplicación en el clúster.
Antes de implementar la aplicación, debe agregar el siguiente fragmento de código al archivo Voting/VotingApplication/ApplicationManifest.xml. El campo X509FindValue es la huella digital devuelta del paso 4 de la sección Creación de un clúster de Service Fabric en Azure. Este fragmento de código está anidado en el campo ApplicationManifest (raíz).
<Certificates> <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" /> </Certificates>
Para implementar la aplicación en este clúster, debe utilizar SFCTL para establecer una conexión con el clúster. SFCTL requiere un archivo PEM con la clave pública y la privada para conectarse al clúster. Ejecute el siguiente comando para generar un archivo PEM con las claves pública y privada.
openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
Ejecute el siguiente comando para conectarse al clúster.
sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
Para implementar la aplicación, vaya a la carpeta Voting/Scripts y ejecute el script Install.sh.
./install.sh
Para acceder a Service Fabric Explorer, abra su explorador favorito y escriba
https://testlinuxcluster.westus.cloudapp.azure.com:19080
. Seleccione del almacén de certificados el que desee usar para conectarse a este punto de conexión. En las máquinas Linux, los certificados generados que generó el script new-service-fabric-cluster-certificate.sh deben importarse en Chrome para que aparezca Service Fabric Explorer. En las máquinas Mac es necesario instalar el archivo PFX en la cadena de claves. Observe que la aplicación se ha instalado en el clúster.Para acceder a la aplicación, escriba
https://testlinuxcluster.westus.cloudapp.azure.com:8080
Para desinstalar la aplicación del clúster, ejecute el script uninstall.sh de la carpeta Scripts
./uninstall.sh
Pasos siguientes
En este tutorial, ha aprendido a:
- Creación de un clúster seguro de Linux en Azure
- Creación de los recursos necesarios para la supervisión con ELK
Avance hasta el siguiente tutorial: