Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
Развертывание изменений 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
Возможные причины
Типичные причины этой проблемы:
Причина Подробности Для Проблема сетевого соединения между обработчиком сообщений и 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. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
- Удалите и повторно разверните API-прокси. Если возникла временная проблема с подключением между обработчиком сообщений и Cassandra, то ошибка может исчезнуть.
ВНИМАНИЕ: Не удаляйте развертывание, если ошибки обнаружены в производственной среде.
- Если проблема сохраняется, выполните указанный ниже вызов управляющей точки доступа, чтобы проверить состояние развертывания и наличие ошибок в каких-либо компонентах:
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" }
- Перезапустите обработчик(и) сообщений, в которых отображается ошибка развертывания. Если возникла временная проблема с сетью, ошибка должна исчезнуть.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Повторите шаг №2, чтобы проверить, успешно ли выполнено развертывание на перезапущенном обработчике сообщений. Если ошибок не обнаружено, это означает, что проблема решена.
- Проверьте, может ли обработчик сообщений подключиться к каждому узлу Cassandra через порты 9042 и 9160:
- Если доступен telnet, используйте его:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- Если telnet недоступен, проверьте подключение с помощью netcat следующим образом:
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- Если вы получили сообщение "Соединение отклонено" или "Время ожидания соединения истекло", обратитесь в свою группу по эксплуатации сети.
- Если доступен telnet, используйте его:
- Если проблема сохраняется, проверьте, прослушивают ли каждый из узлов Cassandra порты 9042 и 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Если узлы Cassandra не прослушивают порты 9042 или 9160, перезапустите соответствующий(ие) узел(ы) Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Если проблема не исчезнет, обратитесь в свою группу по эксплуатации сети.
- Удалите и повторно разверните API-прокси. Если возникла временная проблема с подключением между обработчиком сообщений и Cassandra, то ошибка может исчезнуть.
Разрешение
Взаимодействуйте со своей командой по эксплуатации сети и устраните проблему с сетевым подключением между обработчиком сообщений и Cassandra.
Ошибки развертывания, возникающие из-за перезапуска Cassandra.
Узлы Cassandra обычно периодически перезапускаются в рамках планового технического обслуживания. Если во время работ по техническому обслуживанию Cassandra развертываются API-прокси, то их развертывание завершается с ошибкой из-за недоступности хранилища данных Cassandra.
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
Диагноз
- Проверьте, были ли перезапущены узлы Cassandra во время развертывания. Это можно сделать, проверив журнал Cassandra или журналы последнего запуска узла Cassandra:
grep"shutdown"/opt/apigee/var/log/apigee-cassandra/system.log
Разрешение
- Убедитесь, что Cassandra запущена и работает.
- Проверьте, могут ли обработчики сообщений подключаться к хранилищу данных Cassandra через порты 9042 и 9160.
Резкое увеличение задержки запросов на чтение в Cassandra.
Большое количество операций чтения из Cassandra зависит от конкретных сценариев использования и характера трафика на прокси-серверах, содержащих политики, требующие доступа на чтение из Cassandra.
Например, если для политик OAuth выполняется GET-запрос к типу предоставления refresh_token, и токен обновления связан со многими токенами доступа, это может привести к большому объему операций чтения из Cassandra. Это может вызвать увеличение задержки запросов на чтение в Cassandra.
Диагноз
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

- Если вы установили панель мониторинга Beta, посмотрите на панель мониторинга Cassandra и изучите график «Запросы на чтение» за период возникновения проблемы. Также изучите график «Задержки запросов на чтение».
- Альтернативным инструментом для проверки запросов на чтение и задержек чтения является команда `
nodetool cfstats. Более подробную информацию об использовании этой команды см. в документации Cassandra .
Разрешение
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
- Попробуйте выполнить развертывание еще раз, когда производительность Cassandra вернется в норму. Убедитесь, что вся сеть Cassandra работает нормально.
- (Необязательно) Выполните поэтапный перезапуск обработчиков сообщений, чтобы убедиться в установлении соединения.
- Для долгосрочного решения проблемы проанализируйте закономерности трафика API, которые могут приводить к увеличению количества операций чтения из хранилища данных Cassandra. Обратитесь в службу поддержки Apigee Edge за помощью в устранении этой проблемы.
- Если имеющихся узлов Cassandra недостаточно для обработки входящего трафика, то следует либо увеличить аппаратную мощность, либо соответствующее количество узлов хранилища данных Cassandra.
Размер пакета API-прокси превышает 15 МБ.
В Cassandra размер пакетов API-прокси ограничен 15 МБ. Если размер пакета API-прокси превышает 15 МБ, при попытке развертывания API-прокси вы увидите сообщение «Ошибка при доступе к хранилищу данных».
Диагноз
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
- Проверьте журналы обработчика сообщений (
/opt/apigee/var/log/edge-message-processor/logs/system.log) и посмотрите, не возникли ли какие-либо ошибки во время развертывания конкретного API-прокси. - Если вы видите ошибку, похожую на показанную на рисунке ниже, то ошибка развертывания связана с тем, что размер пакета 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: Переместите файлы ресурсов на уровень среды или организации.
- Переместите любые файлы ресурсов, такие как файлы скриптов и модулей NodeJS, файлы JavaScript, JAR-файлы, на уровень среды или организации. Для получения дополнительной информации о файлах ресурсов см. документацию Edge .
- Разверните API-прокси и проверьте, исчезнет ли ошибка.
Если проблема сохраняется или по какой-либо причине вы не можете переместить файлы ресурсов на уровень среды или организации, примените решение № 2.
Решение №2: Увеличьте размер пакета API-прокси в Cassandra.
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
Выполните следующие действия, чтобы увеличить размер параметра `thrift frame transport size` в настройках Cassandra, который контролирует максимальный размер пакета API-прокси, разрешенного в Edge:
- Если такой файл не существует, создайте следующий файл:
/opt/apigee/customer/application/cassandra.properties
- Добавьте в файл следующую строку, заменив <size> на значение размера, необходимое для большого пакета:
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- Перезапустите Cassandra:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Повторите шаги с 1 по 3 на всех узлах Cassandra в кластере.
Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge .