1.去官网下载Redis安装包,这里我使用的版本是redis-5.0.14.tar.gz
类型 | 节点1(主) | 节点2(从) | 节点3(从) |
reids | 198.98.31.1: 6379 | 198.98.31.2: 6379 | 198.98.31.3: 6379 |
sentinel | 198.98.31.1: 26379 | 198.98.31.2: 26379 | 198.98.31.3: 26379 |
2.执行步骤
- 上传reids安装包到服务器/home/laoA目录下-----注意:laoA是自己创建的文件夹,根据自己的需求安装部署到相应的文件夹,还有laoA还是用户名
- 使用laoA用户登录解压安装包
cd /home/laoA
tar -zxvf redis-5.0.14.tar.gz
- 指定安装路径并编译
cd redis-5.0.14
make
没报错,跳过安装gcc的步骤,继续执行下面的安装步骤11111
如果报错提示未找到gcc,则要先安装gcc再编译
下载gcc-4.8.6安装包
创建安装gcc目录
mkdir /usr/local/gcc
假如提示没权限的话就切root用户
su root
创建安装gcc目录
mkdir /usr/local/gcc
再切回laoA用户
su laoA
上传gcc-4.8.6安装包至/usr/local/gcc目录
切换到安装gcc目录
cd /usr/local/gcc
解压gcc安装包
tar -zxvf gcc.jar
进入解压后的gcc目录
cd gcc
执行安装命令
rpm -Uvh *.rpm --nodes --force
提示没权限的话切root目录
su root
继续执行
rpm -Uvh *.rpm --nodes –force
安装成功后,使用gcc -v命令查看
继续执行make,如果报错,就把解压出来的文件夹删了重新解压
cd ..
rm -rf redis-5.0.14
tar -zxvf redis-5.0.1.4.tar.gz
- 执行安装11111
cd src && make PREFIX=/home/laoA/redis install
- 创建相关目录
cd /home/laoA/redis
mkdir {conf,db,logs,temp}
- 复制配置文件
cd conf/
cp /home/laoA/redis-5.0.14/redis.conf .
cp /home/laoA/redis-5.0.14/sentinel.conf .
- 修改配置
节点1的reids.conf文件,确保如下配置的值,IP请根据实际替换。
bind 198.98.31.1
daemonize yes
pidfile "/home/laoA/redis/redis_6379.pid"
logfile "/home/laoA/redis/logs/redis_6379.log"
dir "/home/laoA/redis/db"
masterauth passw0rd@laoA
requirepass passw0rd@laoA
配置完上面后,再检查一下此redis.conf文件有没有replica-read-only yes 这一句,没有的话就不用管它,有的话就需要把replica-read-only yes这一句改成replica-read-only no,否则待会测试三台redis有没有打通设置值set test_id abcd EX 300的时候会有如下报错
节点1 的sentinel.conf文件内容如下,IP请根据实际替换
protected-mode no
port 26379
pidfile "/home/laoA/redis/redis_26379.pid"
dir "/home/laoA/redis/temp"
logfile "/home/laoA/redis/logs/redis_26379.log"
sentinel monitor eidmaster 198.98.31.1 6379 2
sentinel down-after-milliseconds eidmaster 10000
sentinel failover-timeout eidmaster 60000
sentinel auth-pass eidmaster passw0rd@eid
sentinel parallel-syncs eidmaster 1
节点2的reids.conf文件,确保如下配置的值,IP请根据实际替换。
bind 198.98.31.2
daemonize yes
pidfile "/home/laoA/redis/redis_6379.pid"
logfile "/home/laoA/redis/logs/redis_6379.log"
dir "/home/laoA/redis/db"
masterauth passw0rd@laoA
requirepass passw0rd@laoA
slaveof 198.98.31.1 6379
slave-priority 90
配置完上面后,再检查一下此redis.conf文件有没有replica-read-only yes 这一句,没有的话就不用管它,有的话就需要把replica-read-only yes这一句改成replica-read-only no,否则待会测试三台redis有没有打通设置值set test_id abcd EX 300的时候会有如下报错
节点2 的sentinel.conf文件内容如下,IP请根据实际替换
protected-mode no
port 26379
pidfile "/home/laoA/redis/redis_26379.pid"
dir "/home/laoA/redis/temp"
logfile "/home/laoA/redis/logs/redis_26379.log"
sentinel monitor eidmaster 198.98.31.1 6379 2
sentinel down-after-milliseconds eidmaster 10000
sentinel failover-timeout eidmaster 60000
sentinel auth-pass eidmaster passw0rd@eid
sentinel parallel-syncs eidmaster 1
节点3的reids.conf文件,确保如下配置的值,IP请根据实际替换。
bind 198.98.31.3
daemonize yes
pidfile "/home/laoA/redis/redis_6379.pid"
logfile "/home/laoA/redis/logs/redis_6379.log"
dir "/home/laoA/redis/db"
masterauth passw0rd@eid
requirepass passw0rd@eid
slaveof 198.98.31.1 6379
slave-priority 90
配置完上面后,再检查一下此redis.conf文件有没有replica-read-only yes 这一句,没有的话就不用管它,有的话就需要把replica-read-only yes这一句改成replica-read-only no,否则待会测试三台redis有没有打通设置值set test_id abcd EX 300的时候会有如下报错
节点3 的sentinel.conf文件内容如下,IP请根据实际替换
protected-mode no
port 26379
pidfile "/home/laoA/redis/redis_26379.pid"
dir "/home/laoA/redis/temp"
logfile "/home/laoA/redis/logs/redis_26379.log"
sentinel monitor eidmaster 198.98.31.1 6379 2
sentinel down-after-milliseconds eidmaster 10000
sentinel failover-timeout eidmaster 60000
sentinel auth-pass eidmaster passw0rd@laoA
sentinel parallel-syncs eidmaster 1
- 切换到laoA用户,依次启动redis节点1、节点2、节点3
su – laoA
cd /home/laoA/redis/bin
./redis-server ../conf/redis.conf
- 依次启动哨兵节点1、节点2、节点3
cd /home/laoA/redis/bin
./redis-sentinel ../conf/sentinel.conf &
验证
- 连接主redis
./redis-cli -h 198.98.31.1 -p 6379
auth "passw0rd@laoA
- 设置测试值----设置abcd值,有效时间为60秒,为了测试从节点有没有跟主节点打通
set test_id abcd EX 60
- 连接从reids---到各自的服务器连接从redis
./redis-cli -h 198.98.31.2 -p 6379
auth "passw0rd@laoA
get test_id
./redis-cli -h 198.98.31.3 -p 6379
auth "passw0rd@laoA
get test_id
执行完命令后看看能不能获取到刚刚在主节点中设置的值abcd,看到了证明哨兵配置成功。假如出现nil或其他的错误,说明未配置成功,此时回去检查刚刚配置的所有节点的redis.conf和sentinel.conf,修改配置文件之前,先把刚刚启动的所有redis节点和sentinel节点先停掉,否则你会发现修改的配置文件不生效。
先停掉redis服务查看redis是否在运行
ps aux | grep redis
然后使用终极武器
kill -9 端口
然后再修改配置文件才会生效
修改完后继续重复一遍上述步骤依次启动redis节点1、节点2、节点3,依次启动哨兵节点1、节点2、节点3,连接主redis,设置测试值----设置abcd值,有效时间为60秒,为了测试从节点有没有跟主节点打通,连接从reids---到各自的服务器连接从redis,能拿到另一台服务器设置的值abcd表示哨兵搭建成功!