IIS에서 다운 타임 업로드 / 롤백 없음 확실하지 않지만 기본적으로 내가하고 싶은

이것이이 질문을하는 올바른 방법인지 확실하지 않지만 기본적으로 내가하고 싶은 일이 있습니다.

1.) IIS의 사이트로 변경 세트를 푸시하십시오.
2.) 사용자를 방해하지 마십시오.
3.) 쉽게 롤백 할 수 있어야합니다.

따라서 내가 알아야 할 몇 가지 사항이 있습니다.

1.) Out of Proc 세션-처리
2.) Out-Proc 캐시-처리

따라서 남아있는 질문 :
1.) 어떻게 사용자를 방해하지 못하게합니까? 파일을 휴지통에 업로드하면 앱이 재활용되고 온라인으로 돌아 오는 데 10 초 이상 걸립니다
. 2) 어떻게 쉽게 롤백 할 수 있습니까?

가능한 해결책은 IIS에 두 개의 사이트 (공용 사이트와 개인 사이트)를 설치하는 것입니다. 업로드는 비공개로 이동하여 예열됩니다. 예열 후 사이트가 교체됩니다. 롤백에는 업로드없이 개인용으로 만 스와핑하는 것이 수반됩니다.

이론적으로는 들리는 것처럼 보이지만 역학을 잘 모르겠습니다. 어떤 아이디어?



답변

여기에 내가이 문제에 접근하는 방법이 있습니다-전에 이것을하지 않았다는 것을 명심하십시오. 개발 환경에서 약간 테스트 한 개념 일뿐입니다. 선택한 언어로이 스크립트와 일부 스크립팅을 사용하여 매우 강력한 프레임 워크를 설정할 수 있어야합니다. 기본적으로 빈 공간로드 밸런싱 환경을 설정하고이를 사용하여 새 사이트와 이전 사이트 사이를 전환합니다.

설정하려면 다음이 필요합니다.

시작할 ARR을 설치하십시오.

IIS에서 3 개의 웹 사이트를 설정하십시오.

  • 웹 사이트 1은 사용자가 실제로 연결하는 사이트 http://192.168.1.1/입니다. 이것은 또한 ARR 사이트입니다. 이것을 가리 키기 위해 빈 디렉토리를 설정하고 자체 앱 풀에 넣으십시오. 이 지침 에 따라 앱 풀이 시간 초과되지 않도록 설정하십시오 .
  • 웹 사이트 2와 3은 실제로 콘텐츠를 호스팅하는 사이트입니다. 이러한 필요가 자신의 IP를에하고 ARR 웹 사이트 1보다 다른 포트에서의 작동 방식에 의한 것은 그들이 말할 수 있습니다합니다 http://192.168.1.2:8080http://192.168.1.3:8080. 또한 자체 응용 프로그램 풀에 있어야하며 파일 시스템의 다른 디렉토리를 가리켜 야합니다 (그러나 두 디렉토리는 일반적으로 동일한 내용을 가짐)

ARR을 설치하면 IIS 관리자에 “서버 팜”이라는 새 범주가 생깁니다. 마우스 오른쪽 단추를 클릭하고 새 팜을 만듭니다.

  • 당신에게 의미있는 이름을 줘
  • 웹 서버 2 및 웹 서버 3을 서버로 추가- “고급 설정”단추를 클릭하고 “applicationRequestRouting”범주를 열고 각 서버에 대해 httpPort를 8080으로 변경하십시오
  • 마법사를 마칩니다-URL 다시 쓰기 규칙을 작성할 것인지 묻는 메시지가 표시됩니다. 예를 클릭하십시오.
  • 이제 서버 팜이 있습니다. 구성을 마치려면 팜으로 이동하여 프록시 구성 버튼을 클릭하십시오. “응답 헤더에서 호스트 다시 쓰기 호스트”를 켜고 변경 사항을 적용하십시오.
  • IIS 관리자에서 루트 수준 서버 범주로 이동하여 URL 다시 쓰기 단추를 클릭하면 팜에 대해 만들어진 규칙이 있습니다.
    • 규칙을 두 번 클릭하여 설정으로 이동
    • 조건 상자를 엽니 다
    • {SERVER_PORT}8080과 일치하지 않는 새 조건을 추가하십시오.
    • 변경 사항을 적용하십시오

이 시점에서 귀하의 요청을 수행하는 데 필요한 기본 사항이 있습니다. 당신이 가면 http://192.168.1.1/웹 사이트 1 또는 웹 사이트 2에서 웹 사이트를 얻을 수 있지만 다른 사이트가 있다는 것은 완벽합니다.

이제 새 버전의 응용 프로그램을 배포하려는 경우 수행 할 수있는 작업은 다음과 같습니다.

  • 팜에있는 서버의 drainstop 1 (서버 팜 도구에서 “모니터링 및 관리”로 이동하여 서버를 선택한 후 “서버를 정상적으로 사용할 수 없음”선택)
  • 새 버전의 사이트를 오프라인 인 시스템에 배포
  • 대체 IP / 포트를 사용하여 오프라인 상태 인 사이트 예열
  • 팜에서 사이트를 다시 사용할 수 있도록 설정
  • 다른 서버에 대해 프로세스를 반복하십시오

웹 배포 도구는이 모든 것을 스크립팅하려는 것에 대해 이야기 할 때 작동합니다. 응용 프로그램 용 패키지를 작성하고 명령 줄에서 배포하기가 매우 쉽습니다. 문제가있는 경우 해당 패키지를 쉽게 롤백 할 수도 있습니다. ARR은Microsoft.Web.Administration dll을 사용하여 스크립트 가능 합니다 .

또 다른 한 가지-실제로 Windows 2008 R2 (IIS 7.5)를 사용하는 경우 응용 프로그램 예열 모듈을 살펴보십시오 . 예열 부분도 더 편해집니다.


답변

MattB가 물에서 떨어졌습니다. +1 더 자세한 내용으로 답장을 보내지 만 그의 요점은 밝히지 않겠습니다. 그가 한 말을 덧붙이겠습니다.

나는 그가 설명한 것과 비슷한 설정을 가지고 있으며 훌륭하게 작동합니다. 단일 서버에서도 ARR을 사용할 수 있습니다.

그러나 몇 가지 추가 할 것입니다.

Matt가 권장하는대로 2 개의 사이트를 작성하십시오. yoursite.com01 및 yoursite.com02와 같은 것을 호출하십시오.

2 개의 URL 재 작성 규칙을 작성하십시오. 하나는 www.yourdomain.com을위한 것이고 다른 하나는 staging.yourdomain.com을위한 것입니다. 프로덕션에는 {^ www.yourdomain.com $) | (yourIP) 값으로 {HTTP_HOST}를 사용하십시오. (또는 원하는 바인딩) 스테이징에는 {^ _staging.yourdomain.com $) 값으로 {HTTP_HOST}를 사용하십시오. yoursite.com 및 staging.yoursite.com 규칙을 호출하십시오.

Rule = yoursite.com을 site = yoursite.com01에 바인딩하고 rule = staging.yoursite.com을 site = yoursite.com02에 바인딩하십시오.

staging.yoursite.com에서 FTP를 설정하십시오.

프로덕션 트래픽은 이제 Rule = staging.yoursite.com 및 Site = yoursite.com01로 이동합니다. 반대쪽에 막힘.

언제든지 스테이징에 배포, 테스트, 사전 스핀 업, 다른 사람에게 테스트 등을 할 수 있습니다. 낮에는 수행해도 상관 없습니다. 매번 동일한 FTP 계정에 배포하십시오. 빌드 서버와 잘 작동합니다.

그런 다음 라이브로 전환 할 준비가되면 다음과 같이 3 가지만 변경하십시오.-FTP 바인딩을 yoursite.com02에서 yoursite.com01로 이동-URL 다시 쓰기 규칙 yoursite.com이 yoursite.com02를 가리 키도록 변경-URL 다시 쓰기 규칙 준비 변경 yoursite.com이 yoursite.com01을 가리 키도록

이제 즉각적인 롤백 기능으로 다운 타임없이 즉각적으로 전환 할 수 있습니다!

유일하게 고려해야 할 것은 프로세스가 아닌 세션 상태입니다. 스왑 중에 세션 상태를 잃지 않도록 상태 서버가 두 사이트 ID를 모두 허용하는지 확인하십시오.

또한 이것은 웹 전용이며 데이터베이스는 아닙니다.

스크립팅의 경우 구성 편집기를 사용하십시오. 원하는대로 변경 한 다음 “스크립트 생성”을 클릭하십시오. C #, appcmd 또는 AHAdmin 코드를 제공합니다.

인스턴스를 교체하기 위해 웹 페이지 프런트 엔드를 사용하여 몇 개월 동안이 위치를 유지했으며 결코 뒤돌아 보지 않았습니다. 기존 배포에 비해 배포가 매우 상쾌합니다.


답변