IP | 服务 | 用途 |
10.0.10.45 | redis sentinel zookeeper uniquecode | 主redis |
10.0.10.43 | redis sentinel zookeeper uniquecode | 从reids-1 |
10.0.10.44 | redis sentinel zookeeper uniquecode | 从redis-2 |
redis主从哨兵分为两部分,redis主从和redis哨兵
redis主从主要负责提供redis服务
redis哨兵主要用来监控redis服务状态,并进行切换主从
当3个哨兵中有2个检测到任意一个redis服务故障后就从另外2个redis服务中选举出1个作为主服务
,安装依赖包
为了避免编译报错,先安装依赖包
yum -y install gcc gcc-c++ libstdc++-devel
1,上传并解压redis程序包
cd /data/tool
tar zxvf Linux-redis-4.0.11.tar.gz ##解压redis安装包
mv redis-4.0.11 /data/FinanceBox/ ##将redis解压的包移动到Finance下面
2,编译安装
cd /data/FinanceBox/redis-4.0.11
编译
make MALLOC=libc
如上图显示编译成功
3,创建运行目录调整配置
创建运行目录
mkdir -p /data/FinanceBox/redis-4.0.11/etc
mkdir -p /data/FinanceBox/redis-4.0.11/bin
复制配置文件
cp /data/FinanceBox/redis-4.0.11/redis.conf /data/FinanceBox/redis-4.0.11/etc/
cp /data/FinanceBox/redis-4.0.11/sentinel.conf /data/FinanceBox/redis-4.0.11/etc/
复制运行文件
cd /data/FinanceBox/redis-4.0.11/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /data/FinanceBox/redis-4.0.11/bin
修改配置文件,配置文件分为redis服务文件和哨兵服务文件
先修改redis服务文件
vim /data/FinanceBox/redis-4.0.11/etc/redis.conf
3台机器的redis.conf通用配置,主要关注点有以下几个:
修改前 | 修改后 |
bind 127.0.0.1 | bind 0.0.0.0 |
port 6379 | port 8300 |
pidfile /var/run/redis_6379.pid | pidfile /data/FinanceBox/redis-4.0.11/etc/redis_8300.pid |
logfile "" | logfile /data/FinanceBox/redis-4.0.11/etc/redis.log |
dir ./ | dir /data/FinanceBox/redis-4.0.11/etc |
# masterauth <master-password> | masterauth fingard |
# requirepass foobared | requirepass fingard |
client-output-buffer-limit slave 256mb 64mb 60 | client-output-buffer-limit slave 0 0 0 |
2台从redis.conf文件增加以下配置
slaveof 10.0.10.45 8300 ##主redis服务的ip和端口
4,启动redis服务,测试主从同步
启动顺序,先主后从
关闭顺序,先从后主
##进入服务启动目录
cd /data/FinanceBox/redis-4.0.11/bin
##后台运行启动命令
nohup ./redis-server /data/FinanceBox/redis-4.0.11/etc/redis.conf &
登陆redis测试数据同步
在主redis服务上操作
cd /data/FinanceBox/redis-4.0.11/bin
./redis-cli -h 127.0.0.1 -p 8300
auth fingard ##fingard是redis访问密码
set sic 123456 ##设置一个key和value
get sic ##获取key为sic的value
在2个从redis上登陆并获取下key看看
cd /data/FinanceBox/redis-4.0.11/bin
./redis-cli -h 127.0.0.1 -p 8300
auth fingard
get sic
两台机器均能获取到key,说明同步成功
状态查看
在主redis上执行
info replication ##获取主从信息
从下图可以看到,此台机器的redis服务角色是 master,两个slave的ip如下
5,哨兵配置
vim /data/FinanceBox/redis-4.0.11/etc/sentinel.conf
3台机器的sentinel.conf通用配置,主要关注点有以下几个:
修改前 | 修改后 |
# bind 127.0.0.1 192.168.1.1 | bind 0.0.0.0 |
# protected-mode no | protected-mode no |
port 26379 | port 28300 |
dir /tmp | dir /data/FinanceBox/redis-4.0.11/etc |
新增 | logfile /data/FinanceBox/redis-4.0.11/etc/sentinel.log |
sentinel monitor mymaster 127.0.0.1 6379 2 | sentinel monitor mymaster 10.0.10.45 8300 2 |
# sentinel auth-pass <master-name> <password> | sentinel auth-pass mymaster fingard |
sentinel down-after-milliseconds mymaster 30000 | sentinel down-after-milliseconds mymaster 3000 |
新增 | daemonize no |
6,哨兵启动
启动顺序,先主后从
关闭顺序,先从后主
cd /data/FinanceBox/redis-4.0.11/bin
nohup ./redis-sentinel /data/FinanceBox/redis-4.0.11/etc/sentinel.conf >setinel.out &
7,查看哨兵状态
3台机器上执行操作显示结果是一样的
cd /data/FinanceBox/redis-4.0.11/bin
./redis-cli -p 28300 info sentinel