Centos7 搭建Redis4.10哨兵机制
2019-04-30 18:13
393 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42467339/article/details/89712644
Redis作为一个高性能内存数据库,也常用于系统的缓存数据库,与Memcache类似,再生产环境中,当然需要做高可用的结构,即主从复制,替换等功能,可以实现主数据库挂掉,从库自动补上,不影响正常使用。
Redis的主从,哨兵配置也非常简单,一主N从,N哨兵都可以。具体的配置方法下面记录一下:
预设环境: 一主,2丛,3哨兵
此处以1台机器,3个redis,3哨兵举例
一丶安装Redis
1.1 下载redis安装包
[root@localhost src]# wget http://download.redis.io/releases/redis-4.0.11.tar.gz
1.2 解压压缩包
[root@localhost src]# tar -zxvf redis-4.0.11.tar.gz
1.3 yum安装gcc依赖
[root@localhost src]# yum install gcc
1.4 进入到redis解压目录下
[root@localhost src]# cd redis-4.0.11
1.5 编译安装
[root@localhost src]# make MALLOC=libc [root@localhost src]# make install
二丶配置Redis
2.1 创建redis目录,进入到目录依次新建redis1目录,redis2目录,redis3目录。redis1为master节点,redis2和redis3为slave节点。
[root@localhost src]# mkdir redis1 redis2 redis3
注:将解压好的redis-4.0.11 分别copy三份到各个目录
2.2 主节点配置,进入redis1目录
2.2.1配置redis.conf
[root@localhost src]# vim redis.conf
**调整配置如下:** port 6380 #bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接) protected-mode no (关闭保护进程) daemonize yes (开启守护进程) timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)
2.2.2配置sentinel.conf 哨兵文件
[root@localhost src]# vim sentinel.conf
#master节点 **调整配置如下:** ### 哨兵配置 ### port 26380 #设定matser主机的IP和端口 #后面的2,表示有两台或以上哨兵认定master挂掉了 #则可认为master挂掉,进行master的切换,这里设置三台哨兵 sentinel monitor mymaster 10.32.178.78 6380 2 #master或slave多长时间(默认30秒)不能使用后标记为s_down状态。 sentinel down-after-milliseconds mymaster 30000 #若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。 sentinel failover-timeout mymaster 900000 #选项指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步 #这个数字越小,完成故障转移所需的时间就越长。 sentinel parallel-syncs mymaster 1 #指定master主机的密码,如果你的redis集群有密码 #sentinel auth-pass mymaster 123456 #新添加的配置,启用守护进程 daemonize yes #关闭保护模式 protected-mode no #新添加的,只当日志文件位置 logfile "/usr/java/redis/redis1/sentinel_26380.log" #设置pid文件路径 pidfile "/usr/java/redis/redis1/sentinel_26380.pid" #工作路径,不用改 dir /tmp
2.3 从节点配置,进入redis2目录
2.3.1 配置redis.conf
[root@localhost src]# vim redis.conf
**调整配置如下:** port 6381 #bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接) protected-mode no (关闭保护进程) daemonize yes (开启守护进程) timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能) slaveof 10.32.178.78 6380 (指定master节点)
2.3.2 配置sentinel.conf 哨兵文件
[root@localhost src]# vim sentinel.conf
#调整配置如下: ### 哨兵配置 ### port 26381 #设定matser主机的IP和端口 #后面的2,表示有两台或以上哨兵认定master挂掉了 #则可认为master挂掉,进行master的切换,这里设置三台哨兵 sentinel monitor mymaster 10.32.178.78 6380 2 #master或slave多长时间(默认30秒)不能使用后标记为s_down状态。 sentinel down-after-milliseconds mymaster 30000 #若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。 sentinel failover-timeout mymaster 900000 #选项指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步 #这个数字越小,完成故障转移所需的时间就越长。 sentinel parallel-syncs mymaster 1 #指定master主机的密码,如果你的redis集群有密码 #sentinel auth-pass mymaster 123456 #新添加的配置,启用守护进程 daemonize yes #关闭保护模式 protected-mode no #新添加的,只当日志文件位置 logfile "/usr/java/redis/redis2/sentinel_26380.log" #设置pid文件路径 pidfile "/usr/java/redis/redis2/sentinel_26380.pid" #工作路径,不用改 dir /tmp
2.4 从节点配置, 进入redis3目录
2.4.1 配置redis.conf
[root@localhost src]# vim redis.conf
#调整配置如下: port 6382 #bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接) protected-mode no (关闭保护进程) daemonize yes (开启守护进程) timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能) slaveof 10.32.178.78 6380 (指定master节点)
2.4.2 配置sentinel.conf 哨兵文件
[root@localhost src]# vim sentinel.conf
# 调整配置如下: ### 哨兵配置 ### #master节点 port 26382 #设定matser主机的IP和端口 #后面的2,表示有两台或以上哨兵认定master挂掉了 #则可认为master挂掉,进行master的切换,这里设置三台哨兵 sentinel monitor mymaster 10.32.178.78 6380 2 #master或slave多长时间(默认30秒)不能使用后标记为s_down状态。 sentinel down-after-milliseconds mymaster 30000 #若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。 sentinel failover-timeout mymaster 900000 #选项指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步 #这个数字越小,完成故障转移所需的时间就越长。 sentinel parallel-syncs mymaster 1 #指定master主机的密码,如果你的redis集群有密码 #sentinel auth-pass mymaster 123456 #新添加的配置,启用守护进程 daemonize yes #关闭保护模式 protected-mode no #新添加的,只当日志文件位置 logfile "/usr/java/redis/redis3/sentinel_26382.log" #设置pid文件路径 pidfile "/usr/java/redis/redis3/sentinel_26382.pid" #工作路径,不用改 dir /tmp
2.5 创建启动配置文件(一次性启动redis及哨兵)
[root@localhost src]# touch redis-ms-start-all.sh
编辑内容如下: cd /usr/local/java/redis-ms/redis-7021 /usr/local/java/redis-4.0.10/src/redis-server redis.conf /usr/local/java/redis-4.0.10/src/redis-sentinel sentinel.conf cd .. cd /usr/local/java/redis-ms/redis-7022 /usr/local/java/redis-4.0.10/src/redis-server redis.conf /usr/local/java/redis-4.0.10/src/redis-sentinel sentinel.conf cd .. cd /usr/local/java/redis-ms/redis-7023 /usr/local/java/redis-4.0.10/src/redis-server redis.conf /usr/local/java/redis-4.0.10/src/redis-sentinel sentinel.conf cd ..
2.5.1 启动redis服务及哨兵
[root@localhost src]# /usr/java/redis/redis-ms-start-all.sh
(注:需要先给 redis-ms-start-all.sh 文件授权 命令:chmod 775 redis-ms-start-all.sh)
2.6 测试redis服务
## 查看master节点服务, 6380节点为主节点 [root@localhost src]# ./redis-cli -h 10.32.178.78 -p 6380 10.32.178.78:6380> info replication #Replication role:master connected_slaves:2 slave0:ip=10.32.178.78,port=6381,state=online,offset=26495,lag=1 slave1:ip=10.32.178.78,port=6382,state=online,offset=26509,lag=1 master_replid:418d4b1ad90eb2bc6ffd523ca88d03655716e804 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:26509 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:26509 10.32.178.78:6380> exit
查看slave节点服务,6381节点为从节点
[root@localhost src]# ./redis-cli -h 10.32.178.78 -p 6381 10.32.178.78:6381> info replication # Replication role:slave master_host:10.32.178.78 master_port:6380 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:67889 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:418d4b1ad90eb2bc6ffd523ca88d03655716e804 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:67889 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:67889 10.32.178.78:6381> exit
查看slave节点服务,6382节点为从节点
[root@localhost src]# ./redis-cli -h 10.32.178.78 -p 6382 10.32.178.78:6382> info replication # Replication role:slave master_host:10.32.178.78 master_port:6380 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:77398 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:418d4b1ad90eb2bc6ffd523ca88d03655716e804 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:77398 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:77398 10.32.178.78:6382> exit
6.查看sentinel的状态
## 查看哨兵节点:26380 [root@localhost src]# ./redis-cli -h 10.32.178.78 -p 26380 10.32.178.78:26380> info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=10.32.178.78:6380,slaves=2,sentinels=3 10.32.178.78:26380> exit ## 查看哨兵节点:26381 [root@localhost src]# ./redis-cli -h 10.32.178.78 -p 26381 10.32.178.78:26381> info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=10.32.178.78:6380,slaves=2,sentinels=3 10.32.178.78:26381> exit ## 查看哨兵节点:26382 [root@localhost src]# ./redis-cli -h 10.32.178.78 -p 26382 10.32.178.78:26382> info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=10.32.178.78:6380,slaves=2,sentinels=3 10.32.178.78:26382> exit
7.配置防火墙端口
[root@localhost redis1]# firewall-cmd --permanent --zone=public --add-port=6380/tcp success [root@localhost redis1]# firewall-cmd --permanent --zone=public --add-port=6381/tcp success [root@localhost redis1]# firewall-cmd --permanent --zone=public --add-port=6382/tcp success [root@localhost redis1]# firewall-cmd --permanent --zone=public --add-port=26380/tcp success [root@localhost redis1]# firewall-cmd --permanent --zone=public --add-port=26381/tcp success [root@localhost redis1]# firewall-cmd --permanent --zone=public --add-port=26382/tcp success [root@localhost redis1]# firewall-cmd --reload success
至此,哨兵集群配置成功。
相关文章推荐
- 基于Centos7系统搭建Redis集群之哨兵机制(新手教程)
- 搭建基于 centos 的 Redis 哨兵模式 (4.0.6)
- redis哨兵机制搭建
- redis 哨兵机制环境搭建
- 搭建redis-sentinel(哨兵机制)集群
- Redis单机搭建主从复制以及哨兵机制
- 搭建redis-sentinel(哨兵机制)集群
- 搭建redis-sentinel(哨兵机制)集群
- [置顶] 搭建一个简单的redis-sentinel(哨兵机制)集群
- 搭建redis-sentinel(哨兵机制)集群
- CentOS中搭建Redis伪分布式集群【转】
- centos6.5 redis搭建
- ubuntu/centos 搭建 搭建 redis 集群
- redis主从集群搭建及容灾部署(哨兵sentinel)
- Centos6.5搭建Redis集群
- Linux+Windows环境下Redis安装详细教程(主从复制+哨兵机制配置)
- redis高可用之sentinel哨兵集群详解与搭建
- 【环境配置】Centos7 nginx+php+redis环境搭建
- redis主从集群搭建及容灾部署(哨兵sentinel)
- CentOs7 搭建基于最新版 Redis 集群环境之图文详解