目前我正在構建一個Docker Swarm集羣。它由3名經理和3名工人組成。我將在此設置上部署的應用程序由一個laravel後端組成,該後端需要在多個容器中提供其代碼以實現可伸縮性。我已經嘗試將GlusterFS卷和rephray作爲Ceph後端作爲我的卷的共享存儲。 GlusterFS不可靠,Ceph在我的情況下有點矯枉過正,太難了:)Docker Swarm共享卷
當前的設置看起來像這樣。我在Docker之外有一個Percona集羣,我在這些服務器上運行GlusterFS,並簡單地將它們安裝到Docker Workers中。
Docker Managers
+-------------------------------------------------------------+
| |
| +---------+ +---------+ +---------+ +---------+ |
| | | | | | | | | |
| | HAproxy +---+ HAproxy +---+ HAproxy +----+ SSL | |
| | | | | | | | Manager | |
| +----+----+ +----+----+ +----+----+ +---------+ |
| | | | |
+-------------------------------------------------------------+
| | |
| | | Docker Workers
+-------------------------------------------------------------+
| | | | |
| +----+-------------+-------------+--------------------+ |
| | | |
| | Applicaties | |
| | | |
| +---+--------------+---------------+--------------+---+ |
| | | | | |
| | | | | |
| +---+----+ +---+----+ +----+---+ +----+---+ |
| | Mysql | | Mysql | | Mysql | | Mysql | |
| | LB +-----+ LB +-----+ LB +-----+ LB | |
| +---+----+ +----+---+ +----+---+ +----+---+ |
| | | | | |
| +---------------+-------+------+--------------+ |
| | | | |
+-------------------------------------------------------------+
| | |
| | |
| | |
+-------+--------+ +--------+-------+ +--------+-------+
| | | | | |
| MySQL01 | | MySQL02 | | MySQL03 |
| Gluster01 +-----+ Gluster02 +----+ Gluster03 |
| | | | | |
+----------------+ +----------------+ +----------------+
然後,我將它們安裝到PHP的容器是這樣的:
--mount type=bind,source=/mnt/client-data,target=/var/www/html/
這工作,但這個是很慢的。頁面加載時間大約爲10秒,當文件未被加載(它們存在於容器中)時,頁面加載時間大約爲2-3秒。
我來到了Flocker,這看起來很有趣,但我認爲植絨卷只能安裝在一個容器上。這是真的?
我現在正在嘗試的另一個解決方案是,每次創建新容器時都會從git中拉出代碼。這實際上是一個很好的解決方案,但需要大約5分鐘的時間才能拉動代碼並運行作曲家,當我推送更新時,我需要重新啓動所有容器。
在多個主機上的不同容器中共享我的代碼的最佳解決方案是什麼? (甚至是數據中心)目前我可以訪問許多不同的存儲後端(Ceph,NFS,gluster),創建一個新的並不是問題。
編輯:爲什麼在這種情況下gluster不可靠?我可能在上面說錯了......在Gluster上使用Docker卷時,Gluster不可靠,並帶有卷驅動程序插件。在創建服務時,卷大部分時間安裝得很好,但是如果在羣中發生重新計劃,卷很少會再次掛載。我稍後會研究這個問題,以確定哪裏出了問題,但我現在沒有很多空閒時間。 Gluster實際上是堅實的。只是不在這種情況下。
讀者理解GlusterFS如何不可靠會很有意思。 – user239558
我會解釋爲什麼它在這種情況下在今天晚些時候不可靠,首先我必須完成我的工作:)但是它與在Gluster中創建docker卷有關,大約50%的時間都會失敗。 –