인스턴스 수가 정의 된 XML 파일을 프로그래밍 방식으로 변경하는 가장 좋은 방법은 무엇입니까? 나는 이것이 Windows Azure API를위한 csmanage.exe로 어떻게 든 가능하다는 것을 안다. 실제로 어떤 Worker Role VM이 실제로 작동하는지 측정 할 수 있습니까? 나는 MSDN 커뮤니티 포럼에서도이 질문을 던졌습니다 : http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/02ae7321-11df-45a7-95d1-bfea402c5db1XML 파일을 통한 Azure 확장 성
답변
구성을 수정하려면 PowerShell Azure Cmdlets을 참조하십시오. 이것은 정말로 작업을 단순화합니다. 까지로 실제로 시스템 부하 및 처리량을 모니터링, 지금
$cert = Get-Item cert:\CurrentUser\My\<YourCertThumbprint>
$sub = "<YourAzureSubscriptionId>"
$servicename = '<YourAzureServiceName>'
Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub |
Get-Deployment -Slot Production |
Set-DeploymentConfiguration {$_.RolesConfiguration["WebRole1"].InstanceCount += 1}
: 예를 들어, 여기에 1 생산에 'WebRole1'의 인스턴스의 수를 증가시키기위한 PowerShell을 조각의 당신은 푸른 API 호출의 조합이 필요합니다 성능 카운터 데이터. 예를 들어 현재 Azure 대기열에있는 메시지 수를 요청할 수 있습니다.
http://yourstorageaccount.queue.core.windows.net/myqueue?comp=metadata
특정 성능 카운터를 캡처하도록 역할을 설정할 수도 있습니다. 예를 들어 :
public override bool OnStart()
{
var diagObj= DiagnosticMonitor.GetDefaultInitialConfiguration();
AddPerfCounter(diagObj,@"\Processor(*)\% Processor Time",60.0);
AddPerfCounter(diagObj, @"\ASP.NET Applications(*)\Request Execution Time", 60.0);
AddPerfCounter(diagObj,@"\ASP.NET Applications(*)\Requests Executing", 60.0);
AddPerfCounter(diagObj, @"\ASP.NET Applications(*)\Requests/Sec", 60.0);
//Set the service to transfer logs every minute to the storage account
diagObj.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(1.0);
//Start Diagnostics Monitor with the new storage account configuration
DiagnosticMonitor.Start("DiagnosticsConnectionString",diagObj);
}
그래서이 코드가 각각의 역할 인스턴스에 로컬 스토리지에 몇 가지 성능 카운터를 캡처하는 경우, 그 값이 테이블 스토리지에 전송되는 모든 분.
트릭은 이제 이러한 값을 검색하고 구문 분석하고 평가 한 다음 이에 따라 역할 인스턴스를 조정하는 것이 트릭입니다. Azure API를 사용하면 테이블 저장소에서 성능 카운터를 쉽게 가져올 수 있습니다. 그러나 구문 분석 및 평가에 시간을 할애해야합니다.
MSDN 코드 사이트에서 Azure Dynamic Scaling Example을 볼 것을 제안합니다. 당신이
- 데모 라인의 비즈니스 응용 프로그램은 WCF 서비스
- 속도로 서비스에 메시지를 밀어 부하 생성 도구를 호스팅 :이 제공하는 좋은 예입니다 - 모니터링 웹 UI
- 로컬 또는 Azure 역할에서 실행할 수있는 확장 엔진.
주의 깊게 살펴보고 싶은 마지막 항목입니다. 임계 값을 기반으로 성능 카운터 데이터와 대기열 길이 데이터를 임계 값과 비교합니다. 그런 다음 비교를 기반으로 인스턴스를 위아래로 조정합니다.
이 엔진을 사용하지 않아도 테이블 저장소에서 데이터를 가져 와서 마사지하고 인스턴스 변경을 유도하는 방법을 확인할 수 있습니다.
부하를 정량화하는 것은 실제로 매우 특정한 애플리케이션입니다. 특히 작업자 역할을 통해 생각할 때 더욱 그렇습니다. 예를 들어 대규모 병렬 처리 응용 프로그램을 수행하는 경우 기대되는/기대되는 동작은 전반적으로 100 % CPU 사용률이되며 '규모 결정'은 작업 대기열의 증가 또는 감소 여부에 따라 달라질 수 있습니다.
결정을 더욱 복잡하게 만드는 것은 Role Instance Count 증가, Load Balancer 조인 및/또는로드 밸런서에서의 삭제와 같은 다양한 단계의 지연 시간입니다. 커브를 "쫓고"끊임없이 위아래에 휘젓는 상황에 들어가는 것은 매우 쉽습니다.
특정 VM에 대한 특정 질문에 대해서는 역할 정의의 모든 VM이 동일하기 때문에 단일 VM을 측정해야합니다 (VM 개수가 1 인 배포가 시작되지 않는 한). 실제로 모든 VM이 로드 밸런서 및/또는 동일한 대기열에서 가져 오는 중입니다. 모든 변동은 일시적이어야합니다.
내 권장 사항은 본질적으로 모니터링 할 수없는 변수 (예 : CPU)를 선택하는 것입니다. 일반적으로 트렌드 포인트를 찾고 싶습니다. 웹 응용 프로그램의 경우 응답 대기열 일 수도 있고 병렬 응용 프로그램의 경우 대기열 깊이 등일 수도 있습니다.하지만 절대 수는 아니고 경향 일 것입니다. 나는 또한 상당히 넓은 간격으로 측정을 제안 할 것이다. 로드가 발생하면 몇 초 만에 응답해야하며, 실제로 실행중인 인스턴스 수를 미리 늘려야합니다.
첫 번째 질문과 관련하여 Autoscaling Application Block을 사용하면 미리 정의 된 규칙 집합을 기반으로 인스턴스 수를 동적으로 변경할 수 있습니다.
- 1. 지연 성 소켓 - 확장 성?
- 2. Oracle Forms의 확장 성
- 3. Ext4의 확장 성
- 4. 오픈 소스없는 확장 성
- 5. IIS 확장 성
- 6. 이벤트 처리기와 확장 성
- 7. 확장 성 Boost.Asio
- 8. Mochiweb의 확장 성 기능
- 9. aho corasick의 확장 성
- 10. 파일 시스템 확장 성 옵션
- 11. SaaS 확장 성 - Tomcat은 확장 성이 충분합니까?
- 12. 클라이언트 - 서버 통신의 확장 성; XML v 직렬화 된 바이너리
- 13. .NET : 일반 사전의 확장 성
- 14. System.AddIn을 사용하여 관리되는 확장 성
- 15. 높은 확장 성 기술 스택
- 16. 확장 성 분석 자료 읽기?
- 17. Visual Studio 확장 성/마진
- 18. ASP.NET SqlMembership Provider 확장 성
- 19. Xml 파일을 통한 동적 경로 생성
- 20. (Windows Azure) 메시지 대기열 - 여러 대의 컴퓨터를 통한 이벤트 처리
- 21. 큰 XML 파일을 읽는 확장 응용 프로그램
- 22. 확장 메서드를 통한 디버그
- 23. IIS 관리자 확장 성 - 컬렉션 편집
- 24. simpledb, sql azure, mysql + memcached
- 25. 웹 서비스를 통한 XML
- 26. Azure 작업자 역할에서 HTTP를 통한 WCF 서비스?
- 27. 변환 클래스 확장 성 (확장 메서드와 Parital 클래스)
- 28. 그래프 알고리즘 - 확장 성 향상을 찾고 있습니다.
- 29. 디자이너 지원을위한 확장 성 DLL 사용 방법
- 30. Linq to SQL 확장 성 방법 정의
감사합니다. 따라서 인스턴스 수를 빠르게 늘릴 수 있습니다. 그러나 : 인스턴스의로드를 "계량화"하여 인스턴스의 수를 프로그램 적으로 변경할 수 있으므로 "수동 간섭"이 필요하지 않습니다. – dayscott
방금 추가 한 정보가 당신의 탐구에 도움이되기를 바랍니다. Powershell cmdlet 샘플 자체만으로도 필요한 위치에 실제로 도달하지 못한다는 것을 알게되었습니다. –