6

負荷分散された自動スケーリング 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
}
4

1 に答える 1

5

Web サーバーを「同期」しようとしないでください。1 回限りのインストールを実行することを検討してください。また、ツールの起動を許可して、同期を管理します。

私が過去に行ったことは、CloudFormation を使用して環境を作成し、cfn-init と cfn-hup を組み合わせてインストールを行うことでした。その後、デプロイ プロセスは、新しいパッケージを S3 などの場所に再デプロイし、CloudFormation を使用してバージョンを上げるケースになります。

これにより cfn-hup 更新がトリガーされ、各サーバーが S3 からパッケージを取得して再インストールします。

また、スケーリング グループがスケーリングする場合、インスタンスをロード バランサーに登録する前に、自動的に cfn-init を使用してパッケージをプルダウンおよびインストールします。

ここにいくつかの同様の StackOverflow の質問があります

また、私はそれについて何ヶ月も前に2つの記事を書きました

これで、十分に作業を進めることができます。

于 2014-04-02T17:57:43.987 に答える