我突然无法使用 gcloud app deploy 进行部署。
它挂在“为服务[默认]构建和推送图像”上。那时,Python 进程占用了 99% 的 CPU,并一直持续到部署超时。我尝试升级 Python 无济于事。
无论 Google Appengine 项目如何,它都会发生。尝试安装不同版本的 gcloud CLI 无济于事。
我的队友可以使用相同的命令成功部署。有任何想法吗?
我突然无法使用 gcloud app deploy 进行部署。
它挂在“为服务[默认]构建和推送图像”上。那时,Python 进程占用了 99% 的 CPU,并一直持续到部署超时。我尝试升级 Python 无济于事。
无论 Google Appengine 项目如何,它都会发生。尝试安装不同版本的 gcloud CLI 无济于事。
我的队友可以使用相同的命令成功部署。有任何想法吗?
我使用谷歌云计算引擎创建了一台虚拟机。
我研究了如何安装 Windows 10,我知道安装起来要困难得多。
谷歌云只提供安装 windows server 2019 datacenter 版本 1809(带桌面版)的可能性。我想将其更新到 2004 版。
如果有可能。谁能帮我?
长话短说-我的子域在域工作时不起作用。Chrome 只显示错误 - DNS_PROBE_FINISHED_NXDOMAIN。这是配置的图像。
我尝试了不同的方法——验证子域,添加子域 CNAME,为子域添加 A 和 AAAA 记录。要么它抛出错误,就像现在一样。或者它指向与域相同的位置。
有没有办法为 Google App Engine 上的实例使用的磁盘手动配置 IOPS?
我使用 256GB 磁盘获得的默认吞吐量非常糟糕(60MiB/s 突发,之后稳定为 30MiB/s,用于读取和写入)。
App Engine 中是否有以下选项:
我正在运行一个应用程序/网站,每天最多有 200 名访问者。它每月运行成本约为 5 欧元。它是标准环境中的 python 3烧瓶应用程序。
但从 6 月 17 日开始,我开始每天收到 1 欧元左右的账单。月底预付 36 欧元。
它在 6 月 20 日停止。重新启动,然后在 26 日再次停止,并在 6 月 30 日再次重新启动。我所看到的只是前端实例正常运行时间成本。
我已经删除了我的旧版本,所以我看不到任何相关的统计数据。但是每天大约 200 名访问者的流量仍然相同,就像分析一样。
我没有对我的应用程序进行任何更改。我认为他们是更多使用 Google TTS API 页面的用户。这个页面向我的网站发出请求,所以我认为更多的请求会导致更多的正常运行时间。
我改回该页面以使用旧的(已弃用的)Microsoft TTS API,以便用户使用 ajax,并且不要访问我的网站。
但我没有看到任何变化,我仍然每天支付 1 欧元的费用。我不知道为什么。
更正:我的更改将成本降低到每天 0.6 欧元。但这是之前成本的 6 倍。所以,问题仍然存在。
我是这个话题的新手。我们使用 GCP(App Engine,标准)来托管一个 nodejs 应用程序。然而,出于不同的原因,我们决定创建两个服务——stage和default(认为是同一个应用程序并行运行)。
默认一个与自定义域(GAE 提供的 SSL 证书)连接并正常工作。可以使用 google 生成的 URL (stage-dot-example.appspot.com) 访问舞台服务,并且显然受到 ssl 证书的保护。
然后,我们必须通过合作伙伴的安全审查,我们为此使用了阶段。
结果是我们必须禁用 TLSv1.0 和 TLSv1.1。使用 GAE - 我们需要创建负载均衡器并将 SSL 策略切换到特定于 TLS 的策略。
问题:要创建外部 HTTPS 负载平衡器 - 您必须创建 SSL 证书资源(即您必须拥有域)。使用自定义域,我想这应该不难,但我该如何为舞台做到这一点?我是否在 SSL 证书资源中使用我的阶段域 (...appspot.com)?如果是这样 - 我如何处理 DNS 记录和外部 IP(您需要将 IP 切换到 A 和 AAAA 记录中的外部 IP)?
或者如果我做错了什么 - 你能指出我正确的方向吗?
更新 + 更新 2
我决定走 Wojtek_B 提出的路径。所以我验证了 stage.example.com,它在没有负载均衡器的情况下运行良好。
那时,我的 DNS 记录包括来自 @ 的 4 条 A 和 4 条 AAAA 记录,带有 google 提供的 IP,以及 3 条 CNAME 记录(www、stage、www.stage)指向“ghs.googlehosted.com”。
接下来,我创建了具有 4 个域的 SSL 证书资源:example.com、www.example.com、stage.example.com、www.stage.example.com。
然后我添加了一个外部 HTTPS 负载均衡器(使用外部 IP,例如,1.2.3.4 和上面提到的 SSL 证书)。
我为@、www、stage 和www.stage 添加了新的A 记录以指向1.2.3.4。我已经删除了 CNAME 记录,因为它们过多。
等待 2-3 小时(TTL 为 1/2 小时)后,所有子域都被激活,除了 example.com(卡在 FAILED_NOT_VISIBLE 中)。
回答
一段时间以来,我一直在与托管 SSL 证书陷入供应状态作斗争。我遵循本教程,您应该只创建外部 IP (v4)。但我也有 4 条 AAAA 记录(在域验证期间获得)(显然)ipv6。所以我尝试保留外部 IP (v6),不到一分钟就将所有 4 个(子)域推送到活动状态。
在短短几分钟内,通过 LB 的两个服务都启动并运行所需的 TLS 配置。
根据文档https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions/patch我们应该能够通过将 serviceStatus 更改为来停止应用引擎实例停止。
但是,文档是模棱两可的。有谁知道如何通过 API 停止应用引擎实例?
不清楚的元素:
googlecloudsdk.command_lib.app.deploy_util.VersionPromotionError:您的部署已成功,但将新版本升级为默认版本失败。您可能无权更改流量拆分。更改流量拆分需要所有者、编辑者、App Engine 管理员或 App Engine 服务管理员角色。请联系您的项目所有者并使用该gcloud app services set-traffic --splits <version>=1
命令将流量重定向到您新部署的版本。原始错误:INVALID_ARGUMENT:无效请求。
gcloud app services set-traffic --splits <version>=1
命令将流量重定向到您新部署的版本。原始错误:INVALID_ARGUMENT:无效请求。这使用了具有 App Engine Admin、Deployer 和 storage admin 的 Google 服务帐户。
有任何想法吗?谢谢
我曾尝试在 Google App Engine 柔性环境中部署烧瓶应用程序。部署应用程序时,出现以下错误。
raceback (most recent call last):
File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process
self.load_wsgi()
File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
self.wsgi = self.app.wsgi()
File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
return self.load_wsgiapp()
File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
return util.import_app(self.app_uri)
File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app
mod = importlib.import_module(module)
File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'main'
[2021-03-06 14:39:52 +0000] [8] [INFO] Worker exiting (pid: 8)
[2021-03-06 14:39:52 +0000] [1] [INFO] Shutting down: Master
[2021-03-06 14:39:52 +0000] [1] [INFO] Reason: Worker failed to boot.
这是 requirements.txt 文件。
backcall==0.2.0
click==7.1.2
cloudpickle==1.6.0
colorama==0.4.4
cycler==0.10.0
decorator==4.4.2
Flask==1.1.2
Flask-Cors==3.0.10
ipython==7.21.0
ipython-genutils==0.2.0
itsdangerous==1.1.0
jedi==0.18.0
Jinja2==2.11.3
joblib==1.0.1
kiwisolver==1.3.1
llvmlite==0.35.0
MarkupSafe==1.1.1
matplotlib==3.2.0
numba==0.52.0
numpy==1.20.1
pandas==1.2.3
parso==0.8.1
pickle-mixin==1.0.2
pickleshare==0.7.5
Pillow==8.1.1
prompt-toolkit==3.0.16
Pygments==2.8.0
pyparsing==2.4.7
PyQt5==5.15.3
PyQt5-Qt==5.15.2
PyQt5-sip==12.8.1
python-dateutil==2.8.1
pytz==2021.1
scikit-learn==0.24.1
scipy==1.6.1
shap==0.39.0
six==1.15.0
sklearn==0.0
slicer==0.0.7
threadpoolctl==2.1.0
tqdm==4.58.0
traitlets==5.0.5
wcwidth==0.2.5
Werkzeug==1.0.1
gunicorn==20.0.4
和 app.yaml 文件
runtime: python
env: flex
entrypoint: gunicorn -b:$PORT main:app
runtime_config:
python_version: 3.7
automatic_scaling:
min_num_instances: 1
max_num_instances: 2
我还在下面附上了我的 app.py 文件。
from flask import Flask, request, render_template, send_from_directory
from flask_cors import CORS
from ml import preprocess, predict
app = Flask(__name__)
CORS(app)
@app.route('/assets/<path:path>')
def send_js(path):
return send_from_directory('static/assets', path)
@app.route('/', methods = ['POST', 'GET'])
def index():
if request.method == 'POST':
prediction_dict = preprocess.transform(request.data)
scaled = preprocess.scaler([list(prediction_dict.values())])
return preprocess.dump({
'message': predict.do_predict(scaled).tolist()[0],
'review': predict.do_cause(prediction_dict)
})
else:
return render_template('index.html')
@app.route('/status', methods = ['GET'])
def status():
return preprocess.dump({'accuracy': 95.02});
if __name__ == '__main__':
# This is used when running locally. Gunicorn is used to run the
# application on Google App Engine. See entrypoint in app.yaml.
app.run(host='127.0.0.1', port=8080, debug=True)
从本地计算机将应用程序部署到应用程序引擎时出现以下错误。我在终端中使用了以下命令:
./google-cloud-sdk/bin/gcloud app deploy api.n**.********.com/app.yaml --version api-**t
出于安全原因,我使用“*”隐藏实际字母。运行上述命令时出现以下错误:
ERROR: (gcloud.app) Invalid choice: 'deploy api.n**.********.com/app.yaml --version'.
Maybe you meant:
gcloud app deploy
Showing 1 out of 53 suggestions.
To search the help text of gcloud commands, run:
gcloud help -- SEARCH_TERMS
它一直工作到昨天晚上。但它今天不起作用。如何解决这个问题?请帮我解决这个问题。谢谢。
问候,贾纳塔南