我想使用Swisscom CloudFoundry解决方案创建一个后备路由(*
)。我当前的应用程序都映射到这样的URL:
https://sample-application.scapp.io
当部署或停止应用程序时,我收到404
路由错误:
404 Not Found:请求的路线('sample-application.scapp.io')不存在。
我希望通过回退到另一个应用程序来防止这种情况。使用*
作为主机应该定义这样的回退路由(请参阅docs)。但是,使用以下清单部署回退应用程序会引发错误:
清单:
---
path: .
instances: 1
buildpack: nodejs_buildpack
applications:
- name: fallback-app-165615
domain: scapp.io
host: '*'
memory: 128M
disk_quota: 1024M
错误:的
Erstellen von Route * .scapp.io ... 行
FEHLGESCHLAGEN Serverfehler,状态代码:400,Fehlercode:210003,Nachricht:主持人:*
很明显,*.scapp.io
可能不可用,我仍然希望将我的离线应用程序重新路由到后备页面。这是通过使用第二个子域(例如my-application.company-name.scapp.io
)还是有其他方法来实现这一点吗?
答案 0 :(得分:5)
使用共享域时,无法实现此目的(共享域是服务提供商提供的域)。但您可以使用自己的域轻松完成此操作。 例如my-app1.my-domain.com - > *。我-domain.com 或者您可以在自己的域中使用子域: 例如my-app.clolud.my-domain.com - > * .cloud.my-domain.com
如果您想坚持共享域,可以使用路由服务来实现错误页面。 https://docs.cloudfoundry.org/services/route-services.html
答案 1 :(得分:2)
通常,使用第二个应用实例进行绿蓝部署。你可以这样做:
./cf login -a "https://api.lyra-836.appcloud.swisscom.com" -u "${APC_USERNAME}" -p "${APC_PASSWORD}" -o "${APC_ORGANIZATION}" -s "${APC_SPACE}"
# make sure routes will be ready
./cf create-route "${APC_SPACE}" scapp.io --hostname mytest-app
./cf create-route "${APC_SPACE}" scapp.io --hostname mytest-app-blue-green
sleep 2
# secure working app
./cf rename mytest_app mytest_app_old || true
./cf unmap-route mytest_app_old scapp.io --hostname mytest-app-blue-green || true
sleep 2
# push new app
./cf push mytest_app_new --no-route
./cf map-route mytest_app_new scapp.io --hostname mytest-app-blue-green
./cf map-route mytest_app_new applicationcloud.io --hostname mytest-app-blue-green
sleep 5
# test app
response=$(curl -sIL -w "%{http_code}" -o /dev/null "mytest-app-blue-green.scapp.io")
if [[ "${response}" != "200" ]]; then
./cf delete -f mytest_app_new || true
echo "App did not respond as expected, HTTP [${response}]"
exit 1
fi
# finish blue-green deployment of app
./cf delete -f mytest_app || true
./cf rename mytest_app_new mytest_app
./cf map-route mytest_app scapp.io --hostname mytest-app
./cf unmap-route mytest_app scapp.io --hostname mytest-app-blue-green || true
./cf delete -f mytest_app_old
# show status
./cf apps
./cf app mytest_app
./cf logout