4.18.01 롤백 프로세스

Private Cloud용 Edge v4.18.01

Edge 4.18.01로 업데이트하는 동안 오류가 발생하면 오류의 원인이 된 구성요소를 롤백한 후 업데이트를 다시 시도할 수 있습니다. 예를 들어 Postgres 9.6 업데이트에 실패하면 Postgres 노드만 롤백하고 업데이트를 다시 시도할 수 있습니다.

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

  1. 이전 출시 버전으로 롤백합니다. 예: 4.18.01~4.17.01
  2. 동일한 출시에서 이전 버전으로 롤백

아래 절차에 따라 두 시나리오 모두에 대해 롤백을 수행합니다.

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

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

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

롤백 가능한 구성요소

롤백을 수행할 때 다음 조건에 유의해야 합니다.

  • 아래에 나열된 5가지 Edge 구성요소는 공통 코드를 공유합니다. 따라서 노드의 5개 구성요소 중 하나를 롤백하려면 노드에 설치된 5개 구성요소 중 하나를 롤백해야 합니다. 예를 들어 노드에 관리 서버, 라우터, 메시지 프로세서가 설치되어 있는 경우 이들 중 하나를 롤백하려면 세 가지를 모두 롤백해야 합니다.

    코드를 공유하는 5가지 구성요소는 다음과 같습니다.

    • 관리 서버
    • 라우터
    • 메시지 프로세서
    • Qpid 서버
    • Postgres 서버
  • Edge 4.16.01에서 업데이트하는 경우 Cassandra를 롤백하지 마세요. 이 Edge 버전에는 업데이트된 Cassandra 버전이 포함되어 있습니다. 구성요소를 롤백하는 경우 Cassandra를 4.18.01 버전으로 유지하세요.

4.18.01 롤백

이 섹션에는 Edge 4.18.01을 이전 버전으로 롤백하는 절차가 포함되어 있습니다. 이 섹션은 다음 두 부분으로 나뉩니다.

  • Postgres 업데이트 롤백
    모든 업데이트 절차의 마지막 단계는 Postgres 노드를 버전 9.6으로 업데이트하는 것입니다. 업데이트에 실패하면 이 절차를 사용하여 업데이트를 롤백할 수 있습니다.
  • 다른 모든 Edge 구성요소 롤백
    이 절차를 사용하여 다른 Edge 구성요소를 롤백합니다.

Postgres 9.6 업데이트를 롤백하려면 다음 단계를 따르세요.

마스터 대기 구성에서 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이 업데이트되는지 확인합니다.

4.18.01에서 개별 구성요소를 롤백하려는 경우

롤백을 수행하는 일환으로 현재 버전의 Edge용 bootstrap.sh 파일을 다운로드해야 합니다.

  • 4.17.09로 롤백하려면 bootstrap_4.17.09.sh을 다운로드하세요.
  • 4.17.05로 롤백하려면 bootstrap_4.17.05.sh을 다운로드하세요.
  • 4.17.01로 롤백하려면 bootstrap_4.17.01.sh을 다운로드하세요.
  • 4.16.09로 롤백하려면 bootstrap_4.16.09.sh을 다운로드하세요.
  • 4.16.05로 롤백하려면 bootstrap_4.16.05.sh을 다운로드하세요.
  • 4.16.01로 롤백하려면 bootstrap.sh을 다운로드하세요.

롤백할 구성요소를 호스팅하는 각 노드에서 다음을 수행합니다.

  1. 롤백할 구성요소를 중지합니다.
    1. 노드에서 Management Server, Router, Message Processor, Qpid Server, Postgres Server 중 하나를 모두 롤백하는 경우 모두 중지해야 합니다.
      • > apigee-service edge-management-server stop
      • > apigee-service edge-router stop
      • > apigee-service edge-message-processor stop
      • > apigee-service edge-qpid-server stop
      • > apigee-service edge-postgres-server stop
    2. 노드의 다른 구성요소를 롤백하는 경우 해당 구성요소만 중지합니다.
      • > apigee-service comp stop
  2. 수익 창출을 롤백하는 경우 모든 관리 서버 및 메시지 프로세서 노드에서 수익 창출을 제거합니다.
    > apigee-service edge-mint-gateway uninstall
  3. 노드에서 롤백하려는 구성요소를 제거합니다.
    1. 노드에서 Management Server, Router, 메시지 프로세서, Qpid Server 또는 Postgres Server 구성요소를 모두 롤백하는 경우 모두 제거합니다.
      > apigee-service edge-gateway uninstall
    2. 노드의 다른 구성요소를 롤백하는 경우 해당 구성요소만 제거합니다.
      > apigee-service comp uninstall
    3. 라우터를 롤백하는 경우 /opt/nginx/conf.d의 콘텐츠를 삭제해야 합니다.
      > cd /opt/nginx/conf.d
      > rm -rf *
  4. 구성요소를 롤백하려면 다음 안내를 따르세요.
    1. apigee-setup의 4.18.01 버전을 제거합니다.
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
    2. 원하는 출시 버전의 bootstrap.sh를 다운로드합니다. 예를 들어 4.16.09의 경우:
      > curl https://software.apigee.com/bootstrap_4.16.09.sh -o /tmp/bootstrap_4.16.09.sh 
    3. 4.16.01, 4.16.05 또는 4.16.09 apigee-service 유틸리티와 종속 항목을 설치합니다. 예를 들어 4.16.09의 경우:
      > sudo bash /tmp/bootstrap_4.16.09.sh apigeeuser=uName apigeepassword=pWord

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

    4. apigee-setup를 설치합니다.
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
    5. 원하는 버전의 구성요소를 설치합니다.
      > /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

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

    6. Qpid를 롤백하는 경우 iptables를 삭제합니다.
      > sudo iptables -F
  5. 구성요소를 특정 버전의 4.18.01 출시로 롤백하려면 다음 단계를 따르세요.
    1. 특정 구성요소 버전 다운로드:
      > /opt/apigee/apigee-service/bin/apigee-service comp-version install

      여기서 comp-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

      설치 시에만 구성요소 이름을 지정하는 방법에 유의하세요.

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