Press "Enter" to skip to content

基于Sentinel实现Redis高可用集群

环境准备:三台主机192.168.1.2/192.168.1.3/192.168.1.4,均为Redhat 6
其中这三台都安装Sentinel服务,192.168.1.2为redis主,192.168.1.3/192.168.1.4为redis从

Redis安装(三台都要):
cd /home/app
wget http://download.redis.io/releases/redis-3.2.5.tar.gz
tar -zxvf redis-3.2.5.tar.gz
mv redis-3.2.5 redis
cd redis
make

修改redis主192.168.1.2的配置文件:
vi /home/app/redis/config/redis_master.conf,主要修改如下地方:
daemonize yes //守护进程模式
pidfile "/home/app/redis_master.pid"
port 6379
logfile "/var/log/redis/redis_master.log"
dbfilename "dump_master.rdb"
dir "/home/app/redis/data"
requirepass 123456
masterauth 123456
启动master:
cp /home/app/redis/config/redis_master.conf /home/app/redis/config/redis_master.conf.bak //将配置文件先备份一份
nohup /home/app/redis/bin/redis-server /home/app/redis/config/redis_master.conf &
使用客户端连接测试
/home/app/redis/bin/redis-cli -a 123456 -p 6379
127.0.0.1:6379[1]> set name test
OK
127.0.0.1:6379[1]> get name
"test"
127.0.0.1:6379[1]> quit
可以看到,redis启动成功并且可以开始读写数据。

修改redis从192.168.1.3的配置文件(slave的配置和master基本一致):
vi /home/app/redis/config/redis_slave.conf,主要修改如下地方:
daemonize yes //守护进程模式
pidfile "/home/app/redis_slave.pid"
port 6379
logfile "/var/log/redis/redis_slave.log"
dbfilename "dump_slave.rdb"
dir "/home/app/redis/data"
requirepass 123456
masterauth 123456
slaveof 192.168.1.2 6379 //设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步,和主配置文件相比,就新增了这一行
启动slave并查看数据同步情况:
cp /home/app/redis/config/redis_slave.conf /home/app/redis/config/redis_slave.conf.bak //将配置文件先备份一份
nohup /home/app/redis/bin/redis-server /home/app/redis/config/redis_slave.conf &
使用客户端连接测试
/home/app/redis/bin/redis-cli -a 123456 -p 6379
127.0.0.1:6379[1]> get name
"test"
127.0.0.1:6379[1]> quit
可以看到,master中设置的key-value已经成功同步过来。

修改redis从192.168.1.4的配置文件(slave的配置和master基本一致):
vi /home/app/redis/config/redis_slave.conf,主要修改如下地方:
daemonize yes //守护进程模式
pidfile "/home/app/redis_slave.pid"
port 6379
logfile "/var/log/redis/redis_slave.log"
dbfilename "dump_slave.rdb"
dir "/home/app/redis/data"
requirepass 123456
masterauth 123456
slaveof 192.168.1.2 6379 //设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步,和主配置文件相比,就新增了这一行
启动slave并查看数据同步情况:
cp /home/app/redis/config/redis_slave.conf /home/app/redis/config/redis_slave.conf.bak //将配置文件先备份一份
nohup /home/app/redis/bin/redis-server /home/app/redis/config/redis_slave.conf &
使用客户端连接测试
/home/app/redis/bin/redis-cli -a 123456 -p 6379
127.0.0.1:6379[1]> get name
"test"
127.0.0.1:6379[1]> quit
可以看到,master中设置的key-value已经成功同步过来。

哨兵Sentinel安装(三台都要):
哨兵的作用
1.监控:监控主从是否正常
2.通知:出现问题时,可以通知相关人员
3.故障迁移:自动主从切换

哨兵一(192.168.1.2)配置sentinel.conf
vi /home/app/redis/config/sentinel.conf
port 26379
sentinel monitor master1 192.168.1.2 6379 2 //表示在sentinel集群中只要有两个节点检测到redis主节点出故障就进行切换
sentinel down-after-milliseconds mymaster 3000 //如果3s内mymaster无响应,则认为mymaster宕机了
sentinel failover-timeout mymaster 10000 //如果10秒后,mysater仍没活过来,则启动failover
daemonize yes
dir "/home/redis/sentinel-work"
protected-mode no
logfile "/home/redis/sentinellog/sentinel.log"
sentinel auth-pass mymaster 123456

192.168.1.3/192.168.1.4的sentinel.conf配置同192.168.1.2

三台分别启动sentinel(三台启动的命令相同):
cp /home/app/redis/config/sentinel.conf /home/app/redis/config/sentinel.conf.bak //将配置文件先备份一份
nohup /home/app/redis/bin/redis-server /home/app/redis/config/sentinel.conf --sentinel &

至此,环境搭建完成。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注