負荷分散された自動スケーリング Web サーバー (IIS) を使用して、Amazon EC2 で Web アプリケーションを実行します。
自動スケーリングの前は、デプロイ プロセスはいくつかの大規模なウェブ サーバーへのファイル コピーでした。
現在、自動スケーリングにより、5 から 12 の Web サーバーが自由に現れたり消えたりするため、展開プロセスがより困難になります。
これに対処するために、自動スケーリング グループ内のサーバーの IP を取得し、MSDeploy を使用してそれらを指定された展開サーバー (ロード バランサー内、自動スケーリング グループ外) と同期する、powershell スクリプトを作成しました。次に、新しい AMI を作成し、自動スケーリング構成を更新します。
展開サーバーを再構築した後まで、同期スクリプトは Web サイトの実行状態を更新しません。そのため、サイトをメンテナンス モードにすることができます。
私が知りたいのですが:
他の人が問題にどのようにアプローチするか (具体的には、自動スケーリング ec2 で iis サーバーを同期する) (IIS 8 の WFF がない場合)
同期の開始/停止が失敗する理由
コード:
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
}