Сегодня исправляем ошибку, связанную с большим количеством отозванных сертификатов. Я до ошибки не довёл, но лучше перебдеть, чем недобдеть.
Логинимся в vCenter под рутом и выполняем команду:
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOT_CRLS | grep Number
Данный запрос выведет количество отозванных сертификатов, которые лежат в хранилище TRUSTED_ROOT_CRLS. Если результат покажет значение в сотни или тысячи, то нужно чистить.
У меня в хранилище 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
Сохраняем: Esc, :wq. Делаем скрипт исполняемым:
chmod +x crl-fix.sh
Запускаем:
./crl-fix.sh
Скрипт может работать долго.
Перезапускаем службы:
service-control --stop --all
service-control --start --all
Проверяем что получилось:
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOT_CRLS | grep Number
vCenter стал работать раза в три быстрее! Полезный скрипт.
Источник:
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.