2015-07-03 117 views
1

嘗試在CoreOS(容錯羣集)上使用HAProxy進行簡單的負載平衡。這裏是場景 1)兩個CoreOs實例聚集在一起 2)一個CoreOS實例(比如41.100.51.011)有1個HA代理和2個NodeJs容器。因此總共3個Docker容器 3)這是容錯方案,所以如果一個(41.100.51.001) 4)現在在DNS服務器上,如果abc.com映射到41.100.51.011或41.100.51.001 ,那麼映射的正確映射是5)假設abc.com映射到第一個,這樣就會停止,服務開始在第二個實例上運行,用戶將如何訪問該站點。由於DNS服務器仍然會指向舊的IP 6)如何將DNS服務器設置更改爲第二個CoreOS實例,以防其發生故障並且服務開始運行到另一個實例中? 7)我們是否有其他解決方案或者我沒有正確理解通過coreos羣集上的HAProxy進行負載平衡

回答

1

您需要的基本事件是容器產卵或終止。這些信息位於coreos使用的etcd數據庫中。有一種叫做'watch'的機制,它可以讓你根據etcd中的信息變化做些事情。下面有兩個例子。

您可以使用etcd,skydnsregistrator的組合來爲容器提供DNS。基本概念是,當容器誕生並死亡時,數據庫(etcd)由註冊者更新,包括IP地址和服務類型。 etcd中的信息被skydns用來爲dns服務。

雖然haproxy有一個不同的問題,但是...您必須在靜態配置文件中將服務器配置爲haproxy.cfg文件。所以,當容器改變haproxy.cfg文件被更新並重新加載時。有關如何做到這一點的好書寫Between reality and cyberspace

當然,如果您想要爲入口點冗餘啓動多個haproxies併爲冗餘服務啓用多個容器,則需要兩種技術的組合。

-g