centos7 redis主从部署-Sentinel(哨兵模式)
本文使用一台服务器和多个端口实现 ,本机ip : 192.168.3.10
如果使用多台服务器则需要防火墙开放对应的端口(防火墙设置如果报错根据错误百度自行解决)
[root@localhost /]# firewall-cmd --state // 查看firewall防火墙情况
[root@localhost /]# service firewalld start // 开启firewall防火墙
[root@localhost /]# firewall-cmd --add-port=6379/tcp //添加端口重启后需重启添加
[root@localhost /]# firewall-cmd --permanent --add-port=6379/tcp //添加端口重启 permanent参数表示永久有效
[root@localhost /]# firewall-cmd --remove-port=6379/tcp //删除端口
[root@localhost /]# firewall-cmd --query-port=6379/tcp //查看端口
[root@localhost /]# firewall-cmd --list-all //查看所有firewall端口
[root@localhost /]# firewall-cmd --reload //重启防火墙
1、安装redis
[root@localhost updown]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz //下载
[root@localhost updown]# tar zxvf redis-5.0.5.tar.gz //解压
[root@localhost updown]# cd redis-5.0.5
[root@localhost redis-5.0.5]# make //编译
[root@localhost redis-5.0.5]# make install PREFIX=/usr/local/redis //安装到/usr/local/redis
[root@localhost redis-5.0.5]# mkdir /usr/local/redis/bin/conf //在安装目录中创建配置文件目录
[root@localhost redis-5.0.5]# cp redis.conf /usr/local/redis/bin/conf/ //主服务配置文件默认端口6379
[root@localhost redis-5.0.5]# cp redis.conf /usr/local/redis/bin/conf/redis-6380.conf //从服务配置文件端口6380
[root@localhost redis-5.0.5]# cp redis.conf /usr/local/redis/bin/conf/redis-6381.conf //从服务配置文件端口6381
[root@localhost redis-5.0.5]# cp redis.conf /usr/local/redis/bin/conf/redis-6382.conf //从服务配置文件端口6382
2、修改主配置文件
[root@localhost redis-5.0.5]# vim /usr/local/redis/bin/conf/redis.conf
1) 找到bind 127.0.0.1 修改成 bind 0.0.0.0 //都可以访问
2)找到 protected-mode yes 修改成 protected-mode no //关闭保护模式
3) 找到daemonize no 修改成 daemonize yes //守护线程yes redis会在后台运行, no 进入redis的命令行界面
3、修改从配置文件
[root@localhost redis-5.0.5]# vim /usr/local/redis/bin/conf/redis-6380.conf
1) 找到bind 127.0.0.1 修改成 #bind 127.0.0.1 //注销它开启远程访问
2) 找到daemonize no 修改成 daemonize yes //守护线程yes redis会在后台运行, no 进入redis的命令行界面
3) 找到 protected-mode 值设置为 no //关闭保护模式
4) 找到port //值修改端口为6380
5) 找到 pidfile //值修改为/usr/local/redis/conf/redis-6380.pid
6) 找到rdbchecksum yes 在他下面添加两行(在末尾添加就可以)
slaveof 192.168.3.10 6379 //slaveof命令可以将当前服务器转变为指定服务器的从属服务
slave-read-only yes //只读
注意:
我的redis版本不是 slaveof 而是 replicaof
下面这两行和上面的两行功能一样
replicaof 192.168.3.10 7379
replica-read-only yes //只读
7) /usr/local/redis/bin/conf/redis-6381.conf
/usr/local/redis/bin/conf/redis-6382.conf
这两个配置文件同上配置
4、启动redis 服务实例
[root@localhost redis-5.0.5]# cd /usr/local/redis/bin
[root@localhost bin]# ./redis-server conf/redis.conf //先启动主服务器
[root@localhost bin]# ./redis-server conf/redis-6380.conf //启动从服务器
[root@localhost bin]# ./redis-server conf/redis-6381.conf //启动从服务器
[root@localhost bin]# ./redis-server conf/redis-6382.conf //启动从服务器
5、查看是否启动
[root@localhost bin]# ps -ef | grep redis
root 26421 1 0 19:24 ? 00:00:11 /usr/local/redis/bin/redis-server 0.0.0.0:6379
root 23823 1 0 18:10 ? 00:00:13 ./redis-server *:6380
root 23937 1 0 18:16 ? 00:00:12 ./redis-server *:6381
root 23937 1 0 18:16 ? 00:00:12 ./redis-server *:6382
6、验证主从
[root@localhost bin]# ./redis-cli //默认 6379 主服务
127.0.0.1:6379> info
# Replication
role:master
connected_slaves:3
slave0:ip=192.168.3.10,port=6380,state=online,offset=210,lag=1
slave1:ip=192.168.3.10,port=6381,state=online,offset=224,lag=1
slave2:ip=192.168.3.10,port=6382,state=online,offset=224,lag=1
master_replid:33763613f871403444b07f81f77ac48783009ff0
127.0.0.1:6379> set name fuj
[root@localhost bin]# ./redis-cli -p 6380 //6380 从服务
127.0.0.1:6380> get name
"fuj"
这中主从模式一旦主服务挂掉整个redis服务将不可用。它不能实现从节点自动升级成主服务,为了实现从节点自动升级成主服务,这里将使用哨兵模式。下面为基于主从哨兵模式配置
1、在上面的redis解压文件夹复制哨兵配置文件到安装目录配置目录中(我这里同样放在/usr/local/redis/bin/conf中)
[root@localhost redis-5.0.5]# cp sentinel.conf /usr/local/redis/bin/conf/ //主服务器
[root@localhost redis-5.0.5]# cp sentinel.conf /usr/local/redis/bin/conf/sentinel-6380.conf
[root@localhost redis-5.0.5]# cp sentinel.conf /usr/local/redis/bin/conf/sentinel-6381.conf
[root@localhost redis-5.0.5]# cp sentinel.conf /usr/local/redis/bin/conf/sentinel-6382.conf
2、修sentinel.conf 文件
[root@localhost bin]# vim conf/sentinel.conf
1)找到port 26379 修改成对应的端口
2)找到daemonize no 修改成 daemonize yes
3)找到sentinel monitor mymaster 127.0.0.1 6379 2修改成sentinel monitor r1 192.168.3.10 6379 1
r1 监控名称可以自定义(配置文件里所有mymaster修改成此处设置的监控名称)
192.168.3.10 哨兵监控的ip 主ip
6379 端口
1 选举次数
4)修改 sentinel-6380.conf sentinel-6381.conf sentinel-6382.conf
找到port 26379 修改成对应的端口26380 26381 26382
找到daemonize no 修改成 daemonize yes
找到sentinel monitor mymaster 127.0.0.1 6379 2修改成sentinel monitor r1 192.168.3.10 6379 1
r1 监控名称可以自定义(配置文件里所有mymaster修改成此处设置的监控名称)
192.168.3.10 哨兵监控的ip
6379 端口
1 选举次数
3、开启哨兵
[root@localhost bin]# ./redis-sentinel conf/sentinel.conf
[root@localhost bin]# ./redis-sentinel conf/sentinel-26380.conf
[root@localhost bin]# ./redis-sentinel conf/sentinel-26381.conf
[root@localhost bin]# ./redis-sentinel conf/sentinel-26382.conf
4、验证
[root@localhost bin]# ./redis-cli -p 26380
127.0.0.1:26380>info
[root@localhost bin]# ./redis-cli -p 6379 shutdown //关掉主等一会儿
[root@localhost bin]# ./redis-cli -p 26380
127.0.0.1:26380>info
此时主已经自动切换
[root@localhost bin]# ./redis-cli -p 6382 //进入主服务
127.0.0.1:6382>info
此时只有只有两个从服务了
此时主已经自动切换
[root@localhost bin]# ./redis-server conf/redis-6379.conf //打开关闭的6379服务
[root@localhost bin]# ./redis-cli -p 6382 //进入主服务
127.0.0.1:6382>info
此时从服务恢复到3个 6379服务变成了6382的从服务了
以上配置没有密码设置。这里只做配置,没有对原理做讲解,如果需要知道原理请自行百度!