Apigee Edge 4.18.05 롤백

Private Cloud용 Edge v4.18.05

Edge 4.18.05로 업데이트하는 동안 오류가 발생하면 오류의 원인이 된 구성요소를 롤백한 후 업데이트를 다시 시도할 수 있습니다.

Edge 4.18.05를 다음 기능 출시 버전으로 롤백할 수 있습니다.

  • 버전 4.18.01
  • 버전 4.17.09*
  • 버전 4.17.05*

* 4.18.05에서 4.17.09 또는 4.17.05 버전으로 롤백하려면 각 노드에서 구성요소를 롤백하는 것 외에도 Postgres를 롤백해야 합니다. 4.18.01로 롤백하는 경우 업그레이드 프로세스에 Postgres 업데이트가 포함되지 않았으므로 Postgres를 롤백할 필요가 없습니다.

롤백을 수행할 수 있는 두 가지 시나리오가 있습니다.

  1. 이전 기능 출시로 롤백 예: 4.18.05~4.18.01
  2. 동일한 출시에서 이전 업데이트 버전으로 롤백합니다. 예: 4.18.05.02~4.18.05.01

자세한 내용은 Apigee Edge 출시 프로세스를 참조하세요.

롤백을 수행할 수 있는 사용자

롤백을 실행하는 사용자는 원래 Edge를 업데이트한 사용자 또는 루트로 실행되는 사용자와 동일해야 합니다.

기본적으로 에지 구성요소는 사용자 'apigee'로 실행됩니다. 경우에 따라 Edge 구성요소를 다른 사용자로 실행할 수 있습니다. 예를 들어 라우터가 권한이 있는 포트(예: 1,000 미만)에 액세스해야 하는 경우 라우터를 루트로 실행하거나 해당 포트에 액세스할 수 있는 사용자로 실행해야 합니다. 또는 한 구성요소를 한 사용자로 실행하고, 다른 구성요소를 다른 사용자로 실행할 수 있습니다.

공통 코드가 있는 구성요소

다음 Edge 구성요소는 공통 코드를 공유합니다. 따라서 노드에서 이러한 구성요소 중 하나를 롤백하려면 해당 노드에 있는 이러한 구성요소를 모두 롤백해야 합니다.

  • edge-management-server (관리 서버)
  • edge-message-processor (메시지 프로세서)
  • edge-router (라우터)
  • edge-postgres-server (Postgres 서버)
  • edge-qpid-server (Qpid 서버)

예를 들어 노드에 관리 서버, 라우터, 메시지 프로세서가 설치된 경우 이들 중 하나를 롤백하려면 세 가지를 모두 롤백해야 합니다.

이전 기능 출시로 롤백

4.18.05에서 4.17.09 또는 4.17.05 버전으로 롤백하려면 각 노드에서 구성요소를 롤백하는 것 외에 Postgres를 롤백해야 합니다. 4.18.01에서 롤백하는 경우 업그레이드 프로세스에 Postgres 업데이트가 포함되지 않았으므로 Postgres를 롤백할 필요가 없습니다.

이전 기능 출시로 롤백하려면 구성요소를 호스팅하는 각 노드에서 다음을 실행하세요.

  1. 롤백하려는 버전의 bootstrap.sh 파일을 다운로드합니다.

    • 4.18.01로 롤백하려면 bootstrap_4.18.01.sh을 다운로드합니다.
      curl https://software.apigee.com/bootstrap_4.18.01.sh -o /tmp/bootstrap_4.18.01.sh 
    • 4.17.09로 롤백하려면 bootstrap_4.17.09.sh을 다운로드합니다.
      curl https://software.apigee.com/bootstrap_4.17.09.sh -o /tmp/bootstrap_4.17.09.sh 
    • 4.17.05로 롤백하려면 bootstrap_4.17.05.sh을 다운로드합니다.
      curl https://software.apigee.com/bootstrap_4.17.05.sh -o /tmp/bootstrap_4.17.05.sh 
  2. 롤백할 구성요소를 중지합니다.
    1. 노드에서 공통 코드가 있는 구성요소를 롤백하려면 다음 예에 표시된 것처럼 모두 중지해야 합니다.
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor stop
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    2. 노드에서 다른 구성요소를 롤백하려면 해당 구성요소만 중지합니다.
      • /opt/apigee/apigee-service/bin/apigee-service component stop
  3. 수익 창출을 롤백하는 경우 모든 관리 서버 및 메시지 프로세서 노드에서 수익 창출을 제거합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
  4. 노드에서 롤백하려면 구성요소를 제거합니다.
    1. 노드에서 공통 코드가 있는 구성요소를 롤백하려면 다음 예에 표시된 것처럼 edge-gateway 구성요소 그룹을 제거하여 모두 제거해야 합니다.
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
    2. 노드의 다른 구성요소를 롤백하려면 다음 예에 표시된 것처럼 해당 구성요소만 제거합니다.
      /opt/apigee/apigee-service/bin/apigee-service component uninstall

      여기서 component은 구성요소 이름입니다.

    3. Edge Router를 롤백하려면 edge-gateway 구성요소 그룹을 제거하는 것 외에도 /opt/nginx/conf.d 파일의 콘텐츠를 삭제해야 합니다.
      cd /opt/nginx/conf.d
      rm -rf *
  5. apigee-setup의 4.18.05 버전을 제거합니다.
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
  6. apigee-service 유틸리티와 종속 항목의 4.18.01, 4.17.09 또는 4.17.05 버전을 설치합니다. 다음 예에서는 apigee-service의 4.17.09 버전을 설치합니다.
    sudo bash /tmp/bootstrap_4.17.09.sh apigeeuser=uName apigeepassword=pWord

    여기서 uNamepWord는 Apigee에서 받은 사용자 이름과 비밀번호입니다. pWord를 생략하면 입력하라는 메시지가 표시됩니다.

    오류가 발생하면 1단계에서 bootstrap.sh 파일을 다운로드했는지 확인하세요.

  7. apigee-setup를 설치합니다.
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
  8. 이전 버전의 구성요소를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

    여기서 component은 설치할 구성요소이고 configFile는 이전 버전의 구성 파일입니다.

  9. Qpid를 롤백하는 경우 iptables를 삭제합니다.
    sudo iptables -F
  10. 롤백하려는 구성요소를 호스팅하는 각 노드에 이 프로세스를 반복합니다.

4.18.05에서 4.17.09 또는 4.17.05 버전으로 롤백하려면 각 노드에서 구성요소를 롤백하는 것 외에 Postgres를 롤백해야 합니다. 4.18.01에서 롤백하는 경우 업그레이드 프로세스에 Postgres 업데이트가 포함되지 않았으므로 Postgres를 롤백할 필요가 없습니다.

이전 업데이트 버전으로 롤백

구성요소를 특정 출시 버전으로 롤백하려면 구성요소를 호스팅하는 각 노드에서 다음을 실행하세요.

  1. 특정 구성요소 버전 다운로드:
    /opt/apigee/apigee-service/bin/apigee-service component_version install

    여기서 component_version은 설치할 구성요소 및 업데이트 버전입니다. 예:

    /opt/apigee/apigee-service/bin/apigee-service edge-ui-4.17.09-0.0.3749 install

    Apigee 온라인 저장소를 사용하는 경우

    yum --showduplicates list comp
    명령어를 사용하여 사용 가능한 구성요소 버전을 확인할 수 있습니다.

    예를 들면 다음과 같습니다.

    yum --showduplicates list edge-ui
  2. apigee-setup를 사용하여 구성요소를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

    예를 들면 다음과 같습니다.

    /opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile

    구성요소를 설치할 때는 버전이 아닌 구성요소 이름만 지정합니다.

  3. 롤백하려는 구성요소를 호스팅하는 각 노드에 이 프로세스를 반복합니다.

4.18.05에서 4.17.09 또는 4.17.05 버전으로 롤백하려면 각 노드에서 구성요소를 롤백하는 것 외에 Postgres를 롤백해야 합니다. 4.18.01에서 롤백하는 경우 업그레이드 프로세스에 Postgres 업데이트가 포함되지 않았으므로 Postgres를 롤백할 필요가 없습니다.

Postgres 9.6 업데이트 롤백

버전 4.17.05 또는 4.17.09에서 4.18.05로 업그레이드한 경우 Edge 구성요소 외에도 Postgres 업데이트를 롤백해야 합니다.

마스터 대기 구성에서 Postgres를 업데이트할 때 Postgres 업데이트를 롤백하려면 다음 단계를 따르세요.

  • 새 대기 노드를 Postgres 마스터로 승격합니다. 새 Postgres 마스터는 이전 Edge 설치와 동일한 버전입니다.
  • 이전 대기 노드를 새 마스터의 대기 노드로 구성합니다. 이전 대기 노드는 이전 Edge 설치와 동일한 버전입니다.
  • 새 마스터 및 대기 노드를 분석 및 소비자 그룹에 등록합니다.

롤백이 완료되면 이전 마스터 노드가 더 이상 필요하지 않습니다. 그런 다음 이전 마스터 노드를 사용 중지할 수 있습니다.

  1. 새 대기 Postgres 노드가 실행 중인지 확인합니다.
    /opt/apigee/apigee-service/bin/apigee-all status

    Postgres가 실행되고 있지 않으면 시작합니다.

    /opt/apigee/apigee-service/bin/apigee-all start
  2. 이전 마스터 노드와 이전 대기 노드에서 Postgres가 중지되었는지 확인합니다.
    /opt/apigee/apigee-service/bin/apigee-all status

    Postgres가 실행 중인 경우 중지합니다.

    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop

  3. 설치된 경우 이전 대기 노드에서 Qpid를 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
  4. 새 대기 노드를 Postgres 마스터로 승격합니다.
    1. 새 대기 노드를 새 마스터로 승격합니다.
      apigee-service apigee-postgresql promote-standby-to-master new_standby_IP

      메시지가 표시되면 'apigee' 사용자의 Postgres 비밀번호(기본값 'postgres')를 입력합니다.

    2. 현재 버전의 Edge를 설치하는 데 사용한 구성 파일을 수정하여 다음을 지정합니다.
      # IP address of the new master:
      PG_MASTER=new_standby_IP
      # IP address of the old standby node
      PG_STANDBY=old_standby_IP
    3. 새 마스터를 구성합니다.
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
  5. 이전 대기 노드를 다시 빌드합니다.
    1. 현재 버전의 Edge를 설치하는 데 사용한 구성 파일을 수정하여 다음을 지정합니다.
      # IP address of the new master:
      PG_MASTER=new_standby_IP
      # IP address of the old standby node
      PG_STANDBY=old_standby_IP
    2. 이전 대기 노드에서 데이터 디렉터리를 삭제합니다.
      cd /opt/apigee/data/apigee-postgresql/pgdata > rm -rf *
    3. 이전 대기 노드를 새 마스터의 대기 노드로 재구성합니다.
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
    4. Postgres가 이전 대기 노드에서 실행 중인지 확인합니다.
      /opt/apigee/apigee-service/bin/apigee-all status

      실행되고 있지 않으면 시작합니다.

      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
  6. 새 마스터에서 /opt/apigee/apigee-postgresql/conf/pg_hba.conf 파일을 확인하여 새 대기 노드가 추가되었는지 확인합니다.
  7. 관리 서버에서 다음 명령어를 실행하여 현재 애널리틱스 및 소비자 그룹 정보를 확인합니다.
    curl -u sysAdminEmail:password http://ms_IP:8080/v1/analytics/groups/ax

    이 명령어는 name 필드에 분석 그룹 이름을 반환하고 consumer-groups 아래 name 필드에 소비자 그룹 이름을 반환합니다. 또한 postgres-server 필드와 datastores 필드에 이전 Postgres 마스터 및 대기 노드의 UUID도 반환합니다.

    {
      "name" : "axgroup-001",
      "properties" : {
      },
      "scopes" : [ "VALIDATE~test", "sgilson~prod" ],
      "uuids" : {
        "qpid-server" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
        "postgres-server" : [
          "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256"
        ]
      },
      "consumer-groups" : [ {
        "name" : "consumer-group-001",
        "consumers" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
        "datastores" :
          [ "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256" ],
          "properties" : {     }
        }
      ],
      "data-processors" : {
      }
    }
    형식으로 출력이 표시됩니다.

  8. 이전 마스터 노드에서 다음 curl 명령어를 실행하여 이전 마스터의 UUID 주소를 가져옵니다.
    curl -u sysAdminEmail:password http://node_IP:8084/v1/servers/self

    출력 끝에 노드의 UUID가 다음 형식으로 표시됩니다.

    "type" : [ "postgres-server" ],
    "uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
  9. 이전 단계를 반복하여 이전 대기 노드와 새 마스터의 IP 주소를 가져옵니다.
  10. 소비자 그룹에서 이전 마스터 및 대기 노드를 삭제합니다.
    curl -u sysAdminEmail:password -X DELETE \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores/masterUUID,standbyUUID" -v

    여기서 axgroup-001consumer-group-001은 분석 및 소비자 그룹의 기본 이름입니다. masterUUID,standbyUUID는 위의 현재의 분석 및 소비자 그룹 정보를 확인할 때 위에 표시된 것과 같은 순서입니다. standbyUUID,masterUUID로 지정해야 할 수도 있습니다.

    이제 consumer-groupsdatastores 속성이 비어 있습니다.

  11. 분석 그룹에서 이전 마스터 및 대기 노드를 삭제합니다.
    curl -u sysAdminEmail:password -X DELETE \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v

    이제 uuids 아래의 postgres-server 속성이 비어 있습니다.

  12. 새 PG 마스터 및 대기 노드를 분석 및 소비자 그룹에 등록합니다.
    curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v
    curl -u sysAdminEmail:password -X POST -H "Content-Type:application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores?uuid=masterUUID,standbyUUID" -v
  13. 분석 그룹을 검증합니다.
    curl -u sysAdminEmail:password http://ms_IP:8080/v1/analytics/groups/ax

    분석 그룹과 소비자 그룹에 나열된 새 마스터 및 대기 노드의 UUID가 표시됩니다.

  14. 에지 관리 서버를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  15. 모든 Qpid 서버를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  16. 모든 Postgres 서버를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  17. 두 서버 모두에서 다음 스크립트를 실행하여 복제 상태를 확인합니다. 성공적인 복제를 위해 시스템에서 두 서버에 동일한 결과를 표시해야 합니다.

    새 마스터에서 다음을 실행합니다.

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

    마스터임을 확인합니다. 이전 대기 노드:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

    대기 상태임을 확인합니다.

  18. 여러 API 요청을 한 후 이전 단계를 반복하여 노드가 동기화되도록 합니다.
  19. Apigee Edge 4.16.01/4.16.05를 4.17.09로 업데이트의 절차에 따라 이전 Postgres 마스터를 사용 중지합니다.

    또는 이전 마스터에서 Qpid를 제거하고 새 마스터 노드에 Qpid를 설치할 수 있습니다. Qpid를 제거한 후에 이전 마스터 노드를 사용 중지할 수 있습니다.

이전 마스터에서 Qpid를 제거하고 새 마스터에 Qpid 설치

이전 마스터에서 Qpid를 제거하고 새 마스터에 설치하려면 다음 단계를 따르세요.

  1. 모든 메시지 프로세서에서 다음 명령어를 실행하여 이전 마스터의 Qpid 포트 5672에 대한 액세스를 메시지 프로세서가 액세스하지 못하도록 차단합니다.
    iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP
  2. 다음 명령어를 실행하여 Qpid 메시지 큐가 비어 있는지 확인합니다. 대기 중인 모든 메시지가 처리될 때까지 Qpid를 제거할 수 없습니다.
    qpid-stat -q

    이 명령어는 msg, msgIn, and msgOut의 수가 포함된 테이블을 표시합니다. msg=0msgIn=msgOut일 때 모든 메시지가 처리됩니다.

  3. 이전 마스터에서 다음 명령어를 실행하여 이전 마스터의 Qpid 서버 UUID를 확인합니다. 절차의 후반부에서
    curl -u sysAdminEmail:password http://node_IP::8083/v1/servers/self
    를 위해 이 정보를 저장합니다.
  4. 이전 마스터에서 Qpid를 중지합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
  5. Qpid 서버를 제거합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall
  6. 분석 및 소비자 그룹에서 이전 Qpid 서버를 삭제합니다.
    curl -u sysAdminEmail:password -X DELETE -H "Content-Type: application/json" -d '' \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers/qpid_UUID" -v
    curl -u sysAdminEmail:password -X DELETE \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
  7. Jokeeper에서 이전 Qpid 서버를 삭제합니다.
    curl -u sysAdminEmail:password -X DELETE \
      http://ms_IP:8080/v1/servers/qpid_UUID
  8. 새로운 마스터에 Qpid를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile
  9. 새 마스터에서 다음 명령어를 실행하여 새 마스터의 Qpid 서버 UUID를 확인합니다. 절차의 후반부에서
    curl -u sysAdminEmail:password
      http://node_IP::8083/v1/servers/self
    를 위해 이 정보를 저장합니다.
  10. 새 Qpid 서버를 분석 및 소비자 그룹에 등록합니다.
    curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
    curl -u sysAdminEmail:password -X POST -H "Content-Type:application/json" -d '' \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers?uuid=qpid_UUID" -v
  11. 모든 메시지 프로세서를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  12. 새 Qpid 서버에서 다음 명령어를 실행하여 큐가 생성되었는지 확인합니다.
    qpid-stat -q

    Qpid 서버가 메시지를 처리할 때 msg, msgIn, msgOut가 업데이트되고 있는지 확인합니다.

롤백 시 문제가 발생하면 Apigee Edge 지원팀에 문의하세요.