Redis雲管理平臺 CacheCloud
一、CacheCloud是做什麼的
CacheCloud提供一個Redis雲管理平臺:實現多種型別(Redis Standalone、Redis Sentinel、Redis Cluster)自動部署、解決Redis例項碎片化現象、提供完善統計、監控、運維功能、減少開發人員的運維成本和誤操作,提高機器的利用率,提供靈活的伸縮性,提供方便的接入客戶端。
二、CacheCloud提供哪些功能
-
監控統計: 提供了機器、應用、例項下各個維度資料的監控和統計介面。
-
一鍵開啟: Redis Standalone、Redis Sentinel、Redis Cluster三種類型的應用,無需手動配置初始化。
-
Failover: 支援哨兵,叢集的高可用模式。
-
伸縮: 提供完善的垂直和水平線上伸縮功能。
-
完善運維: 提供自動運維和簡化運維操作功能,避免純手工運維出錯。
-
方便的客戶端:方便快捷的客戶端接入。
-
元資料管理: 提供機器、應用、例項、使用者資訊管理。
-
流程化: 提供申請,運維,伸縮,修改等完善的處理流程
三、CacheCloud解決什麼問題
1.部署成本
Redis多機(Redis-Sentinel, Redis-Cluster)部署和配置相對比較複雜,較容易出錯。
例如:100個redis資料節點組成的redis-cluster叢集,如果單純手工安裝,既耗時又容易出錯。
2.例項碎片化
作為一個Redis管理員(可以看做redis DBA)需要幫助開發者管理上百個Redis-Cluster叢集,分佈在數百臺機器上,人工維護成本很高,需要自動化運維工具。
3. 監控、統計和管理不完善
一些開源的Redis監控和管理工具,例如:RedisLive(Python)、Redis Commander(Node.js),Redmon(Ruby)無論從功能的全面性(例如配置管理,支援Redis-Cluster等等)、擴充套件性很難 滿足需求。
4. 運維成本
Redis的使用者需要維護各自的Redis,但是使用者可能更加善於使用Redis實現各種功能,但是沒有足夠的精力和經驗維護Redis。 Redis的開發人員如同使用Mysql一樣,不需要運維Mysql伺服器,同樣使用Redis服務,不要自己運維Redis,Redis由一些在Redis運維方面更有經驗的人來維護(保證高可用,高擴充套件性),使得開發者更加關注於Redis使用本身。
5. 伸縮性
本產品支援Redis最新的Redis-Sentinel、Redis-Cluster叢集機構,既滿足Redis高可用性、又能滿足Redis的可擴充套件性,具有較強的容量和效能伸縮能力。
6. 經濟成本
機器利用率低,各個專案組的Redis較為分散的部署在各自伺服器上,造成了大量閒置資源沒有有效利用。
7. 版本不統一
各個專案的Redis使用各種不同的版本,不便於管理和互動。
四、CacheCloud提供的價值
-
規模化自動運維: 降低運維成本,降低人為操作出錯率。
-
自由伸縮: 提供靈活的伸縮性,應用擴容/收縮成本降低,機器資源得到重複利用。
-
團隊提升,開源貢獻:提升雲產品開發設計經驗,自己作為開發者和使用者,Eating your own dog food。
五、CacheCloud在搜狐的規模
-
每天100+億次命令呼叫
-
2T+的記憶體空間
-
800+個Redis例項
-
100+臺機器
六、CacheCloud環境需求
-
Java 7
-
Maven 3
-
MySQL
-
Redis 3
七、CacheCloud快速開始
1、初始化資料庫
匯入專案中cachecloud.sql初始化庫表結構。預設插入admin超級管理員
2、CacheCloud專案配置
使用了maven作為專案構建的工具,提供了 local.properties和online.properties兩套配置作為測試、線上的隔離。 屬性配置說明:
cachecloud.db.url | mysql驅動url | jdbc:mysql://127.0.0.1:3306/cache-cloud |
cachecloud.db.user | mysql使用者名稱 | admin |
cachecloud.db.password | mysql密碼 | admin |
cachecloud.machine.username | 伺服器使用者名稱,用於ssh | ${your machine username} |
cachecloud.machine.password | 伺服器密碼,用於ssh | ${your machine password} |
web.port | spring-boot內嵌tomcat啟動埠 | 8080 |
3、啟動cachecloud系統
?1 |
mvn spring-boot:run
|
1. 構建:mvn -Ponline clean package
2. 上傳war包到特定目錄下:如/opt/cachecloud-web
3: 拷貝專案中的cachecloud-web.conf配置到/opt/cachecloud-web目錄下,注意必須跟war包同目錄才生效
4. 作為linux服務啟動:
1 2 |
sudo ln -s /opt/cachecloud-web/cachecloud-web-1 .0-SNAPSHOT.war /etc/init .d /cachecloud-web
/etc/init .d /cachecloud-web start
|
(9999是tomcat的埠號,具體要參考第三節中的online.properties和local.properties中的web.port
4、新增機器
(1). 執行指令碼:
cachecloud專案中的cachecloud-init.sh指令碼是用來初始化伺服器的cachecloud環境,主要工作如下:
-
(a). 建立cachecloud專案使用者:因為cachecloud專案的部分功能(redis啟動、伺服器監控)是通過ssh完成的,所以這裡的使用者和密碼要和專案中的相對應,具體詳見第三節。
-
(b). 建立cachecloud專案的工作目錄、資料目錄、配置目錄、日誌目錄、redis安裝目錄、臨時目錄等等。(/opt/cachecloud/data、/opt/cachecloud/conf、/opt/cachecloud/logs、/opt/cachecloud/redis、/tmp/cachecloud)
-
(c). 安裝最新的release版本的Redis
(2). 指令碼執行
-
(a). 使用root登入目標伺服器。
-
(b). 將cachecloud-init.sh指令碼拷貝到目標伺服器當前使用者目錄下。
-
(c). 執行 sh cachecloud-init.sh ${yourusername}
-
(d). 兩次確認密碼
-
(e). 一路安裝直到成功。
(3). 建議和警告
-
(a). 請在root使用者下執行初始化指令碼,因為初始化指令碼涉及到了使用者的建立等較高的許可權。
-
(b). 出於安全的考慮,所選的機器最好不要有外網IP地址。
-
(c). 使用者名稱和密碼最好不要用cachecloud, 密碼儘可能複雜。
-
(d). 機器的ssh埠最好是22。
-
(e). 請確保/opt/有足夠的硬碟空間,因為/opt/cachecloud/data要儲存RDB和AOF的持久化檔案,如果硬碟過小,會造成持久化失敗。 (如果硬碟確實很小,建議建立一個軟連結到/opt/cachecloud/data,且保證軟連結的目錄也是username使用者,一定要保證/opt /cachecloud的目錄結構)
-
(f). 指令碼中目前使用的是redis-3.0.6,如有需要請自行替換,建議使用3.0 release以後的版本。
(4). 新增機器
http://www.oschina.net/p/cachecloud-Redis