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. Воспроизвести проблему очень просто, выполните следующие действия:

  1. Установите Terraform, если вы еще не сделали
  2. устанавливать gcloud если вы еще не сделали
  3. Создать новый проект GCP
  4. Включите API Cloud Dataproc для вашего нового проекта
  5. gcloud auth application-default login #creates a file containing credentials that terraform will use
  6. git clone git@github.com:jamiekt/democratising-dataproc.git && cd democratising-dataproc
  7. export GCP_PROJECT=name-of-project-you-just-created
  8. make init
  9. make apply

Это должно успешно раскрутить сеть, подсеть, экземпляр cloudsql, пару блоков хранения (одно из которых содержит cloud-sql-proxy.sh), служебную учетную запись, брандмауэр, а затем потерпеть неудачу при попытке создать кластер dataproc.

если бы кто-нибудь мог взглянуть и сказать мне, почему это не удается, я был бы очень благодарен.

1 ответ

Похоже, вы не используете последнюю версию скрипта cloud-sql-proxy.sh в шаблоне cloud-sql-proxy.sh.tmpl. Возможно, вы захотите обновить свой шаблон до последней версии скрипта из действия ввода-вывода Dataproc Cloud SQL и действия Hive Metastore.

Вот разница между ними.

Здесь был ряд проблем, которые теперь были решены:

Состояние репо на момент публикации этого сообщения будет работать так, как задумано (т. Е. Создать с помощью 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
Другие вопросы по тегам