Tutorial: Implementar uma aplicação Java num cluster do Service Fabric no Azure
Este tutorial é a terceira parte de uma série e mostra-lhe como implementar uma aplicação do Service Fabric num cluster no Azure.
Na terceira parte da série, ficará a saber como:
- Criar um cluster do Linux seguro no Azure
- Implementar uma aplicação no cluster
Nesta série de tutoriais, ficará a saber como:
- Criar uma aplicação Java Service Fabric Reliable Services
- Implementar e depurar a aplicação num cluster local
- Implementar a aplicação num cluster do Azure
- Configurar a monitorização e os diagnósticos da aplicação
- Configurar CI/CD
Pré-requisitos
Antes de começar este tutorial:
- Se não tiver uma subscrição do Azure, crie uma conta gratuita
- Instalar a CLI do Azure
- Instalar o SDK do Service Fabric para Mac ou Linux
- Instalar o Python 3
Criar um cluster do Service Fabric no Azure
Os passos seguintes criam os recursos necessários para implementar a sua aplicação num cluster do Service Fabric. Além disso, são configurados os recursos necessários para monitorizar o estado de funcionamento da sua solução através da pilha ELK (Elasticsearch Logstash, Kibana). Especificamente, os Hubs de Eventos são utilizados como sink para registos do Service Fabric. É configurado para enviar registos do cluster do Service Fabric para a sua instância do Logstash.
Abrir um terminal e transferir o pacote seguinte que contém os scripts auxiliares necessários e os modelos para criar os recursos no Azure
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
Inicie sessão na sua conta do Azure
az login
Definir a subscrição do Azure que quer utilizar para criar os recursos
az account set --subscription [SUBSCRIPTION-ID]
Na pasta service-fabric-java-quickstart/AzureCluster, execute o comando seguinte para criar um certificado de cluster no Key Vault. Este certificado é utilizado para proteger o cluster do Service Fabric. Indique a região (tem de ser a mesma do cluster do Service Fabric), o nome do grupo de recursos do cofre de chaves, o nome do cofre de chaves, a palavra-passe do certificado e o nome DNS do 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'
O comando anterior devolve as informações seguintes, que deve anotar para utilização posterior.
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>
Criar um grupo de recursos para a conta de armazenamento que armazena os registos
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name teststorageaccountrg
Criar uma conta de armazenamento que será utilizada para armazenar os registos que serão produzidos
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
Aceda ao portal do Azure e navegue para o separador Assinatura de Acesso Partilhado da conta de armazenamento. Gere o token SAS da seguinte forma.
Copie o URL de SAS da conta e defina-o separadamente para utilização quando criar o cluster do Service Fabric. Assemelha-se ao seguinte 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
Crie um grupo de recursos com os recursos do Hub de Eventos. Os Hubs de Eventos são utilizados para enviar mensagens do Service Fabric para o servidor que executa os recursos ELK.
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name testeventhubsrg
Crie um recurso dos Hubs de Eventos com o seguinte comando. Siga as indicações para introduzir detalhes para namespaceName, eventHubName, consumerGroupName, sendAuthorizationRule e 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 o conteúdo do campo saída na saída JSON do comando anterior. As informações do remetente são utilizadas quando é criado o cluster do Service Fabric. O nome e a chave do recetor devem ser guardados para utilização no próximo tutorial quando o serviço Logstash está configurado para receber mensagens do Hub de Eventos. O blob seguinte é uma saída JSON de exemplo:
"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" } }
Execute o script eventhubssastoken.py para gerar o URL de SAS para o recurso EventHubs que criou. Este URL de SAS é utilizado pelo cluster do Service Fabric para enviar registos aos Hubs de Eventos. Como resultado, é utilizada a política do remetente para gerar o URL. O script devolve o URL de SAS para o recurso dos Hubs de Eventos utilizado no passo seguinte:
python3 eventhubssastoken.py 'testeventhubs' 'testeventhubs' 'sender' '[PRIMARY-KEY]'
Copie o valor do campo sr no JSON devolvido. O valor do campo sr é o token SAS para EventHubs. O URL seguinte é um exemplo do campo sr:
https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
Sua URL SAS para os EventHubs segue a estrutura:
https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>
. Por exemplo,https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
Abra o ficheiro sfdeploy.parameters.json e substitua o conteúdo seguinte dos passos anteriores. [SAS-URL-STORAGE-ACCOUNT] foi indicado no passo 8. [SAS-URL-EVENT-HUBS] foi indicado no passo 11.
"applicationDiagnosticsStorageAccountName": { "value": "teststorageaccount" }, "applicationDiagnosticsStorageAccountSasToken": { "value": "[SAS-URL-STORAGE-ACCOUNT]" }, "loggingEventHubSAS": { "value": "[SAS-URL-EVENT-HUBS]" }
É aberta sfdeploy.parameters.json. Altere os parâmetros seguintes e, em seguida, guarde o ficheiro.
- clusterName. Utilize apenas letras minúsculas e números.
- adminUserName (para um valor diferente de zero)
- adminPassword (para um valor diferente de zero)
Execute o seguinte comando para criar o cluster do 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 a aplicação no cluster
Antes de implementar a aplicação, tem de adicionar o fragmento seguinte ao ficheiro Voting/VotingApplication/ApplicationManifest.xml. O campo X509FindValue é o thumbprint devolvido no Passo 4 da secção Criar um cluster do Service Fabric no Azure. Este fragmento está aninhado no campo ApplicationManifest (o campo raiz).
<Certificates> <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" /> </Certificates>
Para implementar a aplicação neste cluster, tem de utilizar o SFCTL para estabelecer uma ligação ao cluster. O SFCTL necessita de um ficheiro PEM com chave pública e chave privada para se ligar ao cluster. Execute o seguinte comando para produzir um ficheiro PEM com chave pública e chave privada.
openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
Execute o seguinte comando para ligar ao cluster.
sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
Para implementar a aplicação, navegue para a pasta Voting/Scripts e execute o script install.sh.
./install.sh
Para aceder ao Service Fabric Explorer, abra o seu browser favorito e escreva
https://testlinuxcluster.westus.cloudapp.azure.com:19080
. Escolha o certificado no arquivo de certificados que quer utilizar para ligar a este ponto final. Se estiver a utilizar uma máquina Linux, os certificados gerados pelo script new-service-fabric-cluster-certificate.sh têm de ser importados para o Chrome para ver o Service Fabric Explorer. Se estiver a utilizar um Mac, tem de instalar o ficheiro PFX na Keychain. Repare se a aplicação foi instalada no cluster.Para aceder à sua aplicação, escreva
https://testlinuxcluster.westus.cloudapp.azure.com:8080
Para desinstalar a aplicação do cluster, execute o script uninstall.sh na pasta Scripts
./uninstall.sh
Próximos passos
Neste tutorial, ficou a saber como:
- Criar um cluster do Linux seguro no Azure
- Criar os recursos necessários para monitorizar com o ELK
Avance para o tutorial seguinte: