在Bluemix運行的應用程序將至少有兩個IP地址,爲私人和外部尋址的一個。同樣,對於主機名,其他人用來與應用程序服務器交談的路由是在外部配置的 - 並且可能根本沒有路由。最好的解決方案將取決於你想用主機名來做什麼。
編輯:
如果目的是實例之間的通信,依靠IP地址的直接知識將有問題的,因爲事物的雲給你是一個動態的網絡環境之一。一些選項是消息傳遞或分佈式緩存,如一些評論所提及的。另一種方法是使用測試版Bluemix Service Discovery service,這需要照顧的私有IP地址(你的應用程序知道)映射到公網IP地址(您的應用程序確實不知道)的。
應用程序可以register itself with the registry通過使POST請求到「https://servicediscovery.ng.bluemix.net/api/v1/instances」 REST端點。例如,在捲曲的形式,這將是
curl -X POST -H "Authorization: Bearer auth_token" -H "Content-Type: application/json" https://servicediscovery.ng.bluemix.net/api/v1/instances -d '{"service_name":"[service_name]", "endpoint": {"type":"tcp", "value":"[host]"}, "status":"UP", "ttl":[TTL_value], "metadata":{"name":"instance_name"}}'
其中[主持人]是應用程序的私有IP地址,並TTL_value是實例將如何秒長心跳之間等待,並且令牌可以讀關閉服務發現服務的Bluemix控制檯。要list the services you've registered,你會那麼做
curl -X GET -H "Authorization: Bearer auth_token" https://servicediscovery.ng.bluemix.net/api/v1/services/Service_Name
除了允許內部IP地址,從公網IP地址脫鉤,服務發現的方法可以讓你的應用程序的不同組件中的負載均衡,並允許故障轉移,如果一個實例失敗。
我需要這不通過外部IP地址跨實例通信。我發現在應用程序啓動時使用-c選項發送命令的選項。 我在推送打包的WLP服務器時嘗試使用此功能。但它試圖開始並且一直未能開始。 cf push app -p -c「echo $(hostname)> wlp/usr/servers/myServer/server.env」 即使我試圖在上面的命令中放置一個shellscript .profile.d /我推送的服務器zip包的目錄。兩個失敗。無法在此之後啓動應用程序。 –
krckumar
實例間通信的最佳實踐是使用消息傳遞服務,或者根據通信的性質使用數據庫或緩存服務。 – opiethehokie
同意,使用消息傳遞服務將工作。 Bluemix不允許直接應用程序實例通過HTTP端口進行實例通信。 –