Можно ли подключиться к прокси-серверу Cloud SQL через внутренний или внешний IP-адрес виртуальной машины Host Compute Engine?

Я тестирую следующую конфигурацию.

  • Cloud SQL (tetsql-1) в регионе X, зоне A
  • Виртуальная машина Compute Engine (TestVM-1) в той же зоне X региона A. ОС - Centos 7.
  • Виртуальная машина Compute Engine использует облачный прокси-сервер SQL на порту, отличном от порта по умолчанию (9090).

С приведенной выше конфигурацией я могу войти в testsql-1 из TestVM-1 с помощью следующей команды:

  `mysql -h 127.0.0.1 --port 9090 -u testuser -D testDB -p`

Однако я не могу использовать внутренний IP-адрес TestVM-1 в приведенной выше команде. Выдает ошибку.

Еще одно наблюдение: я могу сделать telnet 127.0.0.1 9090, но когда я пытаюсь, telnet <VM -Internal-IP> 9090 возвращает ошибку отказа в соединении.

Кто-нибудь знает, ожидается ли это поведение? Если это ожидается, то почему?


person Cyac    schedule 19.06.2019    source источник
comment
@oakinlaja, не уверен, понял ли я тебя. Я могу подключиться к CloudSQL через прокси, когда использую 127.0.0.1 в качестве IP-адреса хоста. Угадайте, что я пытаюсь выяснить, например, почему прокси Cloud SQL привязан только к IP 127.0.0.1, а не к частному IP-адресу хоста GCE.   -  person Cyac    schedule 21.06.2019
comment
Это требование для подключения с использованием сокетов TCP, доступ к прокси осуществляется через 127.0.0.1. С сокетами TCP прокси доступен как локальный хост. Существуют другие доступные варианты для подключения из вашего экземпляра Compute Engine. используя свой частный IP-адрес или общедоступный IP-адрес экземпляра, однако с прокси CloudSQL, особенно при использовании сокетов TCP, доступ к прокси-серверу можно получить только через 127.0.0.1. Тем временем я провел тест с 0.0.0.0, и он тоже сработал.   -  person oakinlaja    schedule 21.06.2019
comment
@oakinlaja Я не понял, что тест с 0.0.0.0 работал. Вы имели в виду, что вам удалось запустить прокси-сервер cloudql с bind = 0.0.0.0? На основании оставшейся части вашего комментария я предполагаю, что даже в этом случае можно подключиться к прокси только с помощью mysql -h 127.0.0.1 (или localhost). Первый ответ, проясняющий этот момент, был от Джона Хэнли, поэтому я принимаю этот ответ - если вы не хотите добавить более подробный.   -  person Cyac    schedule 27.06.2019
comment
Означает ли это, что экземпляр GCE не может подключиться к прокси-серверу Cloudsql на другом экземпляре GCE?   -  person David    schedule 15.07.2019
comment
@ Дэвид Да, это означает, что вы не можете из того, что я видел и дополнительно подтверждено oakinlaja и Джоном Хэнли   -  person Cyac    schedule 16.07.2019


Ответы (4)


Причина, по которой вы можете подключиться к 127.0.0.1, но не можете подключиться с использованием частного IP-адреса виртуальной машины, заключается в том, что прокси НЕ прослушивает частный IP-адрес.

Прокси-сервер Cloud SQL прослушивает внутренний адрес адаптера обратной связи 127.0.0.1. Этот адрес существует только внутри компьютера.

person John Hanley    schedule 19.06.2019
comment
я тоже так думал. И я пытался выяснить, есть ли способ заставить Cloud SQL Proxy прослушивать все IP-адреса хоста - что-то вроде опции bind = 0.0.0.0. Не нашел такого варианта. Вы знаете, было ли это намеренно отключено по какой-то причине? - person Cyac; 21.06.2019
comment
Я не знаю. Исходный код опубликован на GitHub. github.com/GoogleCloudPlatform/cloudsql-proxy - person John Hanley; 21.06.2019

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

Чтобы настроить другой IP-адрес, вы должны указать его в параметре instance:

./cloud_sql_proxy -instances=<myCloudSQLproject:myCloudSQLzone:mycloudsqlinstance>=tcp:<IP_Address>:<PORT>

Что-то вроде этого:

./cloud_sql_proxy -instances=project_xxx:us-central1:database_yyy=tcp:10.203.23.12:9090

Эта конфигурация также позволяет подключаться к этому облачному прокси с других хостов.

person J.García    schedule 03.01.2020
comment
Наконец, спасибо @ J.Garcia. Это спасло мне день !! - person Abhinay Gupta; 03.02.2021

Вы можете подключиться со своей виртуальной машины к Cloud SQL, поскольку используете прокси. Если вы хотите подключиться к своему Cloud SQL, тогда у вас есть белый список IP-адреса вашей виртуальной машины на вкладке подключений Cloud SQL, пожалуйста, обратитесь к этому документация.

person Christopher    schedule 19.06.2019

Это ожидаемое поведение. Частные IP-адреса доступны только из виртуального частного облака (VPC). Чтобы ресурс (например, экземпляр GCE) мог подключиться, он также должен находиться в этом VPC.

См. Эту страницу, чтобы узнать, как добавить экземпляр GCE в VPC, и перейдите на эту страницу для получения дополнительных сведений о среде. требования к частному IP.

person kurtisvg    schedule 19.06.2019