guoyanga 2018-10-11
codis是比较成熟的redis集群解决方案,在使用过程中,遇到过一些常见的问题。
1、codis-dashboard 异常退出
codis-dashboard如果是正常kill命令退出的话,会去zookeeper或者etcd或者文件系统上删除注册信息。但是如果是异常退出,这些注册信息就还在,会导致重启dashboard失败。这时候就需要使用codis-admin删除注册信息。
操作步骤:a、确认codis-dashboard已经退出;b、./codis-admin --remove-lock --product=codis-demo --zookeeper=127.0.0.1:2181
2、codis-proxy 异常退出
codis-proxy一般是通过codis-dashboard进行添加和删除的。删除codis-proxy的时候,codis-dashboard 为了安全会向 codis-proxy 发送 offline 指令,成功后才会将 proxy 信息从外部存储中移除。但是如果是codis-proxy异常退出就会导致在codis-fe界面无法删除。可以使用codis-admin进行删除
操作步骤:./codis-admin --dashboard=127.0.0.1:18080 --remove-proxy --addr=127.0.0.1:11080 --force #选项 --force 表示,无论 offline 操作是否成功,都从外部存储中将该节点删除。所以操作前,一定要确认该 codis-proxy 进程已经退出。
3、codis报错 check xauth failed
有可能是集群组件设置不同的密码导致组件之间的验证不通过,统一一下组件间的密码即可;也有可主机名解析的问题导致的,一般是在/etc/hosts里面添加主机名的解析,但是如果机器上有多个IP,也会导致dashboard验证IP的时候出现验证异常的现象。避免出现问题的方法:不要使用0.0.0.0作为监听地址,直接制定IP即可。codis3.1.5以上的版本会修复这个问题。(但是还是手动指定IP靠谱)
4、设置密码验证
为了安全性,我们一般都是设置密码验证。在codis-dashboard的配置文件中需要设置product_auth 、codis-proxy的配置文件中设置product_auth和codis-server配置文件设置require,这三个地方的密码要保持一直,不然组件之间会验证失败。同时最重要的是codis-proxy可以设置一个session_auth,只有设置这个连接codis-proxy才需要验证,不然还是无密码验证。