Con il presente articolo si vuole illustrate quali sono le risorse azure coinvolte e il processo di attivazione dell'ambiente di Disaster Recovery nel caso di test o di disaster.

 

Azure:

  • Location:

North Europe

  • Resource Group: 

CREDEM-revcom-log-ne (dedicata al Log analytics workspace)

CREDEM-revcom-mng-drs(dedicato alla vm di management + Gallery)

CREDEM-revcom-pflow-drs (dedicato all'app di pflow)

CREDEM-revcom-prd-drs2 (dedicato alle VM di produzione)

CREDEM-revcom-prd-drt2 (dedicato alle VM di test)

hub-dr-rg (dedicato al Firewall)

rgcredemtelnet-DR (dedicato alla VPN site to site)

 

 

 

Processo di attivazione:

 

  • Accensione firewall: tramite automation account (autacc-revcom) eseguire il runbook "rb-revcom-start-stop-DR-firewall" premendo il comando "START" e inserendo "Start" nel campo "FWAction".

L'avvio del firewall richiederà 5 min circa.

Nel caso non fosse possibile avviare il firewall tramite automation account eseguire i seguenti comandi da Azure CLI:

$AzureContext = Set-AzContext -SubscriptionName "dataexpert"

$azfw = Get-AzFirewall -Name "hub-dr-firewall" -ResourceGroupName "hub-dr-rg” -DefaultProfile 

$AzureContext$vnet = Get-AzVirtualNetwork -ResourceGroupName "hub-dr-rg" -Name "hub-dr-vnet" -DefaultProfile 

$AzureContext$publicip1 = Get-AzPublicIpAddress -Name "hub-firewall-dr-publicip01" -ResourceGroupName "hub-dr-rg" -DefaultProfile 

$AzureContext$publicip2 = Get-AzPublicIpAddress -Name "pip-interactive-prd-drs" -ResourceGroupName "hub-dr-rg" -DefaultProfile 

$AzureContext$publicip3 = Get-AzPublicIpAddress -Name "pip-revcom-pflow-drs" -ResourceGroupName "hub-dr-rg" -DefaultProfile 

$AzureContext$publicip4 = Get-AzPublicIpAddress -Name "pip-interactive-prd-drt" -ResourceGroupName "hub-dr-rg" -DefaultProfile 

$AzureContext$azfw.Allocate($vnet,@($publicip1,$publicip2,$publicip3,$publicip4))

Set-AzFirewall -AzureFirewall $azfw -DefaultProfile $AzureContext


  • Elastic Pool Space: Prima di procedere con il restore dei DB nei rispettivi Sql Server, è necessario impostare lo spazio degli elastic pool ad una quantità di GB sufficienti a contenere tutti i DB. Per fare ciò accedere in SQL Elastic Pool, selezionare l'elastic pool di interesse e accedere nella sezione "Configurazione", impostare "Data Max Size" dell'elastic pool (per vedere le dimensioni previste vedi tabella presente in SQL Server + Database + ElasticPool : Next Digital Wave)


  • Restore DB su server SQL in DRT o DRS: procedere con la creazione di un nuovo DB in azure; durante la fase di creazione e dopo aver selezionato "Subscription" e "Resource Group" (CREDEM, CREDEM-revcom-prd-drxx) andare nel tab "Additional Settings" e selezionare "Use existing data: Backup"; selezionare il bk da cui procedere con il restore (fra quelli elencati sotto sqlcredemprddrs (North Europe)).

Tornare sul Tab Basic e verificare che le informazioni presenti siano corrette aggiungendo il db all'Elastic Pool corretto e impostando "Locally-redundant backup storage".

Lasciare inalterati la configurazione del Tab Networking e Security e procedere con la creazione.

Tale azione andrà fatta per tutti e 4 i DB (sqldbrevcomprdscaler, sqldbrevcomprdservices, sqldbrevcomprdinteractive, sqldbrevcomprdicm)

Il processo di restore potrebbe impiegare diverse ore in base alle dimensioni del db.

 

  • Avviare la Vm di Management: cercare la vm di mangement (vm-revcom-mng-drs) e procedere con l'accensione.


  • Accedere al client installato sulla vm di management "Inspire Designer" e procedere con l'autenticazione.


  • Inserire l'ip del server (interactive o scaler) a cui ci si vuole collegare, l'utente (Admin) e la password.


  • Accedere all'ICM explorer per editare il file di configurazione.


  • Cercare il file Interactive/.config/configuration.json



  • Selezionare il file "configuration.json" e selezionare "OPEN IN ASSOCIATED APPLICATION"


  • Editare il file andando a modificare la sezione "Interactive", "Database", "Scaler" andando a inserire i riferimenti all'ambiente DRT o DRS; qui sotto un esempio del file.


{

  "formatVersion" : "1",

  "interactive" : {

    "applicationUrl" : "https://ccmpla-gruppocredem-dtst.dataexpert.it/interactive/",

    "temporaryArchiveExpirationTimeInHours" : 24,

    "enableUserAdministration" : true,

    "enableSystemUserAdministration" : true,

    "enableInspireControl" : false,

    "enableUserActivityTracking" : false,

    "showCookiesInfo" : false,

    "trustedDomains" : [ "localhost", "ccmpla-gruppocredem-dtst.dataexpert.it", "dataexpert.it", "https://ccmpla-gruppocredem-dtst.dataexpert.it/", "172.16.16.69", "172.16.16.37" ],

    "reloadConfigurationFiles" : true,

    "secretKeys" : {

      "1" : "icm://Interactive/.config/salt"

    },

    "availableAuthoringLanguages" : [ ]

  },

  "http" : {

    "xFrameOptions" : "SAMEORIGIN",

    "trustedProxies" : { },

    "contentSecurityPolicy" : {

      "mode" : "ENABLED"

    }

  },

  "database" : {

    "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver",

    "url" : "jdbc:sqlserver://sqlcredemprddrt.credemprddrt.dns:1433;databaseName=sqldbrevcomprdinteractive",

    "userName" : "usrdbrevcomprdinteractive",

    "password" : "SAES1:dff99d85ebe37db3a403754cb1c44d0fbf1a52ab2b91e7fc0fd03b41eadc7aae9b663817b8e145d4b3c009b9eaa500fd5e3d0eb28f4fa345809a9a24c51a9e6401db9735662bb43a",

    "useKerberos" : false,

    "connectionPoolSize" : 40

  },

  "smtp" : {

    "servers" : [ ]

  },

  "automation" : {

    "servers" : [ ]

  },

  "scaler" : {

    "servers" : [ {

      "name" : "Scaler",

      "url" : "https://scaler-gruppocredem-dtst.dataexpert.it/",

      "userName" : "${env.scaler/ii-user}",

      "password" : "${env.scaler/ii-passwd}",

      "failRetryCount" : 3

    } ]

  },

  "elasticSearch" : {

    "type" : "NO"

  },

  "approvalProcess" : {

    "administratorRoles" : [ "00024.CCMPLA.SYSINT" ]

  },

  "webServices" : {

    "secretKey" : "default_secret_key"

  },

  "icm" : {

    "states" : {

      "approvalStates" : {

        "approvalStates" : [ ]

      }

    }

  },

  "timeout" : {

    "privateApi" : {

      "lockingIpPeriodInMillis" : 60000,

      "lockingIpMaxTriesInPeriod" : 1000

    }

  }

}


  • Verificare connessione ai DB: Ripristinando il db importato dalla prodizione, ci potrebbero essere problemi con le utenze in quanto le utenze configurate per l'accesso ai vari DB hanno un SID differente dagli utenti presenti e configurati a livello di system (utenti propri dei server sql utilizzati per il DR). 

Nel caso si verificassero problemi con la connessione al DB, eliminare gli utenti associati al DB e ricrearli.

Per risolvere questo problema alla base ed evitare di doverlo gestire ogni volta che si procede con il restore del db di produzione, sono stati modificati i SID degli utenti a livello system in modo che questi coincidano con il SID dell'utente presente e assegnato ai singoli DB (in questo modo una volta eseguito l'import dei DB dalla produzione, gli utenti e permessi importati coincideranno con gli utenti già presenti in SQL).

 

  • Accendere le istanze dello scaleset: procedere con l'accensione delle istanze delle Virtual machine scale set di interactive e scaler (vmss-revcom-prd-drxx-interactivevmss-revcom-prd-drxx-scaler); il numero delle istanze da avviare dipende dall'ambiente in cui si sta procedendo (per DRT sarà 1 istanza scaler e 1 istanza interactive, per DRS sarà 3 istanze scaler e 1 istanza interactive).

 

 

  • Verificare i servizi Quadient: tramite la vm di management (vm-revcom-mng-drs) raggiungibile al seguente indirizzo ip "172.16.19.4" da rete di Marnate o tramite connessione VPN, collegarsi alle istanze (tramite comandi powershell)

 

az login

az ssh vm --ip xx.xx.xx.xx

 

Verificare che i seguenti servizi siano Running:

[Interactive]

InspireInteractive: sudo systemctl status InspireInteractive.service

InspireProductionServer: sudo systemctl status InspireProductionServer-30354.service

InspireContentManager: sudo systemctl status InspireContentManager-30353.service

[Scaler]

InspireScaler: sudo systemctl status InspireScaler30600.service

InspireProductionServer: sudo systemctl status InspireProductionServer-30354.service

InspireContentManager: sudo systemctl status InspireContentManager-30353.service