centos7下redis哨兵集群配置

た 入场券 2022-05-18 02:27 310阅读 0赞

redis作为一个高性能内存数据库,也常用于系统的缓存数据库,与memcache类似,再生产环境中,当然需要做高可用的结构,即主从复制,替换等功能,可以实现主数据库挂掉,从库自动补上,不影响正常使用。

redis的主从,哨兵配置也非常简单,一主N从,N哨兵都可以。具体的配置方法下面记录一下:
预设环境: 一主,2丛,3哨兵

此处以1台机器,3个redis,3哨兵举例

1.创建redis-ms目录,里面依次新建redis-7021目录,redis-7022目录,redis-7023目录。redis-7021为master节点,redis-7022和redis7023为slave节点。

2.主节点配置,进入redis-7021目录。

配置redis.conf

  1. # 复制redis-4.0.10下的redis.conf到redis-7021下
  2. cp /usr/local/java/redis-4.0.10/redis.conf /usr/local/java/redis-ms/redis-7021/
  3. # 调整配置如下:
  4. port 7021
  5. # bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接)
  6. protected-mode no (关闭保护进程)
  7. daemonize yes (开启守护进程)
  8. timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)

配置sentinel.conf 哨兵文件

  1. # 复制redis-4.0.10下的sentinel.conf到redis-7021下
  2. cp /usr/local/java/redis-4.0.10/sentinel.conf /usr/local/java/redis-ms/redis-7021/
  3. # 调整配置如下:
  4. ### 哨兵配置 ###
  5. #master节点
  6. port 26381
  7. #设定matser主机的IP和端口
  8. #后面的2,表示有两台或以上哨兵认定master挂掉了
  9. #则可认为master挂掉,进行master的切换,这里设置三台哨兵
  10. sentinel monitor mymaster 192.168.2.2 7021 2
  11. #master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
  12. sentinel down-after-milliseconds mymaster 30000
  13. #若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
  14. sentinel failover-timeout mymaster 900000
  15. #选项指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步
  16. #这个数字越小,完成故障转移所需的时间就越长。
  17. sentinel parallel-syncs mymaster 1
  18. #指定master主机的密码,如果你的redis集群有密码
  19. #sentinel auth-pass mymaster 123456 
  20. #新添加的配置,启用守护进程
  21. daemonize yes
  22. #关闭保护模式
  23. protected-mode no
  24. #新添加的,只当日志文件位置
  25. logfile "/usr/local/java/redis-ms/redis-7021/sentinel_26381.log"
  26. #设置pid文件路径
  27. pidfile "/usr/local/java/redis-ms/redis-7021/sentinel_26381.pid"
  28. #工作路径,不用改
  29. dir /tmp

3.从节点配置

3.1进入redis-7022目录

配置redis.conf

  1. # 复制redis-4.0.10下的redis.conf到redis-7022下
  2. cp /usr/local/java/redis-4.0.10/redis.conf /usr/local/java/redis-ms/redis-7022/
  3. # 调整配置如下:
  4. port 7022
  5. # bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接)
  6. protected-mode no (关闭保护进程)
  7. daemonize yes (开启守护进程)
  8. timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)
  9. slaveof 192.168.2.2 7021 (指定master节点)

配置sentinel.conf 哨兵文件

  1. # 复制redis-4.0.10下的sentinel.conf到redis-7022下
  2. cp /usr/local/java/redis-4.0.10/sentinel.conf /usr/local/java/redis-ms/redis-7022/
  3. # 调整配置如下:
  4. ### 哨兵配置 ###
  5. #master节点
  6. port 26382
  7. #设定matser主机的IP和端口
  8. #后面的2,表示有两台或以上哨兵认定master挂掉了
  9. #则可认为master挂掉,进行master的切换,这里设置三台哨兵
  10. sentinel monitor mymaster 192.168.2.2 7021 2
  11. #master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
  12. sentinel down-after-milliseconds mymaster 30000
  13. #若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
  14. sentinel failover-timeout mymaster 900000
  15. #选项指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步
  16. #这个数字越小,完成故障转移所需的时间就越长。
  17. sentinel parallel-syncs mymaster 1
  18. #指定master主机的密码,如果你的redis集群有密码
  19. #sentinel auth-pass mymaster 123456 
  20. #新添加的配置,启用守护进程
  21. daemonize yes
  22. #关闭保护模式
  23. protected-mode no
  24. #新添加的,只当日志文件位置
  25. logfile "/usr/local/java/redis-ms/redis-7022/sentinel_26382.log"
  26. #设置pid文件路径
  27. pidfile "/usr/local/java/redis-ms/redis-7022/sentinel_26382.pid"
  28. #工作路径,不用改
  29. dir /tmp

3.2进入redis-7023目录

配置redis.conf

  1. # 复制redis-4.0.10下的redis.conf到redis-7023下
  2. cp /usr/local/java/redis-4.0.10/redis.conf /usr/local/java/redis-ms/redis-7023/
  3. # 调整配置如下:
  4. port 7023
  5. # bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接)
  6. protected-mode no (关闭保护进程)
  7. daemonize yes (开启守护进程)
  8. timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)
  9. slaveof 192.168.2.2 7021 (指定master节点)

配置sentinel.conf 哨兵文件

  1. # 复制redis-4.0.10下的sentinel.conf到redis-7023下
  2. cp /usr/local/java/redis-4.0.10/sentinel.conf /usr/local/java/redis-ms/redis-7023/
  3. # 调整配置如下:
  4. ### 哨兵配置 ###
  5. #master节点
  6. port 26383
  7. #设定matser主机的IP和端口
  8. #后面的2,表示有两台或以上哨兵认定master挂掉了
  9. #则可认为master挂掉,进行master的切换,这里设置三台哨兵
  10. sentinel monitor mymaster 192.168.2.2 7021 2
  11. #master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
  12. sentinel down-after-milliseconds mymaster 30000
  13. #若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
  14. sentinel failover-timeout mymaster 900000
  15. #选项指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步
  16. #这个数字越小,完成故障转移所需的时间就越长。
  17. sentinel parallel-syncs mymaster 1
  18. #指定master主机的密码,如果你的redis集群有密码
  19. #sentinel auth-pass mymaster 123456 
  20. #新添加的配置,启用守护进程
  21. daemonize yes
  22. #关闭保护模式
  23. protected-mode no
  24. #新添加的,只当日志文件位置
  25. logfile "/usr/local/java/redis-ms/redis-7023/sentinel_26383.log"
  26. #设置pid文件路径
  27. pidfile "/usr/local/java/redis-ms/redis-7023/sentinel_26383.pid"
  28. #工作路径,不用改
  29. dir /tmp

4.创建启动配置文件(一次性启动redis及哨兵)

  1. touch redis-ms-start-all.sh
  2. 编辑内容如下:
  3. cd /usr/local/java/redis-ms/redis-7021
  4. /usr/local/java/redis-4.0.10/src/redis-server redis.conf
  5. /usr/local/java/redis-4.0.10/src/redis-sentinel sentinel.conf
  6. cd ..
  7. cd /usr/local/java/redis-ms/redis-7022
  8. /usr/local/java/redis-4.0.10/src/redis-server redis.conf
  9. /usr/local/java/redis-4.0.10/src/redis-sentinel sentinel.conf
  10. cd ..
  11. cd /usr/local/java/redis-ms/redis-7023
  12. /usr/local/java/redis-4.0.10/src/redis-server redis.conf
  13. /usr/local/java/redis-4.0.10/src/redis-sentinel sentinel.conf
  14. cd ..

启动redis服务及哨兵

/usr/local/java/redis-ms/redis-ms-start-all.sh

5.测试redis服务

  1. ## 查看master节点服务, 7021节点为主节点
  2. [root@localhost src]# ./redis-cli -h 192.168.2.2 -p 7021
  3. 192.168.2.2:7021> info replication
  4. # Replication
  5. role:master
  6. connected_slaves:2
  7. slave0:ip=192.168.2.2,port=7022,state=online,offset=26495,lag=1
  8. slave1:ip=192.168.2.2,port=7023,state=online,offset=26509,lag=1
  9. master_replid:418d4b1ad90eb2bc6ffd523ca88d03655716e804
  10. master_replid2:0000000000000000000000000000000000000000
  11. master_repl_offset:26509
  12. second_repl_offset:-1
  13. repl_backlog_active:1
  14. repl_backlog_size:1048576
  15. repl_backlog_first_byte_offset:1
  16. repl_backlog_histlen:26509
  17. 192.168.2.2:7021> exit
  18. ## 查看slave节点服务,7022节点为从节点
  19. [root@localhost src]# ./redis-cli -h 192.168.2.2 -p 7022
  20. 192.168.2.2:7022> info replication
  21. # Replication
  22. role:slave
  23. master_host:192.168.2.2
  24. master_port:7021
  25. master_link_status:up
  26. master_last_io_seconds_ago:1
  27. master_sync_in_progress:0
  28. slave_repl_offset:67889
  29. slave_priority:100
  30. slave_read_only:1
  31. connected_slaves:0
  32. master_replid:418d4b1ad90eb2bc6ffd523ca88d03655716e804
  33. master_replid2:0000000000000000000000000000000000000000
  34. master_repl_offset:67889
  35. second_repl_offset:-1
  36. repl_backlog_active:1
  37. repl_backlog_size:1048576
  38. repl_backlog_first_byte_offset:1
  39. repl_backlog_histlen:67889
  40. 192.168.2.2:7022> exit
  41. ## 查看slave节点服务,7023节点为从节点
  42. [root@localhost src]# ./redis-cli -h 192.168.2.2 -p 7023
  43. 192.168.2.2:7023> info replication
  44. # Replication
  45. role:slave
  46. master_host:192.168.2.2
  47. master_port:7021
  48. master_link_status:up
  49. master_last_io_seconds_ago:1
  50. master_sync_in_progress:0
  51. slave_repl_offset:77398
  52. slave_priority:100
  53. slave_read_only:1
  54. connected_slaves:0
  55. master_replid:418d4b1ad90eb2bc6ffd523ca88d03655716e804
  56. master_replid2:0000000000000000000000000000000000000000
  57. master_repl_offset:77398
  58. second_repl_offset:-1
  59. repl_backlog_active:1
  60. repl_backlog_size:1048576
  61. repl_backlog_first_byte_offset:1
  62. repl_backlog_histlen:77398
  63. 192.168.2.2:7023> exit

6.查看sentinel的状态

  1. ## 查看哨兵节点:26381
  2. [root@localhost src]# ./redis-cli -h 192.168.2.2 -p 26381
  3. 192.168.2.2:26381> info sentinel
  4. # Sentinel
  5. sentinel_masters:1
  6. sentinel_tilt:0
  7. sentinel_running_scripts:0
  8. sentinel_scripts_queue_length:0
  9. sentinel_simulate_failure_flags:0
  10. master0:name=mymaster,status=ok,address=192.168.2.2:7021,slaves=2,sentinels=3
  11. 192.168.2.2:26381> exit
  12. ## 查看哨兵节点:26382
  13. [root@localhost src]# ./redis-cli -h 192.168.2.2 -p 26382
  14. 192.168.2.2:26382> info sentinel
  15. # Sentinel
  16. sentinel_masters:1
  17. sentinel_tilt:0
  18. sentinel_running_scripts:0
  19. sentinel_scripts_queue_length:0
  20. sentinel_simulate_failure_flags:0
  21. master0:name=mymaster,status=ok,address=192.168.2.2:7021,slaves=2,sentinels=3
  22. 192.168.2.2:26382> exit
  23. ## 查看哨兵节点:26383
  24. [root@localhost src]# ./redis-cli -h 192.168.2.2 -p 26383
  25. 192.168.2.2:26383> info sentinel
  26. # Sentinel
  27. sentinel_masters:1
  28. sentinel_tilt:0
  29. sentinel_running_scripts:0
  30. sentinel_scripts_queue_length:0
  31. sentinel_simulate_failure_flags:0
  32. master0:name=mymaster,status=ok,address=192.168.2.2:7021,slaves=2,sentinels=3
  33. 192.168.2.2:26383> exit

7.配置防火墙端口

  1. [root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=7021/tcp
  2. success
  3. [root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=7022/tcp
  4. success
  5. [root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=7023/tcp
  6. success
  7. [root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=26381/tcp
  8. success
  9. [root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=26382/tcp
  10. success
  11. [root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=26383/tcp
  12. success
  13. [root@localhost redis-7021]# firewall-cmd --reload
  14. success
  15. [root@localhost redis-7021]# firewall-cmd --permanent --zone=public --list-ports
  16. 8080/tcp 27017/tcp 6379/tcp 7001/tcp 7002/tcp 7003/tcp 7004/tcp 7005/tcp 7006/tcp 3306/tcp 11211/tcp 3690/tcp 80/tcp 2181/tcp 8081/tcp 8082/tcp 8083/tcp 7021/tcp 7022/tcp 7023/tcp 26381/tcp 26382/tcp 26383/tcp

至此,哨兵集群配置成功。

发表评论

表情:
评论列表 (有 0 条评论,310人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis-哨兵

    哨兵: 哨兵(sentinel),是一个分布式系统,用于对主从结构中的每一台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的mas

    相关 CentOS7 配置

    我一直以为的集群是一批服务器组成一个群体-有任务过来时快速分配,快速完成,所以在集群环境搭建好之后,我就傻眼了,为什么服务器A上Nginx启动,服务器B上Ngin

    相关 centos7redis哨兵配置

    redis作为一个高性能内存数据库,也常用于系统的缓存数据库,与memcache类似,再生产环境中,当然需要做高可用的结构,即主从复制,替换等功能,可以实现主数据库挂掉,从库自