使用CacheCloud管理Redis实例
许爱琪
2024-10-11 16:17:15
原文
转载来源:http://www.ywnds.com/?p=10610
一、CacheCloud是什么?
最近在使用CacheCloud管理Redis,所以简单说一下,这里主要说一下我碰到的问题。CacheCloud官网从安装到使用文档非常详细了。
CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少运维成本和误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入客户端。
具体看GitHub:https://github.com/sohutv/cachecloud
二、源码安装CacheCloud
我这里使用的是最新版CacheCloud,支持客户端密码的。系统使用的是CentOS 7,Redis使用的是3.2版本。
-Bit Server VM (build 25.141-b15, mixed mode)
/cachecloud?useUnicode=true&characterEncoding=UTF-8
cachecloud.db.user = admin
cachecloud.db.password = admin
cachecloud.maxPoolSize = 20
isClustered = true
isDebug = false
spring-file=classpath:spring/spring-online.xml
log_base=/opt/cachecloud-web/logs
web.port=8585
log.level=WARN
这里就是用来设置数据库连接,以及web端口的,可自行修改。但是一定注意cachecloud.db.user参数,用户名不能有多余的空格,不然后面会一直报连接不上数据库。使用vim编辑器编辑用户时行尾可能会多出一个空格,记得去掉,多移动几次光标看看是否有空格(我就在这里坑了很久)。
另外设置“cachecloud?useUnicode=true&characterEncoding=UTF-8″是用来支持中文的,记得一定与数据库字符集一样哦,都是UTF8。又有一点要注意的就是对于自己编译的CacheCloud,这里的”&”不是乱码,就是这样的,会被转义为&符号。如果是使用二进制版本的,这里就需要写成“cachecloud?useUnicode=true&characterEncoding=UTF-8″才行。
完事后就可以使用maven编译了。
STDOUT: /opt/cachecloud-web/logs/cachecloud-web.log
Java启动有点慢,没有什么问题过会就可以看到8585端口的启动了。
如果你使用的是openjdk,启动时很有可能会报这个错误:
|
|
Unrecognized VM option 'UnlockCommercialFeatures'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
|
我也测试过openjdk,报什么参数错误去掉不用就可以了。
没什么问题就登录CacheCloud的了,输入默认的用户名admin和密码admin即可。
![]()
三、二进制版本安装CacheCloud
二进制版本比较简单,做好如下几步即可:
1. 初始化好cachecloud.sql
2. 安装好Java
然后下载对应release版本的环境,例如1.2,将其在/opt下解压,解压后文件目录如下
- cachecloud-open-web-1.0-SNAPSHOT.war: cachecloud war包
- cachecloud.sql: 数据库schema,默认数据名为cache_cloud,可以自行修改
- jdbc.properties:jdbc数据库配置,自行配置
- start.sh:启动脚本
- stop.sh: 停止脚本
- logs:存放日志的目录
二进制版本相对比较简单,也没有什么好说的,同样也是对于jdbc.properites文件中数据库的用户名空格需要注意,配置如下:
|
|
$ cat /opt/cachecloud-web/jdbc.properties
cachecloud.db.url = jdbc:mysql://127.0.0.1:3306/cache_cloud?useUnicode=true&characterEncoding=UTF-8
cachecloud.db.user = admin
cachecloud.db.password = admin
cachecloud.maxPoolSize = 20
jdbc.driver = com.mysql.jdbc.Driver
jdbc.validationQuery = select 1 from dual
|
这里就把“&”缓存“&”了,不然会报错,这是我测试下来的结果,可能你下载时版本不同了,问题也不一定有了。然后就可以启动了,默认端口是8585,可以修改start.sh中的server.port进行重置。
最后对于CacheCloud部署使用常见问题,去https://cachecloud.github.io里面看即可。
四、CacheCloud使用实例
首先在客户端执行cachecloud/script/cachecloud-init.sh初始化脚本,这个脚本默认会下载redis 3.0版本(你下载的不知道会不会变啊)。我这里要使用redis 3.2版本,所以修改一下脚本。
|
|
$ bash cachecloud-init.sh cachecloud
|
创建一个系统用户cachecloud,我这里密码也是cachecloud,这是CacheCloud默认的用户和密码。当然你也可以自行修改,但是需要所有机器都统一,另外需要在CacheCloud后台系统配置中改好。
![]()
由于我使用的是Redis 3.2版本,从这个版本开始提供了protected-mode(虽然比较鸡肋)和默认只监听本地回环地址,而且它是默认开启的,所以在使用CacheCloud部署时,需要修改Redis配置模板管理中的添加新配置:
|
|
protected-mode no
bind 0.0.0.0
|
针对Sentinal和Cluster模板也需要关闭protected-mode参数。
然后就可以进行添加如下操作了:
1、后台添加主机
2、前台申请应用
3、后台部署应用
如果你需要部署带密码的,在部署应用时填写这个实例的密码,然后点击更新即可。
![]()
五、相关表结构说明
在CacheCloud中,每个应用都会有一个唯一ID(app_id),这个ID会从1000开始自增长。另外,Redis相关实例的端口号也是会从6379开始自增长。所以了解一下相关表的作用还是有用的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# Quartz定时任务相关的表;
QRTZ_BLOB_TRIGGERS
QRTZ_CALENDARS
QRTZ_CRON_TRIGGERS
QRTZ_FIRED_TRIGGERS
QRTZ_JOB_DETAILS
QRTZ_LOCKS
QRTZ_PAUSED_TRIGGER_GRPS
QRTZ_SCHEDULER_STATE
QRTZ_SIMPLE_TRIGGERS
QRTZ_SIMPROP_TRIGGERS
QRTZ_TRIGGERS
# 应用申请相关的表,app_id自增长就在这个表中;
app_audit
app_audit_log
# 应用相关的监控统计信息;
app_client_costtime_minute_stat
app_client_costtime_minute_stat_total
app_client_datasize_minute_stat
app_client_exception_minute_stat
app_client_instance
app_client_value_distri_minute_stat
app_client_value_minute_stats
app_client_version_statistic
app_daily
app_data_migrate_status
app_hour_command_statistics
app_hour_statistics
app_minute_command_statistics
app_minute_statistics
# 应用描述信息和用户信息;
app_desc
app_to_user
app_user
# 应用相关的Redis、sentinel信息分布在这几个表中;
instance_alert
instance_alert_configs
instance_config
instance_fault
instance_host
instance_info
instance_reshard_process
instance_slow_log
instance_statistics
# 主机配置和主机统计信息在这几个表中;
machine_info
machine_statistics
server
server_stat
standard_statistics
system_config
|
六、迁移工具使用
CacheCloud迁移使用的是redis-migrate-tool这个强大的工具,Github地址:https://github.com/vipshop/redis-migrate-tool。
在CacheCloud中使用,只需要把源码下载到/opt/cachecloud目录下编译一下(编译报错自行安装相关依赖包):
|
|
$ cd /opt/cachecloud
$ git clone https://github.com/vipshop/redis-migrate-tool
$ cd redis-migrate-tool
$ autoreconf -fvi
$ ./configure
$ make
|
然后需要在redis-migrate-tool主机添加cachecloud用户和密码:
然后需要在redis-migrate-tool目录下创建一个data目录,并且需要给/opt/cachecloud目录:
|
|
$ mkdir /opt/cachecloud/redis-migrate-tool/data
$ chown cachecloud.cachecloud -R /opt/cachecloud
|
更多详细文档看官方文档:https://github.com/sohutv/cachecloud/wiki
- php版redis插件,SSDB数据库,增强型的Redis管理api实例
php版redis插件,SSDB数据库,增强型的Redis管理api实例 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储.另外,ro ...
- MySQL知识-redis实例
规划.搭建过程:6个redis实例,一般会放到3台硬件服务器注:在企业规划中,一个分片的两个分到不同的物理机,防止硬件主机宕机造成的整个分片数据丢失.端口号:7000-7005 # 1. 安装集群插件 ...
- 从阿里云迁移分布式redis实例到华为云解决方案(详细)
如果要换多数是经济因素啦- 一. 准备工作 先在华为云上买一台redis数据库,配置一定要注意多数要保持一致,至于4.0还是5.0倒问题不大亲测兼容 可用区要找现有ECS云主机中的相同的机器.记下:这 ...
- 利用mysql_multi来管理多实例:
mysql_multi的现实意义: 1:随着连接数上升,性能会下降,通过多实例来分流大量连接来提高性能. 2:做资源隔离 3:分库分表 mysql_multi是官方管理多实例的一个脚本,利用perl语 ...
- 利用mysqld_multi启动管理多实例
利用mysqld_multi启动管理多实例 官方管理多实例的一个脚本peer #将之前的目录清空 [root@mysql01 mysql]# tree /data/mysql/ /data/mysql ...
- redis 实例2 构建文章投票网站后端
redis 实例2 构建文章投票网站后端 1.限制条件 一.如果网站获得200张支持票,那么这篇文章被设置成有趣的文章 二.如果网站发布的文章中有一定数量被认定为有趣的文章,那么这些文章需要被设置 ...
- 一次线上redis实例cpu占用率过高问题优化(转)
前情提要: 最近接了大数据项目的postgresql运维,刚接过来他们的报表系统就出现高峰期访问不了的问题,报表涉及实时数据和离线数据,离线读pg,实时读redis.然后自然而然就把redis也挪到我 ...
- OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
随机推荐
- MySQL Memory--内存分配相关参数
Seesion级的内存分配: max_threads(当前活跃连接数)* ( read_buffer_size(顺序读缓冲,提高顺序读效率) + read_rnd_buffer_size(随机读缓冲, ...
- Behavior Designer 学习
http://www.opsive.com/ 简单Demo Sequence Selector Chase Enemy enemy:player:
- HTTP请求属性说明
1)URL:页面地址. 2)Method :页面的提交方式,POST或GET. 3)EncType:编码类型.此参数给出一个内容类型(Content-Type),指定其做为回放脚本时“Content- ...
- 20165308 实验二 Java面向对象程序设计
20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 ...
- bzoj 4349 最小树形图——朱刘算法
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4349. 学习博客:http://www.cnblogs.com/xzxl/p/7243466 ...
- java-线程(runoob.com)
参考链接: https://www.cnblogs.com/wxd0108/p/5479442.html https://www.cnblogs.com/dolphin0520/p/3920373.h ...
- python 字符串格式化—format
Python2.6 开始,新增了一种格式化字符串的函数 str.format().使用起来简单方便,不会遇到使用%时候格式的选择问题. 按照参数默认顺序 >>> "yesd ...
- mysql binlog to sql and show mysqlstatusadmin
sed '/WHERE/{:a;N;/SET/!ba;s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' 1.txt | sed -r '/WHERE/{:a;N;/ ...
- MHA 报错:There is no alive slave. We can't do failover
dba http://blog.csdn.net/zengxuewen2045/article/details/51524880 关于这个错误: 1 2 3 4 Mon Feb 13 10:29: ...
- JavaScript之WebSocket技术详解
概述 HTTP协议是一种无状态协议,服务器端本身不具有识别客户端的能力,必须借助外部机制,比如session和cookie,才能与特定客户端保持对话.这多多少少带来一些不便,尤其在服务器端与客户端需要 ...