摘要:本文以技術棧為例,列舉并解釋了一些面向進行應用程序開發和系統搭建中所需要注意的問題和技巧,以及平臺在管理和幫助企業應用向轉化中的作用。我們總結基于的組件的使用注意事項如下的外部存儲掛載被開啟無論是還是模式,都會需要在硬盤上進行存儲。
本文以技術棧Redis為例,列舉并解釋了一些面向Docker進行應用程序開發和系統搭建中所需要注意的問題和技巧,以及Caicloud平臺在Docker管理和幫助企業應用向Docker轉化中的作用。由于應用程序千差萬別,應用場景層出不窮,本文僅起到拋磚引玉的作用。
我們總結基于Docker的Redis組件的使用注意事項如下:
Redis的外部存儲掛載Persistence被開啟:無論是RDB還是AOF模式,都會需要在硬盤上進行存儲。以RDB為例,會自動存在本地硬盤一個叫dump.rdb的文件。如果沒有掛載外部存儲,這些數據在docker銷毀后會消失。
主從設置下Replication對硬盤的需求:在Redis 2.8以前,Master與Slave的同步需要用存儲(硬盤)作為中間媒介(自2.8此同步可不經過硬盤,但還屬于試驗內容)。在Docker環境下需要掛載Volume以保證這個步驟能正常運行。
Redis不能跑在daemonize的模式Docker的容器需要其中的主進程一直在前端運行,使用daemonize的模式會使得container在運行后立即退出。幸運的是在Redis的配置文件中daemonize模式默認被關閉。如需運行daemon模式,應該在docker層面通過-d命令來進行。
Redis的日志文件目錄應置為空Docker的容器所產生的日志會被系統自動接收和管理;同時Caicloud的集群管理平臺更會監測和聚合系統中所有容器的日志。因此在配置文件中將logfile設為空會享受Docker和Caicloud的自動日志收集和管理。
Redis Snapshot的注意事項在主從結構下Snapshot應開啟:如果在Redis的Master節點上配置了Persistenceoff (數據不會自動存儲到硬盤上),那么我們同時還應該關掉Master節點的自動重啟功能。由于Caicloud的自動修復功能會重啟實效的容器(包括RedisMaster),我們應開啟Snapshot功能。
對Persistence的需求:Redis會把Snapshot產生的rdb文件寫在指定的目錄中。默認情況下這個對應在Docker內部的一個目錄,會隨著Docker的銷毀而銷毀。如果有Persistence的需求,應該在生成Dockerfile和運行Redis容器時同時掛載外部的存儲。
Redis的端口映射Docker的容器在運行時默認會將容器內的應用端口映射成一個隨機的主機端口,但這樣會打破一些Redis服務。比如sentinel需要根據默認端口規則 (26379) 來進行自動發現。因此在Docker下運行Redis一定要使用 –p port:port的格式來明確使用默認的Redis端口規則。
Redis主從結構中的Master節點的發現在主從結構中,從節點(slave)需要在配置文件中使用Master節點的IP,來實現與Master節點的互連。傳統架構中這個IP可以預先通過靜態綁定。在Caicloud體系中,系統不需要靜態綁定具體的IP地址,而是可以通過DNS動態地發現,并通過運行Docker時的CMD命令來使用特定的腳本將Master IP動態添加到配置中。
多個Redis集群共存的情況Caicloud下不會出現兩個Redis Cluster混為一起(https://www.oschina.net/news/67037/container-redis-accident)的情況,因為Caicloud的獨特網絡特性(扁平化,每個機器有自己的網段)。如例子中提到的兩個Redis 集群混在一起需要如下條件:
在某一個物理機上運行來自兩個Redis 集群的server 實例(from cluster A and cluster B);
在兩個Redis 集群中存在兩個server 實例(from cluster A and cluster B)碰巧有同樣的IP(在純Docker環境下有可能,因為每個主機上的Docker會隨機分配網段和IP)
在Caicloud環境下,每個Redis server都會被分配一個不同的IP,每兩個Redis server 的IP必定不相同(每個機器有自己的網段,所以不同機器上的Docker在給container分配地址的時候不會撞車)。
(如果需要轉載,請聯系我們哦,尊重知識產權人人有責)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26527.html
摘要:是官方提供的一個工具,在集群環境中它可以幫助我們在遠程的機器上安裝。安裝新版本中和版的已經集成了,系統中需要自己手動安裝。這樣做是為了讓能夠免密登陸到其他機器來執行安裝命令。而并不是簡單的安裝使用。 Docker Machine?是 Docker 官方提供的一個工具,在集群環境中它可以幫助我們在遠程的機器上安裝 Dockerr。我們還可以通過 docker-machine 命令來管理這...
摘要:分鐘快速入門教程一歡迎來到世界與虛擬化在沒有的時代,我們會使用硬件虛擬化虛擬機以提供隔離。倉庫分為公開倉庫和私有倉庫,最大的公開倉庫是官方倉庫,國內的公開倉庫也有很多選擇,例如阿里云等。 30 分鐘快速入門 Docker 教程 一、歡迎來到 Docker 世界 1. Docker 與虛擬化 在沒有 Docker 的時代,我們會使用硬件虛擬化(虛擬機)以提供隔離。這里,虛擬機通過在操作系...
摘要:此時,可以構建映像,并將其部署為容器。從執行以下操作以上命令將使用文件中定義的端口,構建對應鏡像和部署成為容器。 showImg(https://segmentfault.com/img/remote/1460000010122752); 數人云之前分享了《如何用Docker實現PHP命令行程序的CI/CD》,詳細地介紹了整體過程中的思路以及以及注意事項,今天帶來的文章將闡述怎樣部署一...
摘要:分鐘快速入門教程一歡迎來到世界與虛擬化在沒有的時代,我們會使用硬件虛擬化虛擬機以提供隔離。倉庫分為公開倉庫和私有倉庫,最大的公開倉庫是官方倉庫,國內的公開倉庫也有很多選擇,例如阿里云等。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關注公眾號:「服務端思維」。一群同頻者,一起成長,一起精進,打破認知的局限性。 30 分鐘快速入門 Docker 教程...
摘要:分鐘快速入門教程一歡迎來到世界與虛擬化在沒有的時代,我們會使用硬件虛擬化虛擬機以提供隔離。倉庫分為公開倉庫和私有倉庫,最大的公開倉庫是官方倉庫,國內的公開倉庫也有很多選擇,例如阿里云等。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 歡迎關注公眾號:「服務端思維」。一群同頻者,一起成長,一起精進,打破認知的局限性。 30 分鐘快速入門 Docker 教程...
閱讀 1891·2021-11-22 09:34
閱讀 3025·2021-09-28 09:35
閱讀 13430·2021-09-09 11:34
閱讀 3599·2019-08-29 16:25
閱讀 2825·2019-08-29 15:23
閱讀 2041·2019-08-28 17:55
閱讀 2431·2019-08-26 17:04
閱讀 3048·2019-08-26 12:21