CacheCloud从3月17日正式开源,虽然在我们内部一直运行正常,开源后虽然没有大的问题,但还是遇到很多小问题,比如操作系统兼容性问题,数据库版本问题,一些配置不灵活等等问题。
期间感谢大家的反馈,现在将CacheCloud修复的问题列出来,希望将来这个能一直更新下去,有问题去github issue一下。
搜狐视频Redis云平台CacheCloud的github主页:https://github.com/sohutv/cachecloud
欢迎关注、star、拍砖,Q群:534429768
2016-03-18:添加机器后不能立刻出现在机器列表中
1. 表现:添加机器后不能立刻出现在机器列表中。
2. 原因:最早的版本必须等到quartz收集完机器信息才显示。
3. 解决:添加机器信息后,立即显示在列表中,不过机器信息显示收集中。
2016-03-19:sentinel必须写死在配置中
1. 表现:sentinel列表必须写死在配置中。
2. 原因:历史原因造成,cachecloud在内部用了固定的三台机器,为了偷懒。
https://github.com/sohutv/cachecloud/commit/e596d4326fac911f4172158de1ae03abb14f9830
2016-03-21:保存机器收集信息报错
1. 表现:保存机器收集信息,提示和virtual相关的报错
2. 原因:mysql5.7中virtual是关键字
3. 解决:在mybatis的mapper中兼容
具体参考:https://github.com/sohutv/cachecloud/commit/d6e1ffb1ebd9bd1df9b55535da9fec7000167559
2016-03-28:修复redis cluster节点都在一台机器时,机器挂掉后,无法显示运维界面
1. 表现:应用运维界面为空白,收到空指针
2. 原因:所有实例都挂了,无法获取slot信息,造成空指针
3. 解决:如果出现,暂时先返回空的Map
具体参考:https://github.com/sohutv/cachecloud/commit/b5f8d7dbc78df4354f995c61b6513a6f6188e809
2016-03-29:修复机器信息统计在centos7 debian等操作系统失效
1. 表现:收集机器信息报错,
2. 原因:centos 各个版本, redhat, ubuntu执行top对应的信息不同,解析方法没有兼容造成。
3. 解决:使用正则表达式解决。
2016-03-31:启动脚本问题。
问题: /etc/init.d/cachecloud-web start 启动失败
状态:已经修复,详见:https://github.com/sohutv/cachecloud/commit/6ba783a2367aec69d6c1abcd1c65b592a7274cca
解决方法:使用nohup java形式启动,使用kill pid关闭,详见start.sh和stop.sh
2016-04-03: 修复机器更新异常。
问题:cachecloud后台机器管理中,修改机器信息提示更新失败。
状态:已经修复,详见:https://github.com/sohutv/cachecloud/commit/ad0d54bbe0a24f3f1eb94b96e34168b0e2d65f61
解决方法:添加和更新用一个方法实现。
2016-04-07: 修复应用运维界面,运维后页面不刷新
问题:应用运维界面在执行failover, add slave等操作后,页面刷新不太正常
状态:已经修复。
解决方法:js的页面刷新使用错误,虽然比较好解决,但是这个不刷新会对集群节点关系产生错觉(之前一直是手动刷新解决的).
详见:https://github.com/sohutv/cachecloud/commit/607dc8d254329f71666e6fc34e5c2a0b96cd4dd7
2016-04-07: 去掉InstanceInfo中的parentId(对应instance_info表)
问题:parentId起初设计是代表当前节点是否为master(parentId>0代表slave, parentId=0代表master),但是这个设计是有问题的,因为后期在运维过程中,主从关系关系会发生变化,需要维护parentId这个字段的一致性。
状态:已经修复
解决方法:去掉parentId,完全使用实时主从关系。
详见:https://github.com/sohutv/cachecloud/commit/dccb8b2304977bd462fd637c9f1571f04577804b
2016-04-07: JedisCluster初始化不需要指定主从关系
问题:JedisCluster初始化用到的nodeList是不需要指定主从关系的,具体可以参考Jedis中JedisClusterConnectionHandler的initializeSlotsCache方法,它会自动发现集群信息。
private void initializeSlotsCache(Set<HostAndPort> startNodes, GenericObjectPoolConfig poolConfig) { for (HostAndPort hostAndPort : startNodes) { Jedis jedis = new Jedis(hostAndPort.getHost(), hostAndPort.getPort()); try { cache.discoverClusterNodesAndSlots(jedis); break; } catch (JedisConnectionException e) { // try next nodes } finally { if (jedis != null) { jedis.close(); } } } for (HostAndPort node : startNodes) { cache.setNodeIfNotExist(node); } }
状态:已经修复
详见:https://github.com/sohutv/cachecloud/commit/4b8c4ecf335dc024637f3b69b5adc2ce4e0828c4