Недоступность реплики базы данных характеризуется:
отсутствием ответа при выполнении запроса на чтение данных - возвращается ошибка 500;
увеличением времени ответа при выполнении запроса на чтение данных нескольких реплик базы данных;
состоянием пода базы данных:
«Running», но запущены не все контейнеры;
«Error» или «Pending».
Причиной отсутствия ответа базы данных может являться рассинхронизация реплик базы данных.
Для восстановления доступности реплики базы данных проверьте работу подов на каждом узле кластера. Перезапустите под при обнаружении некорректной работы. Если после перезапуска пода сохраняется некорректное поведение, то пересоздайте реплики базы данных.
Для пересоздания реплик базы данных:
Аутентифицируйтесь в кластере OKD:
oc login -u your_username -p your_password your_host
Получите наименование пода и укажите порт для доступа к панели администрирования СУБД PostgreSQL:
POD_NAME=$(kubectl get pods
--namespace stackgres -l "app=stackgres-restapi" -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward "$POD_NAME" 8443:9443 --namespace stackgres
Получите учётные данные для входа в панель администрирования СУБД PostgreSQL:
kubectl get secret -n stackgres stackgres-restapi --template '{{ printf "username = %s\npassword = %s\n" (.data.k8sUsername | base64decode) ( .data.clearPassword | base64decode) }}'
Укажите адрес панели администрирования СУБД PostgreSQL в строке браузера:
https://<IP-адрес или DNS-имя сервера>:8443/
Введите учётные данные, полученные в шаге 3, в поля «Username» и «Password» и войдите в систему.
Выберите SGCluster в пространстве имён fmp:
Выберите требуемую базу данных в столбце «StackGres Cluster»:
Нажмите кнопку «EDIT CLUSTER»:
Задайте значение «1» в поле «Number of Instances» и нажмите кнопку «UPDATE CLUSTER»:
Примечание. Если на чтение данных используется несколько реплик (подов с ролью «Replica») и одна из них исправно функционирует, то запросы на чтение будут успешно обрабатываться. В этом случае может быть увеличено время ответа при повышении нагрузки на базу данных. Уменьшение «Number of Instances» до одного приводит к тому, что запросы на чтение данных перестанут обрабатываться до окончания пересоздания реплик базы данных.
Убедитесь, что в списке подов содержится единственный под с ролью «Primary». Под с ролью «Replica» должен быть удалён.
Нажмите кнопку «EDIT CLUSTER» и установите значение поля «Number of Instances» равное изначальному количеству реплик.
Убедитесь, что в списке подов содержится под с ролью «Replica»:
Примечание. Время синхронизации реплик зависит от объёма данных и скорости соединения между узлами кластера.
После выполнения действий реплики базы данных будут пересозданы и синхронизированы.
Для повторного подключения пода fmp-socketserver к базе данных в приложении OKD:
Откройте подраздел «Workloads > Deployments».
Выберите fmp-socketserver в проекте с мобильной платформой, например, fmp:
После выполнения действий будет выполнено повторное подключение пода fmp-socketserver к базе данных.
См. также: