cloud-sql-proxy для GCP Dataproc не работает, nc: не удается подключиться к локальному порту 3306 (tcp): соединение отказано
Я использую Terraform для создания кластера dataproc, который использует экземпляр GCP cloudsql в качестве hivemetastore, проект terrafrm создает кластер и все его предпосылки (сеть, учетная запись службы, экземпляр cloudql и пользователь и т. Д.). cloud-sql-proxy.sh
предоставляется, чтобы помочь с этим, однако я не могу заставить его работать, когда кластер создан cloud-sql-proxy.sh
не удается с ошибкой:
nc: подключение к локальному порту 3306 (tcp) не удалось: соединение отклонено
Я ударился головой о стену, пытаясь понять, почему, но не могу понять ее, поэтому надеюсь, что кто-то здесь может помочь.
Я принимал проект terraform по адресу https://github.com/jamiekt/democratising-dataproc. Воспроизвести проблему очень просто, выполните следующие действия:
- Установите Terraform, если вы еще не сделали
- устанавливать
gcloud
если вы еще не сделали - Создать новый проект GCP
- Включите API Cloud Dataproc для вашего нового проекта
gcloud auth application-default login #creates a file containing credentials that terraform will use
git clone git@github.com:jamiekt/democratising-dataproc.git && cd democratising-dataproc
export GCP_PROJECT=name-of-project-you-just-created
make init
make apply
Это должно успешно раскрутить сеть, подсеть, экземпляр cloudsql, пару блоков хранения (одно из которых содержит cloud-sql-proxy.sh), служебную учетную запись, брандмауэр, а затем потерпеть неудачу при попытке создать кластер dataproc.
если бы кто-нибудь мог взглянуть и сказать мне, почему это не удается, я был бы очень благодарен.
1 ответ
Похоже, вы не используете последнюю версию скрипта cloud-sql-proxy.sh в шаблоне cloud-sql-proxy.sh.tmpl. Возможно, вы захотите обновить свой шаблон до последней версии скрипта из действия ввода-вывода Dataproc Cloud SQL и действия Hive Metastore.
Вот разница между ними.
Здесь был ряд проблем, которые теперь были решены:
- service_account_scopes необходимо указать и
hive:hive.metastore.warehouse.dir
свойство необходимо настройки - Terraform удаляет пользователя root по умолчанию из MySQL, поэтому он должен быть воссоздан. Я пропустил (среди прочего) атрибут хоста (
host = '%'
) - различные другие вещи
Состояние репо на момент публикации этого сообщения будет работать так, как задумано (т. Е. Создать с помощью Terraform кластер dataproc, использующий общее хранилище метаданных куста).
Спасибо @igor-dvorzhak за ваши ответы, ваша ссылка на статью о настройке Hive Metastore для использования Cloud SQL поставила меня на правильный путь..
У меня такая же проблема, следуя руководству отсюда
Я не могу понять, какое решение вы даете. Кажется, что улей пытается получить доступ к базе данных через localhost, я не могу понять, почему Вот журнал из dataproc:
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable mysql
Removed /etc/systemd/system/multi-user.target.wants/mysql.service.
2020-10-07 14:05:49 URL:https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 [16361206/16361206] -> "cloud_sql_proxy.linux.amd64" [1]
Created symlink /etc/systemd/system/multi-user.target.wants/cloud-sql-proxy.service → /usr/lib/systemd/system/cloud-sql-proxy.service.
About to run 'nc -zv localhost 3306' with retries...
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 1 failed! Sleeping 1.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 2 failed! Sleeping 1.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 3 failed! Sleeping 2.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 4 failed! Sleeping 3.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 5 failed! Sleeping 5.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 6 failed! Sleeping 8.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 7 failed! Sleeping 13.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 8 failed! Sleeping 21.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 9 failed! Sleeping 34.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 10 failed! Sleeping 55.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 11 failed! Sleeping 89.
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused
'nc -zv localhost 3306' attempt 12 failed! Sleeping 144.
Final attempt of 'nc -zv localhost 3306'...
nc: connect to localhost port 3306 (tcp) failed: Connection refused
nc: connect to localhost port 3306 (tcp) failed: Connection refused