라우터에서 I/O 제한 시간 구성

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

이 문서에서는 Apigee Edge 라우터에서 I/O 제한 시간을 구성하는 방법을 설명합니다.

라우터의 I/O 시간 제한은 연결을 설정하고 메시지 프로세서에 요청을 전송한 후 라우터가 메시지 프로세서로부터 응답을 받기 위해 대기하는 시간을 나타냅니다. 라우터의 I/O 시간 초과의 기본값은 57초입니다.

라우터의 I/O 시간 제한은 필요에 따라 기본값인 57초에서 늘리거나 줄일 수 있습니다. 다음과 같은 방법으로 구성할 수 있습니다.

  • 가상 호스트에서
  • 라우터에서

다음 속성은 라우터의 I/O 시간 제한을 제어합니다.

속성 이름 위치 설명
proxy_read_timeout 가상 호스트

연결을 설정하고 메시지 프로세서에 요청을 전송한 후 라우터가 메시지 프로세서로부터 응답을 받기 위해 대기하는 최대 시간을 지정합니다.

이 제한 시간 내에 메시지 프로세서의 응답이 없으면 라우터가 타임아웃됩니다.

기본적으로 이 속성은 라우터의 conf_load_balancing_load.balancing.driver.proxy.read.timeout 속성에 설정된 값을 사용합니다. 기본값은 57 초입니다.

특정 가상 호스트의 새 제한 시간 값을 사용하여 이 속성을 수정하면 해당 가상 호스트를 사용하는 API 프록시만 영향을 받습니다.

conf_load_balancing_load.balancing.driver.proxy.read.timeout 라우터

연결을 설정하고 메시지 프로세서에 요청을 전송한 후 라우터가 메시지 프로세서로부터 응답을 받기 위해 대기하는 최대 시간을 지정합니다.

이 제한 시간 내에 메시지 프로세서의 응답이 없으면 라우터가 타임아웃됩니다.

이 속성은 라우터의 모든 가상 호스트에 사용됩니다.

이 속성의 기본값은 57초입니다.

아래의 라우터에서 I/O 시간 제한 구성에 설명된 대로 이 속성을 수정하거나 proxy_read_timeout 속성을 가상 호스트 수준에서 설정하여 이 값을 덮어쓸 수 있습니다.

다음 표기법을 사용하여 이 속성의 시간 간격을 초가 아닌 다른 값으로 설정할 수 있습니다.

ms: milliseconds
s:  seconds (default)
m:  minutes
h:  hours
d:  days
w:  weeks
M:  months (length of 30 days)
y:  years (length of 365 days)
conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout 라우터

라우터가 연결을 설정하고 각 메시지 프로세서에 요청을 전송한 후 모든 메시지 프로세서로부터 응답을 수신하기 위해 기다리는 총 시간을 지정합니다.

Edge 설치에 여러 메시지 프로세서가 있고 오류 발생 시 재시도가 사용 설정된 경우에 적용되는 옵션입니다. 다음 중 하나의 값을 갖습니다.

  • conf_load_balancing_load.balancing.driver.proxy.read.timeout의 현재 값
  • 기본값인 57초

conf_load_balancing_load.balancing.driver.proxy.read.timeout 속성과 마찬가지로 기본값 (초)이 아닌 시간 간격을 지정할 수 있습니다.

시작하기 전에

이 문서의 단계를 수행하기 전에 다음 주제를 이해해야 합니다.

가상 호스트에서 I/O 제한 시간 구성

이 섹션에서는 조직 및 환경과 연결된 가상 호스트에서 I/O 제한 시간을 구성하는 방법을 설명합니다. I/O 제한 시간은 초 단위로 I/O 제한 시간 값을 나타내는 proxy_read_timeout 속성을 통해 가상 호스트에서 구성할 수 있습니다.

다음 방법 중 하나를 사용하여 가상 호스트를 구성할 수 있습니다.

  • Edge UI
  • 에지 API

Edge UI

Edge UI를 사용하여 가상 호스트를 구성하려면 다음 안내를 따르세요.

  1. Edge UI에 로그인합니다.
  2. 관리자 > 가상 호스트로 이동합니다.
  3. 변경하려는 특정 환경을 선택합니다.
  4. 새 I/O 시간 제한 값을 구성할 특정 가상 호스트를 선택합니다.
  5. 속성에서 프록시 읽기 시간 제한 값을 초 단위로 업데이트합니다.

    예를 들어 제한 시간을 120초로 변경하려면 다음 그림과 같이 120을 입력합니다.

    프록시 읽기 시간 제한 값 120

  6. 변경사항을 저장합니다.

에지 API

Edge API를 사용하여 가상 호스트를 구성하려면 다음 안내를 따르세요.

  1. 아래와 같이 Get virtual host API를 사용하여 현재 가상 호스트 구성을 가져옵니다.

    퍼블릭 클라우드 사용자

    curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    Private Cloud 사용자

    curl -v -X GET http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    각 항목의 의미는 다음과 같습니다.

    {organization-name}은 조직 이름입니다.

    {environment-name}은 환경 이름입니다.

    {virtualhost-name}은 가상 호스트의 이름입니다.

    샘플 virtualhost 구성

        {
          "hostAliases": [
            "api.myCompany,com"
          ],
          "interfaces": [],
          "listenOptions": [],
          "name": "secure",
          "port": "443",
          "retryOptions": [],
          "sSLInfo": {
            "ciphers": [],
            "clientAuthEnabled": "false",
            "enabled": "true",
            "ignoreValidationErrors": false,
            "keyAlias": "myCompanyKeyAlias",
            "keyStore": "ref://myCompanyKeystoreref",
            "protocols": []
          },
          "useBuiltInFreeTrialCert": false
        }
    
  2. proxy_read_timeout 속성을 기존 가상 호스트 구성 JSON 페이로드에 초 단위 값과 함께 properties 아래에 추가합니다.

    예를 들어 I/O 제한 시간을 120초로 변경하려면 아래와 같이 properties 코드 블록을 추가합니다.

    업데이트된 가상 호스트 구성 샘플

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    
  3. 업데이트된 가상 호스트 구성을 파일에 저장합니다. 예를 들면 virtualhost-payload.json입니다.
  4. 다음과 같이 가상 호스트 업데이트 API를 사용하여 virtualhost 구성을 변경사항으로 업데이트합니다.

    퍼블릭 클라우드 사용자

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    Private Cloud 사용자

    curl -v -X POST Content-Type: application/json
    http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    각 항목의 의미는 다음과 같습니다.

    {organization-name}은 조직 이름입니다.

    {environment-name}은 환경 이름입니다.

    {virtualhost-name}은 가상 호스트의 이름입니다.

가상 호스트의 I/O 제한 시간 확인

이 섹션에서는 Edge API를 사용하여 가상 호스트에서 I/O 제한 시간이 수정되었는지 확인하는 방법을 설명합니다.

  1. 아래와 같이 Get virtual host API를 실행하여 virtualhost 구성을 가져옵니다.

    퍼블릭 클라우드 사용자

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    Private Cloud 사용자

    curl -v -X GET http://<management server-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    각 항목의 의미는 다음과 같습니다.

    {organization-name}은 조직 이름입니다.

    {environment-name}은 환경 이름입니다.

    {virtualhost-name}은 가상 호스트의 이름입니다.

  2. proxy_read_timeout 속성이 새 값으로 설정되었는지 확인합니다.

    업데이트된 가상 호스트 구성 샘플

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    

    위의 예에서는 proxy_read_timeout이 새 값인 120초로 설정되었습니다.

  3. proxy_read_timeout,의 이전 값이 계속 표시되면 가상 호스트에서 I/O 제한 시간 구성에 설명된 모든 단계를 올바르게 수행했는지 확인합니다. 누락된 단계가 있으면 모든 단계를 다시 올바르게 반복합니다.
  4. 그래도 I/O 제한 시간을 수정할 수 없으면 Apigee Edge 지원팀에 문의하세요.

라우터의 I/O 시간 제한 구성

이 섹션에서는 라우터에서 I/O 시간 제한을 구성하는 방법을 설명합니다. I/O 제한 시간은 초 단위로 I/O 제한 시간 값을 나타내는 라우터 속성 conf_load_balancing_load.balancing.driver.proxy.read.timeout를 통해 구성할 수 있습니다.

라우터에서 I/O 시간 제한을 구성하려면 다음 단계를 따르세요.

  1. 라우터 머신에서 편집기에서 다음 파일을 엽니다. 아직 없으면 새로 만듭니다.
    /opt/apigee/customer/application/router.properties
    

    예를 들어 vi로 파일을 열려면 다음 명령어를 입력합니다.

    vi /opt/apigee/customer/application/router.properties
    
  2. properties 파일에 다음 형식의 줄을 추가하고 time_in_seconds 값을 대체합니다.
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds
    

    예를 들어 라우터의 I/O 시간 제한을 120초로 변경하려면 다음 줄을 추가합니다.

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
    

    또한 I/O 제한 시간을 분 단위로 수정할 수 있습니다. 예를 들어 제한 시간을 2분으로 변경하려면 다음 줄을 추가합니다.

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
    
  4. 변경사항을 저장합니다.
  5. 아래와 같이 이 속성 파일을 apigee 사용자가 소유하고 있는지 확인합니다.
    chown apigee:apigee /opt/apigee/customer/application/router.properties
    
  6. 아래와 같이 라우터를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
    
  7. 라우터가 2개 이상인 경우 모든 라우터에서 위 단계를 반복합니다.

라우터의 I/O 시간 초과 확인

이 섹션에서는 라우터에서 I/O 시간 제한이 성공적으로 수정되었는지 확인하는 방법을 설명합니다.

conf_load_balancing_load.balancing.driver.proxy.read.timeout 토큰을 사용하여 라우터에 I/O 시간 제한을 설정하더라도 실제 속성 proxy_read_timeout가 새 값으로 설정되었는지 확인해야 합니다.

  1. /opt/nginx/conf.d 디렉터리에서 proxy_read_timeout 속성을 검색하여 다음과 같이 새 값으로 설정되어 있는지 확인합니다.
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
    
  2. 라우터에 새 I/O 시간 제한 값이 성공적으로 설정되면 위 명령어는 모든 가상 호스트 구성 파일에 새 값을 표시합니다.

    다음은 I/O 제한 시간이 120초일 때 위 grep 명령어를 실행한 샘플 결과입니다.

    /opt/nginx/conf.d/0-default.conf:proxy_read_timeout 120;
    /opt/nginx/conf.d/0-edge-health.conf:proxy_read_timeout 1s;
    

    위의 출력 예에서 proxy_read_timeout 속성이 기본 가상 호스트의 구성 파일인 0-default.conf의 새 값 120으로 설정된 것을 볼 수 있습니다. 이는 라우터에서 I/O 시간 제한이 120초로 구성되었음을 나타냅니다.

  3. proxy_read_timeout 속성의 이전 값이 계속 표시되면 라우터에서 I/O 제한 시간 구성에 설명된 모든 단계를 올바르게 수행했는지 확인합니다. 누락된 단계가 있으면 모든 단계를 다시 올바르게 반복합니다.
  4. 그래도 I/O 제한 시간을 수정할 수 없으면 Apigee Edge 지원팀에 문의하세요.

다음 단계

메시지 프로세서의 I/O 시간 제한 구성에 대해 알아보기