Ошибка доступа к хранилищу данных

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Симптом

Развертывание версий прокси-сервера API через пользовательский интерфейс Edge или вызов API управления Edge завершается с ошибкой "Error while accessing datastore" .

Сообщения об ошибках

Error in deployment for environment qa.

The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later

Возможные причины

Типичные причины этой проблемы:

  1. Причина Подробности Для
    Проблема сетевого подключения между процессором сообщений и Cassandra Сбой связи между процессором сообщений и Cassandra из-за проблем с сетевым подключением или правил брандмауэра. Пользователи Edge Private Cloud
    Ошибки развертывания из-за перезапуска Cassandra Узлы Cassandra были недоступны, поскольку они были перезапущены в рамках планового обслуживания. Пользователи Edge Private Cloud
    Резкий рост задержки запроса на чтение на Cassandra Если узлы Cassandra выполняют большое количество одновременных операций чтения, они могут отвечать медленно из-за резкого увеличения задержки запроса на чтение. Пользователи Edge Private Cloud
    Пакет прокси API размером более 15 МБ Cassandra настроена так, чтобы не разрешать пакеты прокси-серверов API размером более 15 МБ. Пользователи Edge Private Cloud

    Проблема сетевого подключения между процессором сообщений и Cassandra

    Диагностика

    Примечание. Следующие действия могут выполнять только пользователи Edge Private Cloud. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

    1. Отмените и повторно разверните прокси-сервер API. Если возникла временная проблема с соединением между процессором сообщений и Cassandra, ошибка может исчезнуть.

      ВНИМАНИЕ. Не отменяйте развертывание, если ошибки наблюдаются в производственной среде.

    2. Если проблема не устранена, выполните приведенный ниже вызов точки доступа управления, чтобы проверить состояние развертывания и наличие ошибок в каких-либо компонентах:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments

      Пример вывода состояния развертывания, показывающий ошибку при доступе к хранилищу данных на одном из процессоров сообщений.

      {
      "environment" : [ {
      "aPIProxy" : [ {
      "name" : "simple-python",
      "revision" : [ {
      "configuration" : {
      "basePath" : "/",
      "steps" : [ ]
      },
      "name" : "1",
      "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada"
      }, {
      "error" : "Error while accessing datastore;Please retry later",
      "errorCode" : "datastore.ErrorWhileAccessingDataStore",
      "status" : "error",
      "type" : [ "message-processor" ],
      "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3"
      } 
      "state" : "error"
      } 
    3. Перезапустите процессор(ы) сообщений, которые показывают ошибку развертывания. Если возникла временная проблема с сетью, ошибка должна исчезнуть:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    4. Повторите шаг №2, чтобы проверить, удалось ли развертывание на перезапущенном процессоре сообщений. Если ошибок не обнаружено, это означает, что проблема решена.
    5. Проверьте, может ли процессор сообщений подключиться к каждому узлу Cassandra по портам 9042 и 9160:
      1. Если доступен telnet, используйте telnet:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
      2. Если telnet недоступен, используйте netcat для проверки соединения следующим образом:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
      3. Если вы получили ответ «Соединение отклонено» или «Время ожидания соединения истекло», обратитесь к команде по эксплуатации сети.
    6. Если проблема не устранена, проверьте, прослушивает ли каждый из узлов Cassandra порт 9042 и порт 9160:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
    7. Если узлы Cassandra не прослушивают порт 9042 или 9160, перезапустите определенные узлы Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    8. Если проблема не устранена, обратитесь к команде сетевых операторов.

Разрешение

Работайте вместе со своей командой по эксплуатации сети и устраните проблему сетевого подключения между процессором сообщений и Cassandra.

Ошибки развертывания из-за перезапуска Cassandra

Узлы Cassandra обычно периодически перезапускаются в рамках планового обслуживания. Если прокси-серверы API развертываются во время работ по обслуживанию Cassandra, развертывание завершается сбоем из-за недоступности хранилища данных Cassandra.

Примечание. Следующие действия могут выполнять только пользователи Edge Private Cloud. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

Диагностика

  1. Проверьте, были ли перезапущены узлы Cassandra во время развертывания. Это можно сделать, проверив журнал Cassandra или самые последние журналы времени запуска узла Cassandra:

    grep " shutdown " /opt/apigee/var/log/apigee-cassandra/system.log

Разрешение

  1. Убедитесь, что Кассандра работает.
  2. Проверьте, могут ли процессоры сообщений подключаться к хранилищу данных Cassandra через порты 9042 и 9160.

Резкий рост задержки запроса на чтение на Cassandra

Большое количество операций чтения в Cassandra зависит от индивидуальных вариантов использования и моделей трафика на прокси-серверах, которые содержат политики, требующие доступа для чтения из Cassandra.

Например, если для политик OAuth вызывается GET-вызов типа предоставления Refresh_token, а токен обновления связан со многими токенами доступа, это может привести к большому количеству операций чтения из Cassandra. Это может привести к увеличению задержки запроса на чтение в Cassandra.

Диагностика

Примечание. Следующие действия могут выполнять только пользователи Edge Private Cloud. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

  1. Если вы установили панель мониторинга бета-мониторинга, просмотрите панель мониторинга Cassandra и просмотрите диаграмму «Запросы на чтение» для периода возникновения проблемы. Также просмотрите диаграмму «Задержки запросов на чтение».
  2. Альтернативным инструментом для проверки запросов на чтение и задержек чтения является команда nodetool cfstats . См. документацию Cassandra, чтобы получить более подробную информацию об использовании этой команды.

Разрешение

Примечание. Следующие действия могут выполнять только пользователи Edge Private Cloud. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

  1. Повторите попытку развертывания, как только производительность Cassandra вернется в норму. Убедитесь, что все кольцо Кассандры в порядке.
  2. (Необязательно) Выполните последовательный перезапуск процессоров сообщений, чтобы убедиться, что соединение установлено.
  3. В качестве долгосрочного решения просмотрите шаблоны трафика API, которые могут способствовать увеличению числа операций чтения в хранилище данных Cassandra. Свяжитесь со службой поддержки Apigee Edge для помощи в устранении этой проблемы.
  4. Если существующие узлы Cassandra не подходят для обработки входящего трафика, либо увеличьте емкость оборудования, либо количество узлов хранилища данных Cassandra соответствующим образом.

Пакет прокси API размером более 15 МБ

Размер пакетов прокси-серверов API на Cassandra ограничен 15 МБ. Если размер пакета прокси-сервера API превышает 15 МБ, при попытке развернуть прокси-сервер API вы увидите сообщение «Ошибка при доступе к хранилищу данных».

Диагностика

Примечание. Следующие действия могут выполнять только пользователи Edge Private Cloud. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

  1. Проверьте журналы процессора сообщений ( /opt/apigee/var/log/edge-message-processor/logs/system.log ) и проверьте, не возникли ли какие-либо ошибки во время развертывания конкретного прокси-сервера API.
  2. Если вы видите ошибку, аналогичную той, что показана на рисунке ниже, то ошибка развертывания связана с тем, что размер пакета прокси-сервера API составляет > 15 МБ.
    2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{}
    com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na]
            at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na]
    ...<snipped>
            Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1]
    ...<snipped>

Разрешение

Пакет прокси-сервера API будет большим, если файлов ресурсов слишком много. Для решения этой проблемы используйте следующие решения:

Решение № 1. Переместите файлы ресурсов на уровень среды или организации.

  1. Переместите любые файлы ресурсов, такие как файлы и модули NodeJS Script, файлы JavaScript, файлы JAR, на уровень среды или организации. Дополнительную информацию о файлах ресурсов см. в документации Edge .
  2. Разверните прокси-сервер API и посмотрите, исчезнет ли ошибка.

Если проблема не устранена или по какой-либо причине вы не можете переместить файлы ресурсов на уровень среды или организации, примените решение № 2.

Решение № 2. Увеличьте размер пакета прокси-сервера API на Cassandra.

Примечание. Следующие действия могут выполнять только пользователи Edge Private Cloud. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

Выполните следующие действия, чтобы увеличить размер транспортного размера кадра экономии свойства Cassandra, который контролирует максимальный размер пакета прокси-сервера API, разрешенный в Edge:

  1. Создайте следующий файл, если он не существует:
    /opt/apigee/customer/application/cassandra.properties
  2. Добавьте в файл следующую строку, заменив <size> на настройку размера, необходимую для большого пакета:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
  3. Перезапустите Кассандру:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  4. Повторите шаги с 1 по 3 на всех узлах Cassandra в кластере.

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