Найти в Дзене

VMware — служба vPostgres не запускается

Оглавление

Сегодня исправляем ошибку, связанную с большим количеством отозванных сертификатов. Я до ошибки не довёл, но лучше перебдеть, чем недобдеть.

Логинимся в vCenter под рутом и выполняем команду:

/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOT_CRLS | grep Number

Данный запрос выведет количество отозванных сертификатов, которые лежат в хранилище TRUSTED_ROOT_CRLS. Если результат покажет значение в сотни или тысячи, то нужно чистить.

-2

У меня в хранилище 471 отозванный сертификат, это не очень хорошо, но ещё не критично.

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

Возможные проблемы

Службы VMware-vPostgres, vmware-vpxd-svcs и vmware-vpxd не стартуют. При коннекте к базе vCenter Database ошибки:

Failed to connect to database: ODBC error: (08001) - [unixODBC]could not connect to server: Connection refused
--> Is the server running on host "localhost" (127.0.0.1) and accepting
--> TCP/IP connections on port 5432?

Логи vPostgres не пишутся.

/var/log/vmware/vpostgres/postgresql-30.log

В логе /var/log/vmware/vpxd/vpxd.log можно встретить ошибку:

2020-07-07T20:18:01.671Z error vpxd[35339] [Originator@6876 sub=vpxdVdb] [VpxdVdb::SetDBType] Failed to connect to database: ODBC error: (08001) - [unixODBC]could not connect to server: Connection refused
--> Is the server running on host "localhost" (127.0.0.1) and accepting
--> TCP/IP connections on port 5432?
--> Retry attempt: 16305 ...

В логе /var/log/vmware/vpxd-svcs/vpxd-svcs.log можно встретить ошибку:

SQL Error: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.)

Что делать?

Можно выполнить скрипт crl-fix.sh для исправления, скрипт доступен здесь:

https://kb.vmware.com/s/article/80020

Или в сборке для системного администратора:

Сборка для системного администратора

На самом деле скрипт маленький, можно и вручную создать.

cd /root
vim crl-fix.sh

Insert. Копируем в него содержимое:

#!/bin/bash cd /etc/ssl/certs
mkdir /tmp/pems
mkdir /tmp/OLD-CRLS-CAs
mv *.pem /tmp/pems && mv *.* /tmp/OLD-CRLS-CAs
h=$(/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOT_CRLS --text | grep Alias | cut -d : -f 2)
for hh in "echo "${h[@]}"";do echo "Y" | /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store TRUSTED_ROOT_CRLS --alias $hh;done mv /tmp/pems/* .
for l in `ls *.pem`;do ln -s $l ${l/pem/0};done service-control --stop vmafdd && service-control --start vmafdd
-3

Сохраняем: Esc, :wq. Делаем скрипт исполняемым:

chmod +x crl-fix.sh

Запускаем:

./crl-fix.sh

Скрипт может работать долго.

-4

Перезапускаем службы:

service-control --stop --all
service-control --start --all

Проверяем что получилось:

/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOT_CRLS | grep Number
-5

vCenter стал работать раза в три быстрее! Полезный скрипт.

Источник:

VMware — служба vPostgres не запускается (crl-fix.sh) | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.