2017-02-07 5 views
2

Azure App Service에서 흥미로운 행동을 보았습니다. 누군가가 충분히 의견을 말할 수 있기를 바랍니다. (모든 푸른 단계가 포털에서 수행 할 수 있습니다)Azure App-Service Swap이 소스와 대상 사이에서 "튀어 오름"

생식 단계 :

  • 는 응용 프로그램 서비스의 새로운 웹 응용 프로그램 만들기, 예를 들어, (표준 가격 수준, 단일 인스턴스는 괜찮습니다) 해당 응용 프로그램에 대한 mysite
  • Create a new staging slotmysite-staging
  • 배포 내용 //ONE
  • 배포 파일/스크립트/테스트와 mysite-staging에 빈약 ASP.NET 응용 프로그램이있는 파일 /scripts/test.js와 mysite에 빈약 ASP.NET 응용 프로그램 내용을 가지고의 .js는 //TWO 스왑 시작 직후
  • Swap the deployment slots
  • , mysite.azurewebsites.net/scripts/test.js로 이동
를 (계속해서 브라우저에서 강제로 새로 고침을 수행하여) 스왑 작업 중 반환 된 콘텐츠를 모니터링

내가 볼 기대 일 : 스왑 동안 어떤 점에서

  • , 내용이 변경 원활/일관성/비가 역적 //ONE에서 실제로 볼 무엇 //TWO

에 :

  • 스왑 작업 중에 //ONE//TWO 사이의 내용이 "깜박입니다"/ "튀어 오릅니다". 스왑 작업이 완료되면, 동작은 안정적이고 //TWO 지속적으로 관찰 된 행동이 모든 트래픽이 새 버전으로 갈라고 할 수있는 시간에 단일 지점이 없다는 것을 시사

반환됩니다. 사용자는이 "수신 거부"단계에서, 페이지의 'V2'버전으로 응답, 페이지 mysite.azurewebsites.net를 요청

  • :

    이 저를 우려하는 이유는 다음과 같은 시나리오 CDN 호스트 스크립트에 대한 링크 mycdn.com/scripts/test.js?v2 (?v2은 새 쿼리 문자열입니다.)

  • 브라우저는 CDN에서 스크립트를 요청하여에서 스크립트를 요청합니다. 이번에는 "수신 거부"가 응답을 스크립트의 v1 버전으로 만듭니다.
  • 이제 우리는 그 지역에있는 모든 사용자가 페이지의 V2 버전으로로드 할 CDN에 캐시 스크립트의 V1 버전이

내 질문이 "수신 거부"동작 중입니다 "설계 상"스왑 작업? 그렇다면 위의 병리 적 사례를 해결하기위한 권장 접근법은 무엇입니까?

답변

2

설명 된 동작은 현재 의도적으로 설계된 것입니다.스왑을 수행 할 때 데이터베이스의 호스트 이름과 사이트 간의 매핑을 업데이트하지만 프론트 엔드 인스턴스는 해당 매핑을 캐싱하고 30 초마다 새로 고칩니다. 그래서 "튀는"기간은 30 초까지 지속될 수 있습니다.

지금은 사례를 해결하는 방법에 대한 좋은 권고는 없지만이를 해결할 수있는 방법을 모색 할 것입니다.

+0

"컴퓨터 무효화에는 캐시 무효화 및 명명 작업이 두 가지 있습니다."(Phil Karlton). 스왑 작업과 같은 소리는 프론트 엔드 인스턴스의 캐시 항목을 무효화해야합니다. 나는 너희들이 성취하기에는 이것이 사소한 것이 아니라고 생각한다. 필자의 경우 CDN이 올바른 내용을 담고 있는지 확신 할 수 있도록 스왑 작업이 완료된 후 직접 CDN 내용을 제거하는 방법이 있습니다. – sammy34