2015-01-07 3 views
4

나는 하나의 작업자 역할과 하나의 웹 역할로 구성된 푸른 구름 서비스 프로젝트를 운영하고 있습니다. 준비 및 라이브 배포가 모두 필요하지만 작업자 역할이 웹 응용 프로그램에서보고하는 많은 데이터를 생성하고 프로덕션 환경에서 테스트 데이터를 원하지 않기 때문에 다른 연결 문자열을 사용해야합니다.연결 문자열 관리 Azure 클라우드 서비스 배포

스테이징에서 라이브로 빠르게 전환하거나 홍보 할 수 있도록 구성하는 가장 좋은 방법은 무엇이며 다른 구성을 사용하여 Visual Studio에서 재 게시하지 않고도 연결 문자열을 업데이트 할 수 있습니다.

+0

요구 사항에 대해 확실하지 않습니다. 그러나 AZURE에서 사용할 수있는 VIP 스왑 옵션에 대해 알고 싶습니다. – AK47

+0

예 그렇지만 준비 데이터베이스를 사후 스왑 또는 동일한 데이터베이스를 가리 키도록 만들면됩니다. 나도 원하지 않아. –

+0

혼란 스러워요. 준비 작업자 역할로 데이터베이스를 실행하고 있습니까? 또는 스테이징을 말할 때, 생산 슬롯으로 바꿀 수있는 특별한 스테이징 환경 또는 Azure의 스테이징 슬롯을 의미합니까? – Igorek

답변

0

내가 아는 한 자동화 된 도구는 없습니다. 교체 할 때 구성도 바뀝니다. 내가 이해하는 바로는 configs를 바꾸지 않고 응용 프로그램 만 바꾸고 싶다는 것입니다.

관리 API에 연결하고 원하는 방식으로 스왑하는 자체 스왑 도구를 만들어야 할 수도 있습니다.

+0

스와핑 툴을 구축 할 시간을 누가 지불 할 것인지를 주님은 알고 있습니다. 감사. –

+0

동의합니다. 스와핑 할 때 대체 구성 파일을 지정할 방법이 없습니다. 이것은이 기능에 대한 매우 열악한 접근법입니다. –

1

Azure Management REST API를 호출하고 연결 문자열을 변경하는 PowerShell 스크립트를 작성할 수 있습니다.

$restEndpoint = "https://management.core.windows.net/$subscriptionId/services/webspaces/$webspace/sites/$website/slotConfigNames" 

    $appSettings = $appSettingNames -replace ",", "','" 
    $connectionStrings = $connectionStringNames -replace ",", """,""" 
    $payload = "{""AppSettingNames"": [""$appSettingNames""], ""ConnectionStringNames"": [""$connectionStrings""]}" 

    Invoke-WebRequest -Uri $restEndpoint -Body $payload -CertificateThumbprint $certThumbprint -ContentType "application/json" -Headers @{ "x-ms-version" = "2014-04-01" } -Method POST 
+1

흥미 롭다면, 나는 이것에 대해 자세히 살펴보고, 많은 파워 쉘 스크립팅을하지는 않았지만, 이것은 꽤 기초적이고 자명 해 보인다.감사합니다 –

0

다른 사람들이 지적했듯이이있다 (웹 역할/작업자 역할) 푸른 클라우드 서비스의 현재 세대에 존재하는 VIP 스왑/슬롯 스왑 개념의 알려진 제한.

다른 해결 방법은 OnRoleStart 이벤트 처리기를 사용하고 custom code to inspect slot을 쓰고 실행중인 구성을 업데이트하는 것입니다.

이런 종류의 문제를 해결 한 방법은 가능한 한 많은 구성을 로컬 구성에서 원격 구성 데이터베이스로 이동 한 다음 구성 원본으로 사용하는 것입니다. web.config config 섹션이 일부 인스턴스에서 작동하는 방식을 고려할 때 이것이 항상 가능한 것은 아닙니다.

0

주먹을 이해하게하겠습니다. 두 개의 DB (테스트 및 라이브)와 두 개의 환경 (준비 및 프로덕션 CS)이 있습니다.

내가 맞으면 아래 내용을 읽어주십시오.

web.config (StagingConStr 및 ProductionCOnStr)에는 두 개의 연결 문자열 집합이 있어야합니다. 호스트 (livesite.cloudapp.net 또는 stagingsite.cloudapp.net)를 기반으로하면 라이브 또는 준비 중이라는 것을 감지 할 수 있습니다. 탐지에 따라 다른 연결 문자열을 사용할 수 있습니다.

호프가 도움이 되길 바랍니다 ...

+1

어떤 슬롯에 있는지 감지하고 적절한 설정을 사용하는 것은 분명히 응용 프로그램의 작업이 아닙니다. 대신 Azure 팀은이를 수행하는 올바른 방법을 제공해야합니다. 아마도 스와핑하는 동안 구성 파일을 요청하십시오. –