centos7下redis哨兵集群配置

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

# 复制redis-4.0.10下的redis.conf到redis-7021下
cp /usr/local/java/redis-4.0.10/redis.conf /usr/local/java/redis-ms/redis-7021/

# 调整配置如下:
port 7021
# bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接)
protected-mode no (关闭保护进程)
daemonize yes (开启守护进程)
timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)

  配置sentinel.conf  哨兵文件

# 复制redis-4.0.10下的sentinel.conf到redis-7021下
cp /usr/local/java/redis-4.0.10/sentinel.conf /usr/local/java/redis-ms/redis-7021/

# 调整配置如下:
### 哨兵配置 ###
#master节点
port 26381

#设定matser主机的IP和端口
#后面的2,表示有两台或以上哨兵认定master挂掉了
#则可认为master挂掉,进行master的切换,这里设置三台哨兵
sentinel monitor mymaster 192.168.2.2 7021 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/local/java/redis-ms/redis-7021/sentinel_26381.log" 
#设置pid文件路径  
pidfile "/usr/local/java/redis-ms/redis-7021/sentinel_26381.pid"
#工作路径,不用改  
dir /tmp

3.从节点配置

 3.1进入redis-7022目录

  配置redis.conf

# 复制redis-4.0.10下的redis.conf到redis-7022下
cp /usr/local/java/redis-4.0.10/redis.conf /usr/local/java/redis-ms/redis-7022/

# 调整配置如下:
port 7022
# bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接)
protected-mode no (关闭保护进程)
daemonize yes (开启守护进程)
timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)
slaveof 192.168.2.2 7021  (指定master节点)

  配置sentinel.conf  哨兵文件

# 复制redis-4.0.10下的sentinel.conf到redis-7022下
cp /usr/local/java/redis-4.0.10/sentinel.conf /usr/local/java/redis-ms/redis-7022/

# 调整配置如下:
### 哨兵配置 ###
#master节点
port 26382

#设定matser主机的IP和端口
#后面的2,表示有两台或以上哨兵认定master挂掉了
#则可认为master挂掉,进行master的切换,这里设置三台哨兵
sentinel monitor mymaster 192.168.2.2 7021 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/local/java/redis-ms/redis-7022/sentinel_26382.log" 
#设置pid文件路径  
pidfile "/usr/local/java/redis-ms/redis-7022/sentinel_26382.pid"
#工作路径,不用改  
dir /tmp

 3.2进入redis-7023目录

  配置redis.conf

# 复制redis-4.0.10下的redis.conf到redis-7023下
cp /usr/local/java/redis-4.0.10/redis.conf /usr/local/java/redis-ms/redis-7023/

# 调整配置如下:
port 7023
# bind 127.0.0.1 (注释掉这个配置项,允许任意用户连接)
protected-mode no (关闭保护进程)
daemonize yes (开启守护进程)
timeout 300 (客户端限制300秒后关闭连接,0则为不启动此功能)
slaveof 192.168.2.2 7021  (指定master节点)

  配置sentinel.conf  哨兵文件

# 复制redis-4.0.10下的sentinel.conf到redis-7023下
cp /usr/local/java/redis-4.0.10/sentinel.conf /usr/local/java/redis-ms/redis-7023/

# 调整配置如下:
### 哨兵配置 ###
#master节点
port 26383

#设定matser主机的IP和端口
#后面的2,表示有两台或以上哨兵认定master挂掉了
#则可认为master挂掉,进行master的切换,这里设置三台哨兵
sentinel monitor mymaster 192.168.2.2 7021 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/local/java/redis-ms/redis-7023/sentinel_26383.log" 
#设置pid文件路径  
pidfile "/usr/local/java/redis-ms/redis-7023/sentinel_26383.pid"
#工作路径,不用改  
dir /tmp

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

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 ..

 启动redis服务及哨兵

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

5.测试redis服务

## 查看master节点服务, 7021节点为主节点
[root@localhost src]# ./redis-cli -h 192.168.2.2 -p 7021
192.168.2.2:7021> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.2.2,port=7022,state=online,offset=26495,lag=1
slave1:ip=192.168.2.2,port=7023,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
192.168.2.2:7021> exit



## 查看slave节点服务,7022节点为从节点
[root@localhost src]# ./redis-cli -h 192.168.2.2 -p 7022
192.168.2.2:7022> info replication
# Replication
role:slave
master_host:192.168.2.2
master_port:7021
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
192.168.2.2:7022> exit

## 查看slave节点服务,7023节点为从节点
[root@localhost src]# ./redis-cli -h 192.168.2.2 -p 7023
192.168.2.2:7023> info replication
# Replication
role:slave
master_host:192.168.2.2
master_port:7021
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
192.168.2.2:7023> exit

6.查看sentinel的状态

## 查看哨兵节点:26381
[root@localhost src]# ./redis-cli -h 192.168.2.2 -p 26381
192.168.2.2: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=192.168.2.2:7021,slaves=2,sentinels=3
192.168.2.2:26381> exit

## 查看哨兵节点:26382
[root@localhost src]# ./redis-cli -h 192.168.2.2 -p 26382
192.168.2.2: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=192.168.2.2:7021,slaves=2,sentinels=3
192.168.2.2:26382> exit

## 查看哨兵节点:26383
[root@localhost src]# ./redis-cli -h 192.168.2.2 -p 26383
192.168.2.2:26383> 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=192.168.2.2:7021,slaves=2,sentinels=3
192.168.2.2:26383> exit

7.配置防火墙端口

[root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=7021/tcp
success
[root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=7022/tcp
success
[root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=7023/tcp
success
[root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=26381/tcp
success
[root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=26382/tcp
success
[root@localhost redis-7021]# firewall-cmd --permanent --zone=public --add-port=26383/tcp
success
[root@localhost redis-7021]# firewall-cmd --reload
success
[root@localhost redis-7021]# firewall-cmd --permanent --zone=public --list-ports
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

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

猜你喜欢

转载自blog.csdn.net/weixin_42231507/article/details/81263240