背景:原配置的是redis不加密,客户爸爸要求升级为redis加密,并且要求把升级过程对生产环境的影响降低到最低,求最优的升级路线~
猜想大致的步骤为:
- 哨兵加密
- 从加密
- 主加密
- 应用加密
哨兵加密对应sentinel.conf配置:
sentinel auth-pass mymaster 12345 --> 哨兵凭此密码连接主redis,对应主redis.conf中的requirepass参数
主从加密对应redis.conf配置:
requirepass 123456 --> 客户端凭此密码才能连接redis执行相关命令,各个redis节点该配置可以独立不相同
masterauth 123456 --> 从redis凭此密码才能连接到主redis,对应主redis.conf中的requirepass参数
注意:masterauth与requirepass表示不同的意思,但是哨兵模式下可能发生主从切换,为降低运维成本一般这两个值配置一致。
除了修改配置文件重启,还可以通过命令实现:config set requirepass 123456,然后执行config rewrite将配置更新写入配置文件
测试:模拟生产环境,在测试环境搭建了一套不加密的redis哨兵,1主2从3哨兵的结构,配置应用程序redis。在启动状态下按照以下顺序进行测试:
1.哨兵加密
依次关闭哨兵程序,修改sentinel.conf配置,重启哨兵。
关闭哨兵期间,应用程序有相关报错可忽略,不影响业务运行,哨兵重启后停止报错。
2.从加密
依次关闭redis-slave程序,修改redis.conf配置,重启从redis。
重启后主从角色不变,但是主从交互异常。
3.主加密
关闭redis-master程序,修改redis.conf配置,重启主redis。
主从交互恢复,哨兵与redis主从交互也正常。
4.应用程序redis配置加密
关闭应用程序,修改配置文件,配置redis.pwd=123456
重启应用程序,加密完成。