Uruchomimy naszą aplikację internetową na Amazon EC2 z równoważonymi obciążeniami, autoskalowanie serwerami WWW (IIS).Synchronizacja serwerów IIS w aws ec2 z najlepszą praktyką autoskalowania
Przed automatycznym skalowaniem nasz proces wdrażania został skopiowany na kilka dużych serwerów internetowych.
Teraz z funkcją autoskalowania mamy od 5 do 12 serwerów sieciowych, które pojawiają się i znikają w dowolnym momencie, co utrudnia proces wdrożenia.
W tym celu napisałem skrypt programu Powerhell, który pobiera adres IP serwerów w grupie automatycznego skalowania i używa MSDeploy do synchronizowania ich z wyznaczonym serwerem wdrażania (w module równoważenia obciążenia, poza grupą autoskalowania). Następnie tworzy nowy AMI i aktualizuje konfigurację automatycznego skalowania.
Wszystko wydawało się dobre, dopóki po przebudowaniu serwera wdrażania skrypt synchronizacji nie zaktualizuje stanu działania witryn sieci Web. Mogę więc wprowadzić stronę w tryb konserwacji.
chciałbym wiedzieć:
jak inni ludzie podejść do problemu (w szczególności synchronizacji serwerów IIS w autoskalowania EC2) (w przypadku braku WFF dla IIS 8)
dlaczego początek/stop synchronizacji zawodzi
Kod:
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
}
jakakolwiek pomoc w docenianiu formatowania. mają kod z wcięciem przez cztery znaki, ale bez radości. – sentece