Nix*_*arn 4 google-app-engine redis google-cloud-platform google-cloud-memorystore
我一直在尝试从 App Engine 实例连接到 Redis 实例,但没有成功。我遇到连接超时。
我已经在 app.yaml 中设置了主机和端口:
env_variables:
REDIS_HOST: '10.0.0.3'
REDIS_PORT: '6379'
Run Code Online (Sandbox Code Playgroud)
并尝试按照示例中指定的方式进行连接:
redis_host = os.environ.get('REDIS_HOST', 'localhost')
redis_port = int(os.environ.get('REDIS_PORT', 6379))
redis_client = redis.StrictRedis(host=redis_host, port=redis_port)
Run Code Online (Sandbox Code Playgroud)
但它不起作用,一些文档似乎需要 en vpc 访问连接器,但这些仅在 us-cental1 中可用,并且我在 asia-northeast1 中运行了 App Engine 实例和 Memorystore (Redis)。
有人有幸让这个工作吗?一般来说,谷歌非常擅长记录他们的东西,但这对我来说似乎缺乏,实际上没有关于如何让它工作的明确文档。
1.下载并安装云SDK。
2.如果您已经安装了Cloud SDK,请运行以下命令进行更新:
gcloud components update
Run Code Online (Sandbox Code Playgroud)
3.创建一个新项目:
gcloud projects create [YOUR_PROJECT_ID] --set-as-default
Run Code Online (Sandbox Code Playgroud)
4.验证项目已创建:
gcloud projects describe [YOUR_PROJECT_ID]
Run Code Online (Sandbox Code Playgroud)
5.设置刚刚创建的项目:
gcloud config set core/project PROJECT_ID
Run Code Online (Sandbox Code Playgroud)
6.使用您的项目初始化您的 App Engine 应用程序并选择其区域:
gcloud app create --project=[YOUR_PROJECT_ID]
Run Code Online (Sandbox Code Playgroud)
7.出现提示时,选择您希望 App Engine 应用程序所在的区域。记住该区域,我们将在同一区域中创建 Redis 实例和 VPC 连接器。我的 App Engine 应用程序位于europe-west2
8.确保您的项目启用了计费功能。需要将计费帐户链接到您的项目,以便将应用程序部署到 App Engine。
9.安装以下先决条件:
b.运行以下命令来安装包含适用于 Python 3.7 的 App Engine 扩展的 gcloud 组件:
gcloud components install app-engine-python
Run Code Online (Sandbox Code Playgroud)
10.创建 Memorystore for Redis 实例。输入以下命令在“europe-west2”区域创建 2 GiB 基本层 Redis 实例
gcloud redis instances create myinstance --size=2 --region=europe-west2 /
--redis-version=redis_4_0
Run Code Online (Sandbox Code Playgroud)
11.创建实例后,输入describe命令获取实例的IP地址和端口。您将使用主机和端口值连接到实例。同时查找Redis实例的授权网络
gcloud redis instances describe myinstance --region=europe-west2
Run Code Online (Sandbox Code Playgroud)
12.配置无服务器 VPC 访问。确保在与您的应用程序和 Redis 实例相同的区域中创建连接器,并确保连接器连接到 Redis 实例的授权 VPC 网络。记住连接器的名称。
13.确保为您的项目启用无服务器 VPC 访问 API:
gcloud services enable vpcaccess.googleapis.com
Run Code Online (Sandbox Code Playgroud)
14.使用以下命令创建连接器:
gcloud compute networks vpc-access connectors create connector --network default --region europe-west2 --range 10.10.0.0/28
Run Code Online (Sandbox Code Playgroud)
15.使用前请验证连接器是否处于 READY 状态,输出应包含行 state: READY。
16.克隆 python 存储库。
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/memorystore/redis
Run Code Online (Sandbox Code Playgroud)
17.准备应用程序以部署App Engine Standard。更新应用程序的配置以指定您的 Serverless VPC Access 连接器以及 Redis 实例的 IP 地址和端口:
cd gae_standard_deployment/
cat app.yaml
Run Code Online (Sandbox Code Playgroud)
runtime: python37
entrypoint: gunicorn -b :$PORT main:app
# Update with Redis instance details
env_variables:
REDISHOST: '<REDIS_IP>'
REDISPORT: '6379'
# Update with Serverless VPC Access connector details
vpc_access_connector:
name: 'projects/<PROJECT_ID>/locations/<REGION>/connectors/<CONNECTOR_NAME>'
Run Code Online (Sandbox Code Playgroud)
18.将应用程序部署到App Engine标准环境
cd ..
cp gae_standard_deployment/app.yaml .
Run Code Online (Sandbox Code Playgroud)
19.运行部署命令
gcloud beta app deploy
Run Code Online (Sandbox Code Playgroud)
20.部署完成后,通过以下 URL 访问您的应用,并将 [PROJECT_ID] 替换为您的 Google Cloud 项目 ID。
Visitor number: 4
Run Code Online (Sandbox Code Playgroud)
成功!
21.准备应用程序以部署App Engine Flex。更新应用程序的配置以指定 Redis 实例的 IP 地址和端口:
cd gae_flex_deployment/
cat app.yaml
Run Code Online (Sandbox Code Playgroud)
cp gae_flex_deployment/app.yaml 。
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 3
# Update with Redis instance IP and port
env_variables:
REDISHOST: '<REDIS_IP>'
REDISPORT: '6379'
# Update with Redis instance network name
network:
name: default
Run Code Online (Sandbox Code Playgroud)
22.将应用程序部署到App Engine标准环境
cd ..
cp gae_flex_deployment/app.yaml .
Run Code Online (Sandbox Code Playgroud)
23.运行部署命令
gcloud beta app deploy
Run Code Online (Sandbox Code Playgroud)
24.部署完成后,通过以下 URL 访问您的应用,并将 [PROJECT_ID] 替换为您的 Google Cloud 项目 ID。
Visitor number: 4
Run Code Online (Sandbox Code Playgroud)
成功!
| 归档时间: |
|
| 查看次数: |
5693 次 |
| 最近记录: |