Tempo aproximado para leitura: 00:10:00 min
Dúvida
Como realizar a Migração de dados entre Edges?
Ambiente
Cloud - Linha T-Cloud - Todas as versões
Solução
Para realizar a Migração de dados entre Edges, siga os passos a seguir:
Escopo | EDGES |
Ícone/Nome TCloud |
|
Formulário |
|
Esta ação tem por objetivo realizar um cadastro de migração automático, possibilitando que o time de DevOps prepare e faça o upload dos arquivos através de scripts executados nas instâncias de uma topologia.
Além de preparar os arquivos, a ação permite que seja escolhida uma topologia destino para que estes arquivos preparados na topologia origem sejam aplicados na topologia destino
Ao clicar na ação, o seguinte formulário será apresentado:
O campo"Catálogo de migração"será apresentado automaticamente, o TCloud irá buscar o template na tabela de catálogo de migração pelo produto/sistema operacional da topologia onde a ação está sendo disparada
No campo"Descrição da Migração"deve ser informado um título para a migração que será cadastrada, com isso será possível identificar a migração cadastrado no módulo do migrador (Mais informações sobre o módulo do migrador, acesse a página T-Cloud - Migrador)
No campo"Selecione os artefatos a serem migrados"serão apresentados todos os artefatos de aplicação cadastrados no template de migração (Mais informações sobre o template de migração, acesse a página Habilitando o migrador para um novo produto)
O campo"Migrar dados do Banco"é utilizado para informar se os dados do banco também serão utilizados no cadastro de migração gerado
O campo"Migrar restrição de NAT/LB"é utilizado para que o TCloud migre as regras de restrição de NAT/LB para a topologia destino, caso seja selecionada a topologia destino no formulário. Para este item, temos duas observações:
- As restrições só serão migradas caso a topologia destino possua a mesma regra de NAT/LB restrita na topologia origem
- Esta migração não contempla as regras de NAT/LB cadastradas em uma VPN
O Campo"Topologia destino"é utilizado para informar para qual topologia os dados serão serão importados. Caso não seja informado uma topologia destino, o TCloud irá apenas cadastrar a migração para que ela seja aplicada posteriormente pelo módulo do migrador
O campo"Tipo de migração"é utilizado para decidir se a migração dos dados, caso seja selecionado a topolgia destino, será utilizada apenas para validação ou se será uma migração oficial para Go Live. Neste caso, a única diferença de uma para outra é que se a opção de Go Live for selecionada, o TCloud irá transferir o DNS da topologia origem para a topologia destino.. (Obs: neste momento a topologia origem ficará sem cadastro de DNS e a topologia destino terá o seu DNS substituído pelo DNS da topologia origem)
Ao confirmar o formulário, o TCloud irá criar um ID para esta migração, este ID será enviado no campo migration_id na chamada dos scripts de preparação/upload dos dados de aplicação
O pipeline possui o seguinte diagrama de execução:
1 - Controle de fila da ação
2 - Execução de scripts de preparação e upload dos dados de aplicação solicitados pelo formulário.
Neste ponto, será criado um disco temporário na instância core para evitar que os dados preparados não comprometa o espaço livre do disco de dados da instância. O disco temporário é criado com o mesmo tamanho do disco de dados da core e é excluído logo após o step de execução de scripts de preparação/upload de arquivos.
Os scripts desta ação receberão as informações do formulário, a variável migration_id com o ID da migração cadastrado no momento da execução da ação e por fim a estrutura de artefatos cadastradas no template
Exemplo de input recebido em base64 no script de migração
{
"form": {
"migration_catalog": "protheus_windows_v1",
"description": "Migração TESP3 prd x TESP3 tst",
"application": {
"bin": true,
"protheus_data": true,
"rpo": true,
"ini": true
},
"database": "S",
"migrate_rules": "N",
"topology_dest": "142441",
"migration_type": "validation"
},
"migration_id": 682,
"application": [{
"application_type": "bin",
"filename": "bin.zip",
"status": "new"
}, {
"application_type": "protheus_data",
"filename": "protheus_data.zip",
"status": "new"
}, {
"application_type": "rpo",
"filename": "rpo.zip",
"status": "new"
}, {
"application_type": "ini",
"filename": "ini.zip",
"status": "new"
}]
}
Com isso, o script deve identificar os artefatos selecionados, prepará-los em um arquivo .zip e enviá-los para o TCloud através de uma url de upload multpart.
Utilizamos o upload multpart porque a AWS tem um limite de 5GB em sua API que recebe o upload de arquivos.
O envio de um arquivo em uma url pré assinada de upload multpart se dá da seguinte forma:
- Primeiro deve-se calcular em quantas partes pretende mandar os arquivos, levando em consideração que cada parte não pode ser superior a 5GB
- Definido a quantidade de partes, o script deve chamar a URL do TCloud para pegar a URL assinada de cada parte. A URL a ser chamada é a seguinte:
As chaves "topology_api_key" e "topology_api_secret" devem ser passadas no body desta chamada, da mesma forma que é chamada na API de geração do Custom Data
Parâmetros:
ccode: CCODE do cliente
topology_id: numero da topologia
migration_id: ID da migração cadastrado pelo TCloud na execução da ação
type: tipo do artefato cadastrado no catálogo de migração
parts: quantidade de partes a ser enviado o arquivo
Será retornado o id de upload gerado pela AWS e uma lista com a url assinada de cada parte do upload:
{
"upload_id": "5oWJGemCFnkf4064_dNT1aeRLHVQs2WGRw2Xmovzn7zn0tOKUbvRsDAWQc8o3LZlSIwtxbQAyLW.2RJhIGEWejt3qSNEgXsGwzL0zoRcW.p9YG359kvdOFnENl.I4uaajIeAd9EyJfOZQ_sYT56UG1oBImrAMhPfH93OkLpYZNA-",
"urls": [
"https://tcloud-customer-migration.s3.amazonaws.com/CLAUDI5/840/application/bin/protheus_data.zip?uploadId=5oWJGemCFnkf4064_dNT1aeRLHVQs2WGRw2Xmovzn7zn0tOKUbvRsDAWQc8o3LZlSIwtxbQAyLW.2RJhIGEWejt3qSNEgXsGwzL0zoRcW.p9YG359kvdOFnENl.I4uaajIeAd9EyJfOZQ_sYT56UG1oBImrAMhPfH93OkLpYZNA-&partNumber=1&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA6PDUB7WMB5QWNDGQ%2F20220823%2Fsa-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220823T010522Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAkaCXNhLWVhc3QtMSJGMEQCIDlAHNhg8MYbCCPBdJYGdQtkbvTw%2Fos7vjNsBvkb0C5TAiBtVMbiH25YU%2BBtG4fxLAaIPO%2BWr4umoSrkhhaQTmeAaiqcAwiC%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAQaDDk5NDUyODMyOTExMiIMCRomuGt88B%2FxH09ZKvACCatjhytQZBBCYGBlAlWrvtnZ462JYBhir%2Bcm8729MNu9VpwrNC3gtIJMkDvQEiRRKDSxQgLNZyMehqqhyB5Gw%2F8XFpa0DKPOSXzrPZmMG%2BOa1%2FfSzdKmit7I1yz8YCk%2B7Av9JnOKdsL%2Fex6JweN2i8oNGH2RnbuauT%2FesLDCbtJcV6Vqdwo7Iv894HgVbqKEWRTiXnrP7YsN0vuHB76zIzsmzePoVaqxWSt2wOuxmE4Qa%2B8FsW5HgLc3yQEJr51uPP3U1JYV1s7v4tHpCbbOfhhCJ34uoQdEP%2BfmtzfmRx1JVTHON2o3bj6kcPmqfMNp5gGPW8hgICUX98mUQO%2FQhY5MjdddpCkh4llpMCmcz5cxKIwbxq3Bnj0pLKa4P1PEGMD0H24ZrfDgiN5h0E70iPj8MeL%2FDNUAiM1YXOLz5pjvr%2F0WNTrNfvmS2LgLttsOiuU2rRBOKFJpsYpFC878CB34QsjKHxUQqSnDhWcCmpQw9M6QmAY6ngEGP9yArixJ9xXA%2Fvx91vFiUIz1zpQqa3IzVWGUyjTAQBLO7R0wnXhp0D2dSb1m2QGkL%2FC32k%2BCfp5RC9FcbNB%2BURkIIK2UZY0Pt9AhgG5PKd2XM9f9wVf9Q2Dx%2Fs%2BaBw4JIvJ2wP%2FeK0F%2FcbVPZA4soPjiB8E3VR8jX%2BUUrY7taoPqQAqMzb%2Fq9rrkO2CVF%2BOEhZFb0TC387DOLn%2BYHA%3D%3D&X-Amz-Signature=1ffcc1f43ab09c2f3ad66316f3a48b2497990bae9efaa2a57ffef98531b61fb9",
"https://tcloud-customer-migration.s3.amazonaws.com/CLAUDI5/840/application/bin/protheus_data.zip?uploadId=5oWJGemCFnkf4064_dNT1aeRLHVQs2WGRw2Xmovzn7zn0tOKUbvRsDAWQc8o3LZlSIwtxbQAyLW.2RJhIGEWejt3qSNEgXsGwzL0zoRcW.p9YG359kvdOFnENl.I4uaajIeAd9EyJfOZQ_sYT56UG1oBImrAMhPfH93OkLpYZNA-&partNumber=2&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA6PDUB7WMB5QWNDGQ%2F20220823%2Fsa-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220823T010522Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAkaCXNhLWVhc3QtMSJGMEQCIDlAHNhg8MYbCCPBdJYGdQtkbvTw%2Fos7vjNsBvkb0C5TAiBtVMbiH25YU%2BBtG4fxLAaIPO%2BWr4umoSrkhhaQTmeAaiqcAwiC%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAQaDDk5NDUyODMyOTExMiIMCRomuGt88B%2FxH09ZKvACCatjhytQZBBCYGBlAlWrvtnZ462JYBhir%2Bcm8729MNu9VpwrNC3gtIJMkDvQEiRRKDSxQgLNZyMehqqhyB5Gw%2F8XFpa0DKPOSXzrPZmMG%2BOa1%2FfSzdKmit7I1yz8YCk%2B7Av9JnOKdsL%2Fex6JweN2i8oNGH2RnbuauT%2FesLDCbtJcV6Vqdwo7Iv894HgVbqKEWRTiXnrP7YsN0vuHB76zIzsmzePoVaqxWSt2wOuxmE4Qa%2B8FsW5HgLc3yQEJr51uPP3U1JYV1s7v4tHpCbbOfhhCJ34uoQdEP%2BfmtzfmRx1JVTHON2o3bj6kcPmqfMNp5gGPW8hgICUX98mUQO%2FQhY5MjdddpCkh4llpMCmcz5cxKIwbxq3Bnj0pLKa4P1PEGMD0H24ZrfDgiN5h0E70iPj8MeL%2FDNUAiM1YXOLz5pjvr%2F0WNTrNfvmS2LgLttsOiuU2rRBOKFJpsYpFC878CB34QsjKHxUQqSnDhWcCmpQw9M6QmAY6ngEGP9yArixJ9xXA%2Fvx91vFiUIz1zpQqa3IzVWGUyjTAQBLO7R0wnXhp0D2dSb1m2QGkL%2FC32k%2BCfp5RC9FcbNB%2BURkIIK2UZY0Pt9AhgG5PKd2XM9f9wVf9Q2Dx%2Fs%2BaBw4JIvJ2wP%2FeK0F%2FcbVPZA4soPjiB8E3VR8jX%2BUUrY7taoPqQAqMzb%2Fq9rrkO2CVF%2BOEhZFb0TC387DOLn%2BYHA%3D%3D&X-Amz-Signature=1577206423a181d128c3e66ffe070b953400f9302422c4f89b08f314ee328290",
"https://tcloud-customer-migration.s3.amazonaws.com/CLAUDI5/840/application/bin/protheus_data.zip?uploadId=5oWJGemCFnkf4064_dNT1aeRLHVQs2WGRw2Xmovzn7zn0tOKUbvRsDAWQc8o3LZlSIwtxbQAyLW.2RJhIGEWejt3qSNEgXsGwzL0zoRcW.p9YG359kvdOFnENl.I4uaajIeAd9EyJfOZQ_sYT56UG1oBImrAMhPfH93OkLpYZNA-&partNumber=3&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA6PDUB7WMB5QWNDGQ%2F20220823%2Fsa-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220823T010522Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAkaCXNhLWVhc3QtMSJGMEQCIDlAHNhg8MYbCCPBdJYGdQtkbvTw%2Fos7vjNsBvkb0C5TAiBtVMbiH25YU%2BBtG4fxLAaIPO%2BWr4umoSrkhhaQTmeAaiqcAwiC%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAQaDDk5NDUyODMyOTExMiIMCRomuGt88B%2FxH09ZKvACCatjhytQZBBCYGBlAlWrvtnZ462JYBhir%2Bcm8729MNu9VpwrNC3gtIJMkDvQEiRRKDSxQgLNZyMehqqhyB5Gw%2F8XFpa0DKPOSXzrPZmMG%2BOa1%2FfSzdKmit7I1yz8YCk%2B7Av9JnOKdsL%2Fex6JweN2i8oNGH2RnbuauT%2FesLDCbtJcV6Vqdwo7Iv894HgVbqKEWRTiXnrP7YsN0vuHB76zIzsmzePoVaqxWSt2wOuxmE4Qa%2B8FsW5HgLc3yQEJr51uPP3U1JYV1s7v4tHpCbbOfhhCJ34uoQdEP%2BfmtzfmRx1JVTHON2o3bj6kcPmqfMNp5gGPW8hgICUX98mUQO%2FQhY5MjdddpCkh4llpMCmcz5cxKIwbxq3Bnj0pLKa4P1PEGMD0H24ZrfDgiN5h0E70iPj8MeL%2FDNUAiM1YXOLz5pjvr%2F0WNTrNfvmS2LgLttsOiuU2rRBOKFJpsYpFC878CB34QsjKHxUQqSnDhWcCmpQw9M6QmAY6ngEGP9yArixJ9xXA%2Fvx91vFiUIz1zpQqa3IzVWGUyjTAQBLO7R0wnXhp0D2dSb1m2QGkL%2FC32k%2BCfp5RC9FcbNB%2BURkIIK2UZY0Pt9AhgG5PKd2XM9f9wVf9Q2Dx%2Fs%2BaBw4JIvJ2wP%2FeK0F%2FcbVPZA4soPjiB8E3VR8jX%2BUUrY7taoPqQAqMzb%2Fq9rrkO2CVF%2BOEhZFb0TC387DOLn%2BYHA%3D%3D&X-Amz-Signature=4012c2f17adff8d7c4fa89ff73de9af07bd331fe8de8d4093e4c323e5b25cfea",
"https://tcloud-customer-migration.s3.amazonaws.com/CLAUDI5/840/application/bin/protheus_data.zip?uploadId=5oWJGemCFnkf4064_dNT1aeRLHVQs2WGRw2Xmovzn7zn0tOKUbvRsDAWQc8o3LZlSIwtxbQAyLW.2RJhIGEWejt3qSNEgXsGwzL0zoRcW.p9YG359kvdOFnENl.I4uaajIeAd9EyJfOZQ_sYT56UG1oBImrAMhPfH93OkLpYZNA-&partNumber=4&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA6PDUB7WMB5QWNDGQ%2F20220823%2Fsa-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220823T010522Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEAkaCXNhLWVhc3QtMSJGMEQCIDlAHNhg8MYbCCPBdJYGdQtkbvTw%2Fos7vjNsBvkb0C5TAiBtVMbiH25YU%2BBtG4fxLAaIPO%2BWr4umoSrkhhaQTmeAaiqcAwiC%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAQaDDk5NDUyODMyOTExMiIMCRomuGt88B%2FxH09ZKvACCatjhytQZBBCYGBlAlWrvtnZ462JYBhir%2Bcm8729MNu9VpwrNC3gtIJMkDvQEiRRKDSxQgLNZyMehqqhyB5Gw%2F8XFpa0DKPOSXzrPZmMG%2BOa1%2FfSzdKmit7I1yz8YCk%2B7Av9JnOKdsL%2Fex6JweN2i8oNGH2RnbuauT%2FesLDCbtJcV6Vqdwo7Iv894HgVbqKEWRTiXnrP7YsN0vuHB76zIzsmzePoVaqxWSt2wOuxmE4Qa%2B8FsW5HgLc3yQEJr51uPP3U1JYV1s7v4tHpCbbOfhhCJ34uoQdEP%2BfmtzfmRx1JVTHON2o3bj6kcPmqfMNp5gGPW8hgICUX98mUQO%2FQhY5MjdddpCkh4llpMCmcz5cxKIwbxq3Bnj0pLKa4P1PEGMD0H24ZrfDgiN5h0E70iPj8MeL%2FDNUAiM1YXOLz5pjvr%2F0WNTrNfvmS2LgLttsOiuU2rRBOKFJpsYpFC878CB34QsjKHxUQqSnDhWcCmpQw9M6QmAY6ngEGP9yArixJ9xXA%2Fvx91vFiUIz1zpQqa3IzVWGUyjTAQBLO7R0wnXhp0D2dSb1m2QGkL%2FC32k%2BCfp5RC9FcbNB%2BURkIIK2UZY0Pt9AhgG5PKd2XM9f9wVf9Q2Dx%2Fs%2BaBw4JIvJ2wP%2FeK0F%2FcbVPZA4soPjiB8E3VR8jX%2BUUrY7taoPqQAqMzb%2Fq9rrkO2CVF%2BOEhZFb0TC387DOLn%2BYHA%3D%3D&X-Amz-Signature=96a2a9c542035f16c5c78737a61f2a8324b63238070254820748dc87ff557e81",
.
.
.
]
}
- Abrir o arquivo a ser enviado, ir lendo ele em partes e enviar cada parte nas URL pré assinadas retornadas no passo anterior. O método a ser chamado para estas url é o PUT e a parte do arquivo lida deve ir no body da chamada.
- Cada envio com sucesso retorna uma "ETag" no cabeçalho de resposta. Estas ETags deverão ser guardadas em um array com o seguinte formato: {"ETag": "{ETag retornada}", "PartNumber": "{Numero da parte enviada}"}
- Após finalizar o envio de todas as partes, a seguinte URL do TCloud deve ser chamada:
As chaves "topology_api_key" e "topology_api_secret" devem ser passadas no body desta chamada, da mesma forma que é chamada na API de geração do Custom Data
Parâmetros:
ccode: CCODE do cliente
topology_id: numero da topologia
migration_id: ID da migração cadastrado pelo TCloud na execução da ação
type: tipo do artefato cadastrado no catálogo de migração
upload_id: ID do upload retornada pela API que gera as urls assinadas
3 - Executa o export do banco e grava a URL assinada de download deste export no cadastro de migração
4 - Executa a migração do DNS da topologia origem para topologia destino
5 - Executa as ações de migração de banco e aplicação na topologia destino, caso a topologia destino tenha sido informada no formulário da ação.
Neste momento a ação irá gerar um pipeline de aplicação da migração para a aplicação e outro para o banco. Caso um destes pipelines apresente erro, o pipeline da ação de migração entre edges também ficará com status de erro, os detalhes destas ações de importação de dados da aplicação podem ser vistos na documentação Habilitando o migrador para um novo produto
6 - Executa a migração de regras de restrição de NAT/LB na topologia destino
O botão da ação de migração entre édge só aparece para usuários que possuem a permissão para a feature "292 - Migrar dados de cliente entre Edges"
Para adicionar no catálogo de ações, o seguinte json deve ser inserido na chave "items" do template:
{
"actionSave": {
"method": "POST",
"payload_export_application": {
"cmd_list": [
{
"cmd": "", //nome do script .ps1 ou .py
"instance_type": [
"" //tipos de instâncias que o comando será executado
],
"params": [
"" //argumentos passado para o script
],
"timeout": 300 //timeout do comando
},
{...} //demais comandos
]
},
"uri": "/customer/{{cloud_id}}/topologies/{{topology_id}}/action/customer_migration_edge"
},
"action_type": "sync",
"css_icon": "fas fa-rocket",
"feature_id": 292,
"label_id": "Migração de dados entre Edges",
"method": "GET",
"msg_alert": "Mensagem de alerta customizada que aparecerá na parte inferior do formulário. Aceita código HTML",
"msg_confirm": "Mensagem customizada que aparecerá ao clicar no botão 'Enviar' do formulário",
"name": "action_customer_migration_edge",
"type": "form",
"uri": "/customer/{{cloud_id}}/topologies/{{topology_id}}/action/customer_migration_edge",
"visibility": "show"
}
0 Comentários