使用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 ...
随机推荐
- ORM 创建manytomay的三种方法 反向查询 和一些 双下方法版学员管理系统3
老师信息管理 三种创建多对对外键的方式常用第二种和第三种 思考 三种方式创建多对多外键方式及其优缺点. 外键的查询和使用 1外键的创建: 在数据库表中的表现形式 如何连表查询和使用 表里边: s ...
- java int and Integer
本文转自:https://www.cnblogs.com/guodongdidi/p/6953217.html int和Integer的区别 1.Integer是int的包装类,int则是java的一 ...
- day 27 网络通信协议 tup udp 下的socket
1.osi七层模型 通信流程 socket(抽象层): 结合上图来看,socket在哪一层呢,我们继续看下图 socket在内的五层通讯流程: 2.TCP/UDP的区别: TCP是以数据流的形式传输, ...
- js 数字数组按大小排序
var num = [7,8,6,5,2] //倒序排列 num.sort((a,b)=>{return b-a}) //正序排列 num.sort((a,b)=>{return a-b} ...
- css 如何实现图片等比例缩放
在进行布局的时候,很多PM都要求图片等比例缩放,而且要求图片不失真,不变形,但是UI设计好了这个div的宽度又不能随意更改,而后台传过来的图片也不是等比例的图片,这就比较难受了,写成 width: 1 ...
- css 兼容性问题,整理
css 兼容性问题,整理: css 兼容性问题 说明 <input type="number"> 在chrome下,是不能输入非数字的字符的:但是在火狐63.0.3(2 ...
- 1、Zookeeper安装及问题与集群
1.下载zookeeper.tat.gz压缩包 2.解压 tar –xvf file.tar //解压 tar包 tar -xzvf file.tar.gz //解压tar.gz tar -xjvf ...
- Jmeter中Websocket协议支持包的使用
Jmeter中Websocket协议支持包的使用(转) 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan.cn/cFzwiyeQDKdh3 (提取码:9bcf)) 转自:ht ...
- Spring AOP + PageHelper分页
1.增加依赖配置 <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweav ...
- Ribbon 使用入门
Ribbon 是 Netflix 下的负载均衡项目,在集群中为各个客户端的通信提供支持,主要实现中间层应用程序的负载均衡,提供以下特性: 负载均衡器,可支持插拔式的负载均衡规则 对多种协议提供支持,例 ...