Как определить, какие службы перезапустить после изменения конфигурации?
Мне нужно внести некоторые изменения в мой кластер с помощью Ambari API. После внесения изменений я использую следующий код для перезапуска всего сервиса:
echo "stop and Start Services"
curl -k -v --user $AMBARI_USER:$AMBARI_PASSWORD -H "X-Requested-By: ambari" -i -X PUT -d '{"RequestInfo": {"context": "Stop All Services via REST"}, "ServiceInfo": {"state":"INSTALLED"}}' https://$AMBARI_HOST:$AMBARI_PORT/api/v1/clusters/$CLUSTER_NAME/services
sleep 200
curl -k -v --user $AMBARI_USER:$AMBARI_PASSWORD -H "X-Requested-By: ambari" -i -X PUT -d '{"RequestInfo": {"context": "Start All Services via REST"}, "ServiceInfo":{"state":"STARTED"}}' https://$AMBARI_HOST:$AMBARI_PORT/api/v1/clusters/$CLUSTER_NAME/services
sleep 700
Это кажется очень тяжелым. Есть ли способ перезапустить только те службы, которые требуют перезапуска?
1 ответ
Одним из вариантов является использование этого для перезапуска только тех служб, которые необходимо перезапустить из-за реконфигурации:
curl -v --user $AMBARI_USER:$AMBARI_PASSWORD -H "X-Requested-By: ambari" -i -X POST -d '{ "RequestInfo": {"command": "RESTART","context": "Restart all required services","operation_level": "host_component"}, "Requests/resource_filters": [{"hosts_predicate": "HostRoles/stale_configs=true" }] }' https://$AMBARI_HOST:$AMBARI_PORT/api/v1/clusters/$CLUSTER_NAME/requests
Чтобы проверить состояние вышеуказанной команды:
curl -v --user $AMBARI_USER:$AMBARI_PASSWORD -H "X-Requested-By: ambari" -X GET https://$AMBARI_HOST:$AMBARI_PORT/api/v1/clusters/$CLUSTER_NAME/requests/132