CacheCloud运维管理平台学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

 

          最近在读 《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,即可登录。

clip_image002[3]

三 redis安装

3.1 在客户机上创建cachecloud用户

这里创建的用户和密码,要和cachecloud配置里面一致,如下图:

clip_image003[3]

3.2 初始化redis环境

对于新安装的机器,需要使用下面脚本安装redis,和初始化环境

/opt/cachecloud-master/script/cachecloud-init.sh redis

3.3 添加机器

用管理员登录后,到后台管理,添加机器,可以看到应用已经添加进来

clip_image004[1]

四 实际案例

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

clip_image005[1]

  • 提交创建redis-sentinel申请

clip_image006[1]

  • 审批并配置,按照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

clip_image007[1]

点击开始部署后,可以查看后台服务器

clip_image008[1]

或者登陆服务器上查看

[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群集,是通过主从来实现分片高可用,官方解释:

  1. Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。
  2. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.
  3. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:
  4. 自动分割数据到不同的节点上。
  5. 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
  • 需要搭建的环境信息如下:

下面主从分配不能在一台机器上,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群集

clip_image009[1]

同redis sentinel一样,需要先点击格式检查,然后点击开始部署

clip_image010[1]

  • 检查是否创建成功,如下有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]#

通过前端监控页面,也可以发现已经成功了。

clip_image011[1]

  • 验证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]#



本文转自 woshiwei201 51CTO博客,原文链接:http://blog.51cto.com/chenwei/1958399

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
运维 监控 Java
java乡镇卫生院、二甲医院云HIS运维平台源码
运营管理是综合管理系统的核心部分,由运营商和医疗机构管理人员使用,运营管理包括:机构管理、药品目录管理、用户管理、角色管理、字典管理、模板管理、参数设置、消息管理、售后服务、运营配置、外部系统11个子模块,实现机构、用户、角色管理、药品目录管理以及通用的字典管理;可以根据业务需要为各医疗机构定制病历模板和报表模板;可以对医疗机构收费外接设备进行参数设置,对业务进行配置;可以管理消息及售后信息等。
41 3
|
9月前
|
运维 Kubernetes Cloud Native
腾讯云私有云平台运维面试
根据会议将面试问题进行总结,很多问题感觉当时没回答好,这是为啥呢?应该还是不熟练吧,或者不善于表达。将次经历分享出来,大家多练练。
376 0
|
3月前
|
运维 算法 Java
springboot医院信息化云HIS运维平台源码
1、门诊部分 挂号及预约、划价及收费、门诊处方及病历、医生排班... 2、住院部分 入院及出院登记、住院收费、住院清单、出院结算、住院医生工作站、住院护士工作站... 3、电子病历 医嘱管理、护嘱管理、电子病历、护理病历、病历质控...
44 0
|
1天前
|
运维 前端开发 JavaScript
运维管理平台实现与学习心得
运维管理平台实现与学习心得
|
3月前
|
消息中间件 缓存 运维
云HIS运维运营平台 云HIS解决方案
云HIS重建统一的信息架构体系,重构管理服务流程,重造病人服务环境,向不同类型的医疗机构提供SaaS化HIS服务解决方案。
62 2
|
4月前
|
SQL 运维 安全
客户说|享道出行 x DMS,构建一站式高效、安全的数据运维管理平台
享道出行通过引入一站式运维管理系统DMS,有效地降低数据运维的复杂性,提升运维团队的工作效率,同时保障IT系统的稳定性和安全性,最终实现业务的持续性和稳定发展。
|
6月前
|
存储 运维 DataWorks
DataWorks是阿里云推出的一款云数据集成、数据开发、数据运维一体化的数据开发平台
DataWorks是阿里云推出的一款云数据集成、数据开发、数据运维一体化的数据开发平台
125 4
|
6月前
|
运维 Kubernetes jenkins
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
221 0
|
7月前
|
运维 监控 Cloud Native
9k Star! 一款灵活、强大、易用的开源运维平台 ——Spug 原创 云原
运维平台是运维管理任务的重要组成部分,它主要负责监控系统的运行情况,及时发现系统的故障,其中包括性能分析、监控、故障诊断等。 同时,运维管理平台可以通过简单的操作完成系统的配置和更新,以及自动管理系统的日常运行。
256 0
|
7月前
|
运维 新制造
易云维®数字化工厂运维平台带动更多企业踊跃融入数字化转型潮流
为帮助制造业大企业数字化智能化转型,能迪科技集团基于“数字低碳智能”的建设理念,按照《国家智能制造标准体系建设指南》的建设思路与目标,同时借鉴德国“工业4.0”及美国“智能制造生态系统”的建设思路,对我国工厂的智能制造信息化进行总体规划,推出了易云维®数字化工厂运维平台,旨在实现制造企业“一站式”的智能运营,提高运营效率,降低运行成本,保证运营质量。