2014-04-02 6 views
5

부하 분산, 자동 확장 웹 서버 (IIS)를 사용하여 Amazon EC2에서 웹 응용 프로그램을 실행합니다.aws ec2의 IIS 서버와 자동 확장 모범 사례

자동 확장되기 전에는 배포 프로세스가 몇 대의 큰 웹 서버에 파일 복사되었습니다.

이제 자동 크기 조정 기능을 사용하여 5-12 개의 웹 서버 중에서 원하는대로 나타나고 사라지는 웹 서버가 있으므로 배포 프로세스가 더 어려워집니다.

이 문제를 해결하기 위해 자동 확장 그룹의 서버 IP를 검색하고 MSDeploy를 사용하여 지정된 배포 서버 (자동 확장 그룹 외부의 부하 분산 장치)와 동기화하는 스크립트를 작성했습니다. 그런 다음 새 AMI를 만들고 자동 확장 구성을 업데이트합니다.

배포 서버를 다시 빌드 할 때까지는 동기화 스크립트가 웹 사이트의 실행 상태를 업데이트하지 않습니다. 따라서 사이트를 유지 관리 모드로 설정할 수 있습니다.

내가 알고 싶습니다 :

다른 사람들이 문제를 접근하는 방법
  • 가 (IIS 8 WFF의 부재) (특히 EC2를 자동 확장에 IIS 서버를 동기화)

  • 왜 시작/정지 동기화 실패

코드 :

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 
} 
+0

서식에 대한 도움을 주시면 감사하겠습니다. 4 개의 문자로 들여 쓰기 된 코드가 있지만 기쁨은 없습니다. – sentece

답변

4

웹 서버를 "동기화"하지 마십시오. 한 번 설치를 수행하고 배포를위한 도구 부팅을 허용하여 동기화 관리를 고려하십시오.

과거에 내가 한 것은 CloudFormation을 사용하여 환경을 만들고 cfn-init과 cfn-hup을 함께 사용하여 설치를 수행하는 것입니다. 배포 프로세스는 새 패키지를 S3과 같은 곳에 다시 배치 한 다음 CloudFormation을 사용하여 버전을 버리기위한 것입니다.

이렇게하면 cfn-hup 업데이트가 실행되므로 각 서버가 S3에서 패키지를 풀어 다시 설치합니다.

또한 스케일링 그룹이 확장되면 인스턴스를로드 밸런서에 등록하기 전에 cfn-init을 사용하여 패키지를 완전히 풀고 설치하려면 을 자동으로 사용합니다.

여기 유사한 StackOverflow의 질문의 몇

AWS - Automatic deployment (.NET) to CloudFormation stack

  • Installing Windows applications/extensions with Amazon CloudFormation
  • Amazon EC2: load balancing/way to sync files/EC2 + CF
  • 또한 나는

    ,617을에 대해 많은 달 전에이 개 기사를 썼다
  • http://blog.kloud.com.au/2013/08/19/bootstrap-update/
  • 이 충분히 제공해야

    +0

    나는 조금 두려워 해요! 나는이 모든 것이 무엇을 의미 하는지를 알게 될 것이며, 가능한 한 빨리 다시보고 할 것이다. 하지만 고마워! – sentece

    +0

    트릭은 시작 서버를 사용하여 파일을 중앙 위치 (예 : - S3)에서 * 잡아 당기는 것에 대해 생각하는 것입니다. cfn-init은 시작하기 위해 필요한 구성 요소를 사용하여 서버를 부트 스트랩하고 변경 사항을 모니터링하는 cfn-hup을 시작하는 데 사용됩니다. 변경 사항이 감지되면 새로운 작업을 수행합니다. –

    +0

    감사합니다. 훌륭한 답변입니다. 나는 그것을 구현하지는 못했지만 다음에 나는 이렇게 할 것이다. 나는 모에 대한 나의 원래 문제를 해결했다. – sentece