Routing 如何在Swisscom CloudFoundry中创建回退路由

Routing 如何在Swisscom CloudFoundry中创建回退路由,routing,cloud-foundry,swisscomdev,Routing,Cloud Foundry,Swisscomdev,我想用Swisscom CloudFoundry解决方案创建一个备用路由(*)。我当前的应用程序都映射到如下URL: https://sample-application.scapp.io 当应用程序正在部署或停止时,我收到一个404路由错误: 404未找到:请求的路由('sample-application.scapp.io')不存在 我想通过退回到另一个应用程序来防止这种情况。使用*作为主机应该定义这样的回退路由(请参阅)。但是,使用以下清单部署回退应用程序会引发错误: 舱单: 错误: 路

我想用Swisscom CloudFoundry解决方案创建一个备用路由(
*
)。我当前的应用程序都映射到如下URL:

https://sample-application.scapp.io
当应用程序正在部署或停止时,我收到一个
404
路由错误:

404未找到:请求的路由('sample-application.scapp.io')不存在

我想通过退回到另一个应用程序来防止这种情况。使用
*
作为主机应该定义这样的回退路由(请参阅)。但是,使用以下清单部署回退应用程序会引发错误:

舱单:

错误:

路线*.scapp.io。。。 嗯

费格施拉根 Serverfehler,状态代码:400,Fehlercode:210003,Nachricht:主机已被占用:*



很明显,
*.scapp.io
可能不可用,我仍然希望将脱机应用程序重新路由到备用页。通过使用第二个子域(例如,
my application.company name.scapp.io
)是否可以实现这一点,或者是否有其他方法可以实现这一点?

使用共享域时无法实现这一点(共享域是由您的服务提供商提供的域)。但是,您可以通过使用自己的域轻松做到这一点。 e、 g.my-app1.my-domain.com->*.my-domain.com 或者,您可以在自己的域上使用子域: e、 g.my-app.clolud.my-domain.com->*.cloud.my-domain.com


如果您想坚持使用共享域,可以使用路由服务来实现错误页面

通常,绿-蓝部署是通过使用第二个应用程序实例来完成的。你可以这样做:

./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

虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。谢谢您的反馈。从你的观点来看,你遗漏了什么?代码片段中有注释。您是否仔细阅读了链接的问题及其答案?是的,我阅读了。但我的答案很明显,这就是为什么我问你缺少什么-然后我可以尝试改进:-)。谢谢你的回答!事实上,我通过使用维护回退应用程序解决了这个问题,而不是在部署过程中重新路由。谢谢!我用自己的
my domain.com
解决了这个问题,并创建了一个通配符路由
*.my domain.com
,路由到一个后备应用程序。应用程序
myapp.my domain.com
有一个指向
myapp.scapp.io
的acutal CNAME链接。
./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