Centos7 搭建Redis4.10哨兵机制

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值