从他处摘抄,但忘记了来处,见谅。
在diablo release
之前,instances
的gateway
都是在nova-network
這個host
上,代表所有instance
的traffic
都走該台機器出去,這表示nova-network
是一台linux router.....
為什麼要這樣設計呢?
Reasons....
Cloud
有幾個重點Multi-tenant / platform
處理你所做這些手動的部分。 But how....
在ubuntu
透 過Cloud-init
來處理,包含取得該instance
的metadata(內容可以google
一下) 由於Cloud-init
內會使用一個特殊IP(169.254.169.254)讓instance去擷取api
server
上的資料來做 instance
初始化,包含instance
hostname/routing table / SSH public key / user- data
etc....
那目前如何讓instance
透過制定好的IP去取得資料,這時候nova-network
會將169.254.169.254
的 request PREROUTING
到 nova-api_entry_point.
可是為了讓instance
169.254.169.254的請求正確,必須要透過nova-network
當成GW
。
剛剛提到的是需要initial
的instance....
如果是自己包的image
不含cloud-init ...yes
你可以讓 instance gateway
走你要的IP,因為instance
並沒有cloud-init的需求,只要dhcp
設定改一下即可。
openstack
使用dnsmasq
負責dhcp
的工作。
那又如果你想要instance
有cloud-init
又不要走nova-network
出去,的確有方法。在外部gateway
上 prerouting ,
一樣可以達到需求,好處很多,包含HA跟LB,可是會犧牲掉floating_ip的功能。因Floating_ip
是由 nova-network
的NAT
處理。(非標準做法,可是在private
cloud上非常好用)
在diablo中,將會有幾個可行的選擇,敬請期待。fail_over/Multi-nics/HW gateway/multi
nova- networks
如果不依靠cloud-init
的方法,那有幾個條件
1.
包image
時,設好dhcp
2.
在fire up instance
時,把user-data
寫進去,讓instance
安裝ssh /
植入ssh key
如果cloud
platform
不能處理這些部分,基本上,那就跟一般的虛擬化平台沒什麼不同了,甚至更不實用。
Cloud
我想最好 Re-use image , easy scale out ,
multi-tenant , automatic , large scalability , un-limit
resources ,
> > > I'm
drunk now.....
加载中,请稍候......