Umbraco의 Keepalive Ping 구성 설명

8382 단어 umbracodotnetaspnet
Umbraco 8.6.0이 출시됨에 따라 내장된 Keepalive 행위pull request #7164를 설정하는 방법이 생겼다.새로운 keepAlive 노드는 umbracoSettings.config에서 찾을 수 있으며 두 가지 속성이 있습니다.

  • keepAlivePingUrl: Ping의 URL을 변경하여 Umbraco 인스턴스를 활성화합니다.기본값은 "{umbracoApplicationUrl}/api/keepalive/ping"입니다.

  • disableKeepAliveTask: KeepAlive time interval 작업을true로 설정하여 작업을 비활성화합니다.기본값은 false입니다.
  • 바로 사용할 수 있는 구성은 다음과 같습니다.
    <?xml version="1.0" encoding="utf-8" ?>
    <settings>
      ...
      <!--
      keepAlive
        @disableKeepAliveTask
          Disables the periodic KeepAliveTask when set to "true".
          Use this setting to disable the KeepAliveTask in case you already have an alternative.
          For example, Azure App Service has keep alive functionality built-in.
          Defaults to "false".
        @keepAlivePingUrl
          The url of the KeepAlivePing action. By default, the url will use the umbracoApplicationUrl setting as the basis.
          Change this setting to specify an alternative url to reach the KeepAlivePing action. eg http://localhost/umbraco/api/keepalive/ping
          Defaults to "{umbracoApplicationUrl}/api/keepalive/ping".
      -->
      <keepAlive disableKeepAliveTask="false" keepAlivePingUrl="{umbracoApplicationUrl}/api/keepalive/ping" />
    </settings>
    
    새 구성에서는 다음 두 가지 문제를 해결할 수 있습니다.

    1. URL이 올바르지 않아 KeepAlive가 작동하지 않습니다(404)

    문제.
    다음은 KeepAlive 기능을 기본 구성과 함께 사용하는 방법입니다.
  • 명시적으로 설정되지 않은 경우UmbracoApplicationUrl Umbraco에 보내는 첫 번째 요청은 이 요청을 보내는 FQDN URL을 Umbraco Application Url로 채웁니다.
  • 타이밍 계획에서 ApplicationUrlpingKeepAlive 컨트롤러의 기본 URL로 사용됩니다.URL은 다음과 같습니다. {umbracoApplicationUrl}/api/keepalive/ping
  • OnlyLocalRequests 속성 검증KeepAliveController.Ping 작업에 대한 요청이 로컬 컴퓨터에서 왔는지 확인합니다.
    요청이 로컬 시스템에서 실행되지 않으면 Umbraco는 HTTP 404 응답을 반환합니다.
  • KeepAliveController.Ping 작업은 요청을 수신하고 다음 XML을 반환합니다.
  • <KeepAlivePingResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Umbraco.Web.Editors">
        <Message>I'm alive!</Message>
        <Success>true</Success>
    </KeepAlivePingResult>
    
    이것은 간단한 과정이지만 핑의 URL이 Only Local Requests 속성의 요구에 따라 로컬 기기로 해석될 것이라고 보장할 수 없습니다.ApplicationUrl가 공공 도메인 a로 해석되지만 개인 도메인 B&C를 가진 두 서버 사이의 부하 균형을 요청하면 어떻게 합니까?
  • umbraco 어플리케이션 URL은 유지https://domain-A.tld/umbraco
  • KeepAlive 타이머 작업은 Pinghttps://domain-A.tld/umbraco/api/keepalive/ping
  • domain-A.tld는 부하 평형기의 공공 IP로 해석되고 HTTP 요청은 이 IP로 발송됩니다.
  • OnlyLocalRequests 속성은 HTTP 요청을 거부하고 HTTP 404 응답
  • 으로 돌아갑니다.
  • KeepAlive 작업은 404 응답
  • 을 기록합니다.
    참고 1: 로그에 404개의 오류가 발생하더라도 Keepalive 기능은 여전히 "약간"유효합니다.Umbraco 인스턴스 또는 ASP의 경우NET 웹 사이트는 정기적으로 업데이트됩니다.
    주2: 대부분의 부하 균형기는 이미 내장된 건강 검사 기능을 가지고 있으며, HTTP를 사용하여 사이트가 시작되고 실행되었는지 검사할 수 있다.이러한 요청은 웹 사이트를 활기차게 하고 KeepAlive 기능을 불필요하게 만들 것이다.
    자체 위탁 관리 IIS 웹 서버를 사용할 때 내부 DNS 기록을 추가하여 이 문제를 쉽게 해결할 수 있습니다. 이 기록들은 공공 영역을localhost로 해석합니다.그러나 많은 위탁 관리 플랫폼들이 같은 수준의 제어와 맞춤형 제작을 제공하지 않는다.Azure 응용 프로그램 서비스는 바로 이런 상황입니다. 위와 완전히 같은 문제에 부딪힐 수 있습니다. 단, 응용 프로그램 서비스에서localhost 80 또는 443을 요청할 수 없습니다.

    솔루션
    새 keepAlive 설정을 사용하면 keepAlivePingUrl 파일의 keepAlive 노드의 umbracoSettings.config 속성을 사용하여 핑할 URL을 설정할 수 있습니다.
    부하 균형 장면에서 localhost로 해석된 정확한 내부 도메인 이름 설정 keepAlivePingUrl 을 사용하거나 IIS 귀속이 다음 내용을 지원할 경우 localhost를 간단하게 사용할 수 있습니다.
    <?xml version="1.0" encoding="utf-8" ?>
    <settings>
      ...
      <!--
      keepAlive
        @disableKeepAliveTask
          Disables the periodic KeepAliveTask when set to "true".
          Use this setting to disable the KeepAliveTask in case you already have an alternative.
          For example, Azure App Service has keep alive functionality built-in.
          Defaults to "false".
        @keepAlivePingUrl
          The url of the KeepAlivePing action. By default, the url will use the umbracoApplicationUrl setting as the basis.
          Change this setting to specify an alternative url to reach the KeepAlivePing action. eg http://localhost/umbraco/api/keepalive/ping
          Defaults to "{umbracoApplicationUrl}/api/keepalive/ping".
      -->
      <!-- For Web Server A -->
      <keepAlive disableKeepAliveTask="false" keepAlivePingUrl="https://[INTERNAL_DOMAIN_NAME_A]/api/keepalive/ping" />
    </settings>
    
    불행하게도 Azure App Services에서 호스팅되는 Umbraco 인스턴스에 localhost를 지정하는 것은 작동하지 않습니다.Azure 애플리케이션 서비스에서는 localhost 80 또는 443을 요청할 수 없습니다.다행히도, Azure 응용 프로그램은 이미 자신의 보존 기능을 가지고 있다.

    2. 중복 보존 기능
    많은 플랫폼들이 Azure 응용 프로그램 서비스, 많은 부하 균형기, 역 프록시 등 자신만의 Keepalive 행위를 제공했다.새 구성 옵션 중 하나를 사용하여 Umbraco의 Keepalive 기능을 비활성화할 수 있습니다.KeepAlive 기능을 비활성화하려면 disableKeepAliveTask에서 false로 변경합니다.
    <?xml version="1.0" encoding="utf-8" ?>
    <settings>
      ...
      <!--
      keepAlive
        @disableKeepAliveTask
          Disables the periodic KeepAliveTask when set to "true".
          Use this setting to disable the KeepAliveTask in case you already have an alternative.
          For example, Azure App Service has keep alive functionality built-in.
          Defaults to "false".
        @keepAlivePingUrl
          The url of the KeepAlivePing action. By default, the url will use the umbracoApplicationUrl setting as the basis.
          Change this setting to specify an alternative url to reach the KeepAlivePing action. eg http://localhost/umbraco/api/keepalive/ping
          Defaults to "{umbracoApplicationUrl}/api/keepalive/ping".
      -->
      <!-- For Web Server A -->
      <keepAlive disableKeepAliveTask="true" />
    </settings>
    
    이제 Umbraco의 Keepalive 작업이 비활성화되었으므로 대체 스키마가 활성화되었는지 확인하십시오.Azure 응용 프로그램 서비스의 경우 응용 프로그램 서비스의 일반 설정에서 "항상 열기"를 사용하십시오.

    TL;박사 01 명
    Umbraco 8.6 true에 새로운 keepAlive 구성이 도입되어 두 속성을 변경할 수 있습니다.

  • keepAlivePingUrl: Ping의 URL을 변경하여 Umbraco 인스턴스를 활성화합니다.기본값은 umbracoSettings.config입니다.

  • disableKeepAliveTask: KeepAlive time interval 작업을true로 설정하여 작업을 비활성화합니다.기본값은 "{umbracoApplicationUrl}/api/keepalive/ping"입니다.
  • 좋은 웹페이지 즐겨찾기