Eseguiamo la nostra applicazione Web su Amazon EC2 con server Web (IIS) con bilanciamento del carico e scalabilità automatica.Sincronizzazione dei server IIS in aws ec2 con best practice per la scalabilità automatica
Prima autoscaling, il nostro processo di distribuzione è stato di copia dei file per un paio di grandi server web.
Ora con autoscaling abbiamo qualcosa da 5 a 12 server web che appaiono e scompaiono a volontà, rendendo il processo di distribuzione più difficile.
Per risolvere questo problema, ho scritto uno script PowerShell che recupera l'IP del server in un gruppo autoscaling e usa MSDeploy sincronizzarli con un server di distribuzione designato (nel bilanciamento del carico, al di fuori del gruppo autoscaling). Quindi crea una nuova AMI e aggiorna la configurazione di scalabilità automatica.
Tutto sembrava essere buono, fino a dopo la ricostruzione del server di distribuzione, lo script di sincronizzazione non aggiorna lo stato di esecuzione dei siti web. Quindi posso mettere il sito in modalità di manutenzione.
Vorrei sapere:
come altre persone affrontano il problema (in particolare la sincronizzazione server IIS in autoscaling EC2) (in assenza di WFF per IIS 8)
perché l'inizio/arresto di sincronizzazione sta fallendo
Codice:
Set-AWSCredentials -AccessKey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SecretKey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Set-DefaultAWSRegion "us-west-2"
$date = get-date
$dateString = $date.ToString("yyyyMMdd-HHmm")
$name = $dateString + "Web"
$imageId = new-ec2image -InstanceId x-xxxxxxxx -Name $name -NoReboot 1
$launchConfiguration = New-ASLaunchConfiguration -LaunchConfigurationName $name -ImageId $imageId -InstanceType "m3.medium" -SecurityGroups @('Web') -InstanceMonitoring_Enabled $false
Update-AsAutoScalingGroup -AutoScalingGroupName "XxxxxxxxxxxxXxxxxxxxxx" -LaunchConfigurationName $name
$a = Get-ASAutoScalingInstance | select -expandproperty InstanceId | Get-EC2Instance | select -expandproperty RunningInstance | select -property PrivateIpAddress
foreach($ip in $a)
{
$command = "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe"
$arg = "-dest:webServer,computerName=" + $ip.PrivateIpAddress;
$args = @('-verb:sync', '-source:webServer', $arg)
&$command $args
}
qualsiasi aiuto sulla formattazione apprezzato. avere codice rientrato di quattro caratteri ma nessuna gioia. – sentece