您的位置:首页 > 数据库 > Redis

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: