如何在Swisscom CloudFoundry中创建后备路由

时间:2017-11-21 16:15:32

标签: routing cloudfoundry swisscomdev

我想使用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)还是有其他方法来实现这一点吗?

2 个答案:

答案 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