CacheCloud运维管理平台学习笔记
最近在读 《Redis开发与运维》这本书,发现搜狐视频出的cachecloud这个平台非常不错,下面是自己的学习笔记。不过这个是用java语言写的,现在开发运维一般都使用python,后期看看能不能用python模仿做一个这样的运维管理平台,提升自己开发能力。
目录结构:
-平台简介
-平台安装
- 安装包
- 数据库配置
- 应用配置文件
- 编译应用
- 启动应用
- 登录测试
-redis安装
- 创建cachecloud用户
- 初始化redis环境
- 添加机器
- 实际案例
- Redis sentinel群集应用
- Redis Cluster群集应用
一 平台简介
CacheCloud是搜狐视频提供的一个开源Redis云管理平台:
实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少开发人员的运维成本和误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入客户端。 它主要功能有:
- 监控统计: 提供了机器、应用、实例下各个维度数据的监控和统计界面。
- 一键开启: Redis Standalone、Redis Sentinel、Redis Cluster三种类型的应用,无需手动配置初始化。
- Failover: 支持哨兵,集群的高可用模式。
- 伸缩: 提供完善的垂直和水平在线伸缩功能。
- 完善运维: 提供自动运维和简化运维操作功能,避免纯手工运维出错。
- 方便的客户端:方便快捷的客户端接入。
- 元数据管理: 提供机器、应用、实例、用户信息管理。
- 流程化: 提供申请,运维,伸缩,修改等完善的处理流程
二 平台安装
2.1 下载安装包
从官方网站上https://github.com/sohutv/cachecloud,下载下来后,解压到/opt 下,确保环境已经安装了。
- Java 7
- Maven 3
- MySQL
- Redis 3
2.2 数据库配置
提前安装好数据库mysql数据库,然后创建cachecloud数据库,导入cachecloud数据库脚本,具体命令如下:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.24-patch-1.0 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> create database cachecloud;
Query OK, 1 row affected (0.00 sec)
MySQL [(none)]> grant all on cachecloud.* to 'admin'@'localhost' identified by 'admin123';
Query OK, 0 rows affected (0.01 sec)
MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MySQL [(none)]> quit
[root@localhost opt]# mysql -uroot cachecloud < /opt/cachecloud-master/script/cachecloud.sql
2.3 修改应用配置文件
这里需要说明的是,设置好数据库地址,账号密码等。
[root@localhost opt]# vi /opt/cachecloud-master/cachecloud-open-web/src/main/swap/online.properties
cachecloud.db.url = jdbc:mysql://127.0.0.1:3306/cachecloud
cachecloud.db.user = admin
cachecloud.db.password = admin123
cachecloud.maxPoolSize = 20
2.4 编译cachecloud
由于源码没有编译,需要使用mvn编译应用,然后生成实际的war包。
#mvn clean compile install-Ponline
[root@localhost cachecloud-master]# mkdir -p /opt/cachecloud
[root@localhost cachecloud-master]# cp cachecloud-open-web/target/cachecloud-open-web-1.0-SNAPSHOT.war /opt/cachecloud/
[root@localhost cachecloud-master]# cp cachecloud-open-web/src/main/resources/cachecloud-web.conf /opt/cachecloud/
[root@localhost cachecloud-master]# ln -s /opt/cachecloud /etc/init.d/cachecloud
[root@localhost cachecloud-master]#
2.5 启动cachecloud应用
[root@localhost cachecloud-master]# /etc/init.d/cachecloud start
which: no start-stop-daemon in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/pycharm-4.5.4/bin:/usr/local/php/bin:/usr/local/mysql/bin/:/root/bin)
Started [4551]
[root@localhost cachecloud-master]#
2.6 登录测试
打开IE,输入登录地址http://192.168.100.53:8585,输入用户和密码:admin/admin,即可登录。
三 redis安装
3.1 在客户机上创建cachecloud用户
这里创建的用户和密码,要和cachecloud配置里面一致,如下图:
3.2 初始化redis环境
对于新安装的机器,需要使用下面脚本安装redis,和初始化环境
/opt/cachecloud-master/script/cachecloud-init.sh redis
3.3 添加机器
用管理员登录后,到后台管理,添加机器,可以看到应用已经添加进来
四 实际案例
4.1 redis sentinel
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,redis-sentinel又叫哨兵,它去监控主从数据库运行状态,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换,从而实现高可用。哨兵可以配置多个, 如果配置了多个,当主发生故障的时候,sentinel需要投票选举是否切换。
服务器地址如下,需要说明的是,添加到cachecloud上后,需要执行下面脚本,初始化redis环境,安装编译redis
/opt/cachecloud-master/script/cachecloud-init.sh
192.168.199.202 master sentinel1
192.168.199.203 slave sentinel2
192.168.199.204 sentinel3
- 已经添加机器到cachecloud
- 提交创建redis-sentinel申请
- 审批并配置,按照sentinel格式,输入下面配置,点击格式验证,没有没有问题,就点击开始部署
格式不能错处,下面ip必须是已经添加到cachecloud的机器IP
192.168.199.202:512:192.168.199.203
192.168.199.202
192.168.199.203
192.168.199.204
点击开始部署后,可以查看后台服务器
或者登陆服务器上查看
[root@autoserver ~]# ps -ef | grep redis
cachecl+ 8999 1 0 11:31 ? 00:00:00 redis-server *:6386
cachecl+ 9085 1 0 11:32 ? 00:00:00 redis-server *:6387 [sentinel]
[root@node01 ~]# redis-cli -h 192.168.199.202 -p 6386 info | grep role
role:master
[root@node01 ~]# redis-cli -h 192.168.199.203 -p 6386 info | grep role
role:slave
- 测试sentinel是否成功
先设置一个数据值
[root@node01 ~]# redis-cli -h 192.168.199.202 -p 6386 set cw test01
OK
[root@node01 ~]# redis-cli -h 192.168.199.203 -p 6386 get cw
"test01"
[root@node01 ~]#
关闭master节点
[root@node01 ~]# redis-cli -h 192.168.199.202 -p 6386 shutdown
检查进程确实没有了
[root@autoserver ~]# ps -ef | grep redis
cachecl+ 9085 1 0 11:32 ? 00:00:03 redis-server *:6387 [sentinel]
查看日志:
17092:X 23 Aug 11:46:16.995 # +new-epoch 3
17092:X 23 Aug 11:46:16.997 # +vote-for-leader 1c076f3969391012eb246c4723c40f593244462f 3
17092:X 23 Aug 11:46:17.027 # Next failover delay: I will not start a failover before Wed Aug 23 11:52:17 2017
17092:X 23 Aug 11:46:18.041 # +config-update-from sentinel 192.168.199.202:6387 192.168.199.202 6387 @ sentinel-192.168.199.202-6386 192.168.199.202 6386
17092:X 23 Aug 11:46:18.041 # +switch-master sentinel-192.168.199.202-6386 192.168.199.202 6386 192.168.199.203 6386
17092:X 23 Aug 11:46:18.042 * +slave slave 192.168.199.202:6386 192.168.199.202 6386 @ sentinel-192.168.199.202-6386 192.168.199.203 6386
17092:X 23 Aug 11:46:38.127 # +sdown slave 192.168.199.202:6386 192.168.199.202 6386 @ sentinel-192.168.199.202-6386 192.168.199.203 6386
获取redis值
[root@node01 conf]# redis-cli -h 192.168.199.203 -p 6386 info | grep role
role:master
[root@node01 conf]# redis-cli -h 192.168.199.203 -p 6386 get cw
"test01"
[root@node01 conf]#
启动192.168.199.202上的redis后,检查发现,已经变为从应用了。
[root@node01 conf]# redis-cli -h 192.168.199.202 -p 6386 info | grep role
role:slave
4.2 Redis Cluster
redis cluster群集,是通过主从来实现分片高可用,官方解释:
- Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。
- Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.
- Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:
- 自动分割数据到不同的节点上。
- 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
- 需要搭建的环境信息如下:
下面主从分配不能在一台机器上,3个交叉部署
192.168.199.202:200:192.168.199.203
192.168.199.203:200:192.168.199.204
192.168.199.204:200:192.168.199.202
- 首先,使用cachecloud,需要申请建立redis-cluster001群集
同redis sentinel一样,需要先点击格式检查,然后点击开始部署
- 检查是否创建成功,如下有cluster标签的,表示已经创建成功了
[root@node01 conf]# ps -ef | grep redis
cachecl+ 17230 1 0 11:31 ? 00:00:10 redis-server *:6386
cachecl+ 17316 1 0 11:32 ? 00:00:19 redis-server *:6387 [sentinel]
cachecl+ 18847 1 0 12:04 ? 00:00:00 redis-server *:6388 [cluster]
cachecl+ 18948 1 0 12:04 ? 00:00:00 redis-server *:6389 [cluster]
[root@node01 conf]# redis-cli -h 192.168.199.202 -p 6388 cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:4
cluster_my_epoch:1
cluster_stats_messages_sent:420
cluster_stats_messages_received:417
[root@node01 conf]#
通过前端监控页面,也可以发现已经成功了。
- 验证cluster可用性
首先需要生成数据
[root@node01 conf]# redis-cli -h 192.168.199.202 -p 6388 -c set cw0001 chenwei0001
OK
[root@node01 conf]# redis-cli -h 192.168.199.202 -p 6388 -c get cw0001
"chenwei0001"
[root@node01 conf]#
检查群集节点信息,可以找到202:6388对应的从节点是203:6388,
[root@node01 conf]# redis-cli -h 192.168.199.202 -p 6388 cluster nodes
a53f3d619aebc611b79650f8dd8b37f00076fd4d 192.168.199.204:6380 slave d5523f7cdebe8ee551fa86b66a63689457fa7ab7 0 1503486623834 2 connected
301cbb1c365cc6a60f50cb6f9f0d295f54c80912 192.168.199.203:6388 slave 7e01a9ac4087ef10d28fa7412f4bd9907f97e868 0 1503486624844 3 connected
c7b89ca5a92d605730c78f93fd83d6a22fa9eafc 192.168.199.202:6389 slave 4468e49f7ec3049a9d3452199123d686bb2f1df0 0 1503486623331 4 connected
7e01a9ac4087ef10d28fa7412f4bd9907f97e868 192.168.199.202:6388 myself,master - 0 0 1 connected 0-5461
4468e49f7ec3049a9d3452199123d686bb2f1df0 192.168.199.204:6381 master - 0 1503486625855 3 connected 10924-16383
d5523f7cdebe8ee551fa86b66a63689457fa7ab7 192.168.199.203:6389 master - 0 1503486622827 0 connected 5462-10923
[root@node01 conf]#
[root@node01 conf]# redis-cli -h 192.168.199.203 -p 6388 info | grep role
role:slave
关闭主节点192.168.199.202:6388应用
[root@node01 conf]# redis-cli -h 192.168.199.202 -p 6388 shutdown
[root@node01 conf]# redis-cli -h 192.168.199.203 -p 6388 cluster nodes
a53f3d619aebc611b79650f8dd8b37f00076fd4d 192.168.199.204:6380 slave d5523f7cdebe8ee551fa86b66a63689457fa7ab7 0 1503486875906 2 connected
301cbb1c365cc6a60f50cb6f9f0d295f54c80912 192.168.199.203:6388 myself,master - 0 0 5 connected 0-5461
d5523f7cdebe8ee551fa86b66a63689457fa7ab7 192.168.199.203:6389 master - 0 1503486874894 0 connected 5462-10923
c7b89ca5a92d605730c78f93fd83d6a22fa9eafc 192.168.199.202:6389 slave 4468e49f7ec3049a9d3452199123d686bb2f1df0 0 1503486876916 4 connected
7e01a9ac4087ef10d28fa7412f4bd9907f97e868 192.168.199.202:6388 master,fail - 1503486840733 1503486839525 1 disconnected
4468e49f7ec3049a9d3452199123d686bb2f1df0 192.168.199.204:6381 master - 0 1503486877924 3 connected 10924-16383
验证数据是否可以读取,通过其它主应用,发现可以读取到数据
[root@node01 conf]# redis-cli -h 192.168.199.204 -p 6381 -c get cw0001
"chenwei0001"
[root@node01 conf]#
转载于:https://blog.51cto.com/chenwei/1958399
CacheCloud运维管理平台学习笔记相关推荐
- django 实现linux运维管理平台
概述 使用django实现一个linux运维管理平台,可以实现注册登录,机器管理 ,服务器批量操作,服务器性能监控. 详细 代码下载:http://www.demodashi.com/demo/112 ...
- 基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活
基于Django实现Linux运维管理平台整个实现过程和各种API接口调用以及Echarts绘图的使用介绍 项目内容涉及技术直通车: 我的项目仓库:MyGitHub https://github.co ...
- 解放运维的双手,谈自动化运维管理平台设计
作者介绍 战学超,青航数据架构师.曾任职于NEC软件.海尔B2B平台巨商汇,负责企业数据平台构建.B2B电商平台数据管理与搭建.拥有丰富DBA.系统运维架构经验,擅长数据库.数据平台搭建.私有云部署. ...
- 智能化运维管理平台,如何提高运维工作效率
随着业务规模越来越大.系统越来越复杂,原有传统的运维模式已经无法满足新环境下系统的配置与变更,传统的运维通过大量重复的人工劳动实现,需要运维人员全天候值守,且无法保证问题的及时处理和反馈,导致运维人员 ...
- IT编辑推荐:广通Broadview IT运维管理平台
2008-01-18 近日,从网管员杂志社传来喜讯:在网管员杂志社举办的2007年度网管产品用户调查中,北京广通信达科技有限公司旗下的Broadview IT运维管理平台荣膺"编辑选择奖&q ...
- 网络管理工具与IT运维管理平台的差别
随着运行在网络计算环境中的关键业务应用日见增多,企业客户对IT系统的管理需求正与日俱增.面对IT系统监控和IT运维管理市场的日趋成熟,形形色色的软件开发商和系统集成商和将目光瞄准了网络系统管理软件的开 ...
- 我看ITIL在中国(六):如何建立有中国特色的IT运维管理平台【二】
在开始筹划建设有"中国特色的IT运维管理平台"之前,先来看看我们目前面临的情况: 随着信息化建设的不断深入,各种企业的核心业务都逐步地迁移到IT平台上来,对IT管理的要求也越来越高 ...
- rabbitmq导出队列_消息队列BCMQ在大云运维管理平台BCDeepWatch中的应用
友情提示:全文约2600字,预计阅读时间12分钟 摘要 消息队列作为重要的中间件,广泛用于分布式系统中各子系统间的异步解耦:本文主要介绍了大云消息队列中间件BC-MQ在BC-DeepWatch中的应用 ...
- 数据与AI如何提升IT运维价值?锐捷发布乐享智能运维管理平台
运维的价值如何体现,听刚刚发布锐捷乐享智能运维管理平台的锐捷网络怎么说. 编辑 | 宋慧 出品 | CSDN云计算 运维可能是 IT 技术人中最苦的岗位. IT系统运维工作就像安全一样,平稳运行不出事 ...
- 我看ITIL在中国(六):如何建设有中国特色的IT运维管理平台【三】
在落实好基础设施透明化管理的基础上,企业用户需要进一步对业务进行透明化的管理,采用BSM的管理方法,通过构筑业务与IT基础设施的关系,展现业务的整体运行状态,展现业务的使用情况,构筑业务的巡检和故障诊 ...
最新文章
- 【每日一算法】二叉树的最小深度
- 自然语言处理最新论文速递
- 反序列化出现异常:SerializationException 在分析完成之前就遇到流结尾
- 从NoSQL到Lakehouse,Apache Doris的13年技术演进之路
- Java核心API -- 2(String、StringBuilder、StringBuffer)
- PendingFileRenameOperations键值!
- 推荐系统常用评价指标和代码实现
- java接口多态的变量能_「JAVA」多态的灵魂,面向接口的程序设计,这才是你该懂得的接口(interface)...
- JVM内存模型及String对象内存分配
- linux版本浏览器有哪些,5款面向Linux的简单Web浏览器
- 主机当前没有管理网络冗余
- 离散数学——图论中图的同构的应用
- 电脑如何打开EPUB文件
- 在深度学习中使用Bagging集成模型
- 百度定位 Android 经纬度出现4.9E-324 问题解决
- python爬取招聘信息_python 爬取boss直聘招聘信息实现
- 利用百度poi计算城市能级及评价街道范围便利度、生活宜居情况等
- python绘图:散点图,密度图并保存成图片
- 高斯消元(Gauss-Jordan Elimination)
- Java动态代理源码详解
热门文章
- iOS 给任意一个view转换为image的方法封装
- 使用Eclispe 查看api技巧
- BDS Business Development Studio
- 2008年国外最佳Web设计/开发技巧、脚本及资源总结
- 数据库之“on”“where”区别
- POJ 3666 Making the Grade (DP滚动数组)
- 图像等比例缩放的函数封装(PHP)
- 欧拉工程第54题:Poker hands
- 【CAD】自定义实体的步骤(转)
- Windows窗体编程基础学习:更改TabControl 的外观(如qq用的)