背景:原配置的是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

重启应用程序,加密完成。

 

 

 

posted on 2020-08-24 14:49  sarah33  阅读(587)  评论(0)    收藏  举报