CacheCloudRedis 私有云平臺
一、CacheCloud 是做什么的
CacheCloud 提供一個 Redis 云管理平臺:實現(xiàn)多種類型(Redis Standalone、Redis Sentinel、Redis Cluster)自動部署、解決Redis實例碎片化現(xiàn)象、提供完善統(tǒng)計、監(jiān)控、運維功能、減少開發(fā)人員的運維成本和誤操作,提高機器的利用率,提供靈活的伸縮性,提供方便的接入客戶端.
二、CacheCloud 提供哪些功能
監(jiān)控統(tǒng)計:提供了機器、應用、實例下各個維度數(shù)據(jù)的監(jiān)控和統(tǒng)計界面。
一鍵開啟:Redis Standalone、Redis Sentinel、Redis Cluster三種類型的應用,無需手動配置初始化。
Failover:支持哨兵,集群的高可用模式。
伸縮:提供完善的垂直和水平在線伸縮功能。
完善運維:提供自動運維和簡化運維操作功能,避免純手工運維出錯。
方便的客戶端:方便快捷的客戶端接入。
元數(shù)據(jù)管理:提供機器、應用、實例、用戶信息管理。
流程化:提供申請,運維,伸縮,修改等完善的處理流程
三、CacheCloud 解決什么問題
1. 部署成本
Redis多機(Redis-Sentinel, Redis-Cluster)部署和配置相對比較復雜,較容易出錯。
例如:100個redis數(shù)據(jù)節(jié)點組成的redis-cluster集群,如果單純手工安裝,既耗時又容易出錯。
2.實例碎片化
作為一個Redis管理員(可以看做redis DBA)需要幫助開發(fā)者管理上百個Redis-Cluster集群,分布在數(shù)百臺機器上,人工維護成本很高,需要自動化運維工具。
3. 監(jiān)控、統(tǒng)計和管理不完善
一些開源的Redis監(jiān)控和管理工具,例如:RedisLive(Python)、Redis Commander(Node.js),Redmon(Ruby)無論從功能的全面性(例如配置管理,支持Redis-Cluster等等)、擴展性很難 滿足需求。
4. 運維成本
Redis的使用者需要維護各自的Redis,但是用戶可能更加善于使用Redis實現(xiàn)各種功能,但是沒有足夠的精力和經(jīng)驗維護Redis。 Redis的開發(fā)人員如同使用Mysql一樣,不需要運維Mysql服務器,同樣使用Redis服務,不要自己運維Redis,Redis由一些在Redis運維方面更有經(jīng)驗的人來維護(保證高可用,高擴展性),使得開發(fā)者更加關(guān)注于Redis使用本身。
5. 伸縮性
本產(chǎn)品支持Redis最新的Redis-Sentinel、Redis-Cluster集群機構(gòu),既滿足Redis高可用性、又能滿足Redis的可擴展性,具有較強的容量和性能伸縮能力。
6. 經(jīng)濟成本
機器利用率低,各個項目組的Redis較為分散的部署在各自服務器上,造成了大量閑置資源沒有有效利用。
7. 版本不統(tǒng)一
各個項目的Redis使用各種不同的版本,不便于管理和交互。
四、CacheCloud 提供的價值
規(guī)模化自動運維:降低運維成本,降低人為操作出錯率。
自由伸縮:提供靈活的伸縮性,應用擴容/收縮成本降低,機器資源得到重復利用。
團隊提升,開源貢獻:提升云產(chǎn)品開發(fā)設(shè)計經(jīng)驗,自己作為開發(fā)者和使用者,Eating your own dog food。
五、CacheCloud 在搜狐的規(guī)模
每天100+億次命令調(diào)用
2T+的內(nèi)存空間
800+個Redis實例
100+臺機器
六、CacheCloud 環(huán)境需求
Java 7
Maven 3
MySQL
Redis 3
七、CacheCloud 快速開始
1. 初始化數(shù)據(jù)庫
導入項目中cachecloud.sql初始化庫表結(jié)構(gòu)。默認插入admin超級管理員
2、CacheCloud項目配置
使用了maven作為項目構(gòu)建的工具,提供了 local.properties和online.properties兩套配置作為測試、線上的隔離。 屬性配置說明:
| 屬性名 | 說明 | 示例 |
|---|---|---|
| cachecloud.db.url | mysql驅(qū)動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內(nèi)嵌tomcat啟動端口 | 8080 |
3、啟動cachecloud系統(tǒng)
mvn spring-boot:run
1. 構(gòu)建:mvn -Ponline clean package
2. 上傳war包到特定目錄下:如/opt/cachecloud-web
3: 拷貝項目中的cachecloud-web.conf配置到/opt/cachecloud-web目錄下,注意必須跟war包同目錄才生效
4. 作為linux服務啟動:
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的端口號,具體要參考第三節(jié)中的online.properties和local.properties中的web.port
4、添加機器
(1). 運行腳本:
cachecloud項目中的cachecloud-init.sh腳本是用來初始化服務器的cachecloud環(huán)境,主要工作如下:
(a). 創(chuàng)建cachecloud項目用戶:因為cachecloud項目的部分功能(redis啟動、服務器監(jiān)控)是通過ssh完成的,所以這里的用戶和密碼要和項目中的相對應,具體詳見第三節(jié)。
(b). 創(chuàng)建cachecloud項目的工作目錄、數(shù)據(jù)目錄、配置目錄、日志目錄、redis安裝目錄、臨時目錄等等。(/opt/cachecloud/data、/opt/cachecloud/conf、/opt/cachecloud/logs、/opt/cachecloud/redis、/tmp/cachecloud)
(c). 安裝最新的release版本的Redis
(2). 腳本執(zhí)行
(a). 使用root登錄目標服務器。
(b). 將cachecloud-init.sh腳本拷貝到目標服務器當前用戶目錄下。
(c). 執(zhí)行 sh cachecloud-init.sh ${yourusername}
(d). 兩次確認密碼
(e). 一路安裝直到成功。
(3). 建議和警告
(a). 請在root用戶下執(zhí)行初始化腳本,因為初始化腳本涉及到了用戶的創(chuàng)建等較高的權(quán)限。
(b). 出于安全的考慮,所選的機器最好不要有外網(wǎng)IP地址。
(c). 用戶名和密碼最好不要用cachecloud, 密碼盡可能復雜。
(d). 機器的ssh端口最好是22。
(e). 請確保/opt/有足夠的硬盤空間,因為/opt/cachecloud/data要存儲RDB和AOF的持久化文件,如果硬盤過小,會造成持久化失敗。 (如果硬盤確實很小,建議建立一個軟鏈接到/opt/cachecloud/data,且保證軟鏈接的目錄也是username用戶,一定要保證/opt /cachecloud的目錄結(jié)構(gòu))
(f). 腳本中目前使用的是redis-3.0.6,如有需要請自行替換,建議使用3.0 release以后的版本。
(4). 添加機器
進入管理員界面(http://ip:port/manage/total/list),進入機器管理,點擊添加機器,添加機器信息是開通應用的基礎(chǔ)。
