Непонятная проблема с кластерными запросами в базе данных clickhouse

Давно ничего не писал про работу , и вот попалась мне не решаемая проблема в кластере кликхауса, которая сьела кучу моего времени, удалось найти еще много людей с аналогичной проблемой у которых тоже не было решения.

Воспроизвести проблему на аналогично кластере созданом таким же сценарием в ansible не удалось, диагностировать точно причину тоже.

При любом запросе с on cluster вылетала ошибка таймаута на одном шарде из двух

2018.09.30 16:24:26.319444 [ 127 ] {50526b20-0b6d-4b5d-83e3-0554ddeb0acf} <Error> executeQuery: Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000015 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 2 unfinished hosts (0 of them are currently active), they are going to execute the query in background, e.what() = DB::Exception (from 127.0.0.1:58828) (in query: QUERY,
Stack trace:
0. /usr/bin/clickhouse-server(StackTrace::StackTrace()+0x16) [0x9491e46]
1. /usr/bin/clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::alloc
ator<char> > const&, int)+0x22) [0x3019952]
2. /usr/bin/clickhouse-server(DB::DDLQueryStatusInputSream::readImpl()+0x1096) [0x70b6116]
3. /usr/bin/clickhouse-server(DB::IProfilingBlockInputStream::read()+0x25a) [0x698ecfa]
4. /usr/bin/clickhouse-server(DB::AsynchronousBlockInputStream::calculate()+0x56) [0x6984316]
5. /usr/bin/clickhouse-server() [0x6984780]
6. /usr/bin/clickhouse-server(ThreadPool::worker()+0x19e) [0x9692b5e]
7. /usr/bin/clickhouse-server() [0x9e659ef]
8. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fb0b58d16ba]
9. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fb0b4ef241d]

 

Сервера при этом отлично друг друга видят , подключаются клиентами, дистрибьютед таблицы тоже работают хорошо

Если ковырять обычный лог кликхауса можно найти строчку

[ 40 ] <Debug> DDLWorker: Will not execute task query-0000000015: There is no a local address i
n host list

И тут у меня сразу закрались подозрения, что у меня не верный файлы /etc/hosts и /etc/hostname, в целом они конфигурируются ансиблом и должны быть всегда правильными.

Как оказалось нет cloudinit их обновил и добавил в /etc/hosts запись 127.0.0.1 hostname, которая   сломала все запросы on cluster к базе данных.

Итого выкатил эти файлы сценарием ансибла , перезапустил clickhouse и все заработало. Потом написал небольшой сценарий убирающий из файла /etc/cloud/cloud.cfg строчки manage_etc_hosts и set_hostname

 

 

Вы можете пропустить до конца и оставить ответ. Pinging в настоящее время не доступны.

Написать ответ