Как выполнить откат до версии Apigee Edge 4.18.05

Edge for Private Cloud v4.18.05

Если во время обновления до Edge 4.18.05 произойдет ошибка, вы можете откатить компонент, который ее вызвал, и повторить попытку.

Вы можете выполнить откат Edge 4.18.05 до следующих версий Feature Release:

  • Версия 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, или пользователь с правами root.

По умолчанию компоненты Edge запускаются от имени пользователя apigee. В некоторых случаях компоненты Edge могут запускаться от имени разных пользователей. Например, если маршрутизатору требуется доступ к привилегированным портам (с номерами меньше 1000), то его нужно запускать от имени пользователя root или пользователя, у которого есть доступ к этим портам. или запускать разные компоненты от имени разных пользователей.

Компоненты с общим кодом

Указанные ниже компоненты Edge используют общий код. Поэтому, чтобы выполнить откат любого из этих компонентов на узле, необходимо выполнить откат всех этих компонентов, находящихся на этом узле.

  • edge-management-server (сервер управления)
  • edge-message-processor (Message Processor)
  • edge-router (маршрутизатор)
  • edge-postgres-server (сервер Postgres)
  • edge-qpid-server (сервер Qpid)

Например, если на узле установлены Management Server, Router и Message Processor, то для отката любого из них необходимо выполнить откат всех трех.

Как выполнить откат к предыдущему выпуску нововведений

Чтобы выполнить откат с версии 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. Если вы выполняете откат Монетизации, удалите ее со всех узлов Management Server и Message Processor:
    /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, необходимо удалить содержимое файла /opt/nginx/conf.d, а также удалить группу компонентов edge-gateway.
      cd /opt/nginx/conf.d
      rm -rf *
  5. Удалите версию 4.18.05 apigee-setup:
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
  6. Установите утилиту apigee-service версии 4.18.01, 4.17.09 или 4.17.05 и ее зависимости. В примере ниже показано, как установить версию 4.17.09 apigee-service:
    sudo bash /tmp/bootstrap_4.17.09.sh apigeeuser=uName apigeepassword=pWord

    где uName и pWord – имя пользователя и пароль, полученные от 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.18.05 с версии 4.17.05 или 4.17.09, вам необходимо откатить обновление Postgres в дополнение к компонентам Edge.

Чтобы откатить обновление Postgres при обновлении Postgres в конфигурации master-standby:

  • Сделайте новый резервный узел основным узлом 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

      При необходимости введите пароль Postgres для пользователя apigee. По умолчанию это 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 и название группы потребителей в поле name в разделе consumer-groups. Она также возвращает UUID старых главного и резервного узлов Postgres в полях postgres-server и datastores. Вы должны увидеть выходные данные в следующем формате:

    {
      "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. Получите UUID-адрес старого главного узла, выполнив на нем следующую команду curl:
    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-001 и consumer-group-001 – названия групп аналитики и потребителей по умолчанию. masterUUID,standbyUUID в том же порядке, в котором они были представлены выше при просмотре текущей аналитики и информации о группе потребителей. Возможно, вам придется указать их как standbyUUID,masterUUID.

    Свойство datastores для consumer-groups теперь должно быть пустым.

  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

    Свойство postgres-server в разделе uuids должно быть пустым.

  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. Перезапустите Edge Management Server:
    /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. Выведите из эксплуатации старый главный узел Postgres, следуя инструкциям в статье Как обновить Apigee Edge 4.16.01/4.16.05 до версии 4.17.09.

    Вы также можете удалить Qpid со старого главного узла и установить его на новый. После удаления Qpid вы можете вывести из эксплуатации старый главный узел.

Удалите Qpid со старого главного сервера и установите его на новый.

Чтобы удалить Qpid со старого главного сервера и установить его на новый главный сервер, выполните следующие действия:

  1. Заблокируйте доступ к порту 5672 Qpid на старом главном сервере для Message Processor, выполнив следующую команду на всех Message Processor:
    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=0 и msgIn=msgOut.

  3. Определите UUID сервера Qpid на старом главном сервере, выполнив на нем следующую команду: Сохраните эту информацию, чтобы использовать ее в дальнейшем:
    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. Удалите старый сервер Qpid из Zookeeper:
    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. Определите UUID сервера Qpid на новом главном сервере, выполнив на нем следующую команду: Сохраните эту информацию, чтобы использовать ее позже:
    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

    Убедитесь, что значения msg, msgIn и msgOut обновляются по мере того, как сервер Qpid обрабатывает сообщения.

Если у вас возникнут проблемы с откатом, обратитесь в службу поддержки Apigee Edge.