HTTP-запрос GAE к GCE через разъем Serverless VP C - PullRequest
0 голосов
/ 02 марта 2020

У меня есть приложение Google App Engine (python 2.7 - это старый проект в процессе обновления!), Которому необходимо отправлять запросы к экземпляру Elastisearch в Google Compute Engine. Я могу выполнять запросы, используя IP-адрес GCE publi c без проблем, но я бы предпочел не предоставлять экземпляр GCE для publi c inte rnet.

  • Приложение ядра приложения находится в области us-central
  • Экземпляр механизма вычислений находится в области us-central1, зона us-central1-f
  • Экземпляр механизма вычислений находится в vp c сеть "по умолчанию". (не устаревшая сеть)
  • Я настроил разъем Serverless VP C в us-central1, в сети по умолчанию.
  • Я настроил механизм приложений app.yaml использовать соединитель.

Но запросы http на частный IP-адрес механизма вычислений (10.128.0.2) приводят к сбоям соединения, и поискам DNS по внутреннему имени DNS для механизма вычислений не удается edit: поиск DNS работает с использованием socket.gethostbyname.

error: An error occured while connecting to the server: Unable to connect to server at URL: http://10.128.0.2:9200/indexname

Тот же запрос успешно выполняется при использовании IP-адреса publi c (когда я открываю брандмауэр VP C на порту 9200).

Фрагмент из конфигурации приложения ядра приложения:

runtime: python27
api_version: '1'
env: standard
threadsafe: false
instance_class: F4

network:
  name: default
vpc_access_connector:
  name: >-
    projects/myproject/locations/us-central1/connectors/connector0301

gcloud beta --account = "myaccount" --project = "myproject" Описание приложения:

authDomain: gmail.com
codeBucket: staging.myproject.appspot.com
databaseType: CLOUD_DATASTORE_COMPATIBILITY
defaultBucket: myproject.appspot.com
defaultHostname: myproject.appspot.com
featureSettings:
  splitHealthChecks: true
  useContainerOptimizedOs: true
gcrDomain: us.gcr.io
id: myproject
locationId: us-central
name: apps/myproject
servingStatus: SERVING

gcloud beta --account = "myaccount" --project = "myproject" описывают примеры вычислений (только фрагмент сети):

networkInterfaces:
- accessConfigs:
  - kind: compute#accessConfig
    name: External NAT
    natIP: SNIPPED
    networkTier: PREMIUM
    type: ONE_TO_ONE_NAT
  fingerprint: M087cXbOWII=
  kind: compute#networkInterface
  name: nic0
  network: https://www.googleapis.com/compute/beta/projects/myproject/global/networks/default
  networkIP: 10.128.0.2
  subnetwork: https://www.googleapis.com/compute/beta/projects/myproject/regions/us-central1/subnetworks/default

gcloud beta --account = "myaccount" --project = " myproject "вычислить сети vp c -access

connectors list --region=us-central1
CONNECTOR_ID   REGION       NETWORK  IP_CIDR_RANGE  MIN_THROUGHPUT  MAX_THROUGHPUT  STATE
connector0301  us-central1  default  10.8.0.0/28    200             300             READY

gcloud beta --account =" myaccount "--project =" m yproject "compute networks vp c -коннекторы доступа описывают соединитель0301 --region = us-central1

ipCidrRange: 10.8.0.0/28
maxThroughput: 300
minThroughput: 200
name: projects/myproject/locations/us-central1/connectors/connector0301
network: default
state: READY

gcloud --account =" myaccount "--project =" myproject "compute firewall-rules описывают по умолчанию -allow-internal

allowed:
- IPProtocol: tcp
  ports:
  - 0-65535
- IPProtocol: udp
  ports:
  - 0-65535
- IPProtocol: icmp
creationTimestamp: '2020-02-11T11:18:09.906-08:00'
description: Allow internal traffic on the default network
direction: INGRESS
disabled: false
id: '1434668200291681054'
kind: compute#firewall
logConfig:
  enable: true
name: default-allow-internal
network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
priority: 65534
selfLink: https://www.googleapis.com/compute/v1/projects/myproject/global/firewalls/default-allow-internal
sourceRanges:
- 10.128.0.0/9
- 10.8.0.0/28

Не работают ли серверные коннекторы VP C для внутренних IP-запросов http?

1 Ответ

1 голос
/ 02 марта 2020

Не работают ли серверные коннекторы VP C для внутренних IP-запросов http?

Безсерверные коннекторы VP C работают для внутренних IP-запросов HTTP, используя urllib.request во время выполнения python37 , но не используя urllib2 или urlfetch из google.appengine.api во время выполнения python27. (Напомним, что urllib2 использует urlfetch под капотом на движке приложения python27 )

Поскольку это часть более старого проекта, который медленно перемещается с python27 на python37, сейчас я поместил внутренний ip HTTP-запросы в отдельный сервис, чтобы они могли использовать новую среду выполнения.

...