三台服务器上离线安装redis哨兵集群,一主二从三哨兵
系统安装好gcc环境,(不然编译redis会报错)。依旧不知道怎么离线安装gcc环境的可查看CentOS下离线安装gcc环境,图文详细
下载
点击官网地址下载Linux版的redis
http://download.redis.io/releases/redis-5.0.4.tar.gz
上传
put D:AppStore
edis
edis-5.0.4.tar.gz /root
安装
tar xzf redis-5.0.4.tar.gz
mv redis-5.0.4 /usr/local/redis
cd /usr/local/redis/redis-5.0.4
make
make install
如果执行make报错如下
致命错误:jemalloc/jemalloc.h:没有那个文件或目录
则使用
make MALLOC=libc
节点配置
现有三台虚拟机,那就按照一主二从来弄吧。进入redis.conf更改如下
192.168.1.115(主节点)
bind 192.168.1.115
daemonize yes
masterauth 666666
requirepass 666666
pidfile /st/redis/pid/redis_6379.pid
logfile "/st/redis/log/redis.log"
dir /st/redis/db/
192.168.1.113(从节点1)
bind 192.168.1.113
daemonize yes
masterauth 666666
requirepass 666666
replicaof 192.168.1.115 6379
pidfile /st/redis/pid/redis_6379.pid
logfile "/st/redis/log/redis.log"
dir /st/redis/db/
192.168.1.112(从节点2)
bind 192.168.1.112
daemonize yes
masterauth 666666
requirepass 666666
replicaof 192.168.1.115 6379
pidfile /st/redis/pid/redis_6379.pid
logfile "/st/redis/log/redis.log"
dir /st/redis/db/
哨兵配置
既然有有三台虚拟机,那就别浪费了,直接在这三台上配三个哨兵。只不过,如果挂了一台服务器,该节点会挂,该服务器上的哨兵也会挂,但是还有两个哨兵能工作,所以也能接受。不然就为哨兵单独开几个服务器。
进入sentinel.conf更改如下
192.168.1.115
daemonize yes
sentinel monitor mymaster 192.168.1.115 6379 2
sentinel auth-pass mymaster 666666
pidfile /st/redis/pid/redis-sentinel.pid
logfile "/st/redis/log/redis-sentinel.log"
dir /st/redis/tmp
192.168.1.113
daemonize yes
sentinel monitor mymaster 192.168.1.115 6379 2
sentinel auth-pass mymaster 666666
pidfile /st/redis/pid/redis-sentinel.pid
logfile "/st/redis/log/redis-sentinel.log"
dir /st/redis/tmp
192.168.1.112
daemonize yes
sentinel monitor mymaster 192.168.1.115 6379 2
sentinel auth-pass mymaster 666666
pidfile /st/redis/pid/redis-sentinel.pid
logfile "/st/redis/log/redis-sentinel.log"
dir /st/redis/tmp
启动节点
从主到次,各个节点运行,并检验
/usr/local/redis/redis-5.0.4/src/redis-server /usr/local/redis/redis-5.0.4/redis.conf
netstat -tulnp |grep redis
启动哨兵
各个哨兵运行,并检验
/usr/local/redis/redis-5.0.4/src/redis-sentinel /usr/local/redis/redis-5.0.4/sentinel.conf
ps -ef |grep redis
检查
检查主从复制,登录主节点写入信息,看看从节点有没有接收到信息
/usr/local/redis/redis-5.0.4/src/redis-cli -h 192.168.1.115
auth 666666
set name 'lgx'
登录从节点,查看能否收到信息
/usr/local/redis/redis-5.0.4/src/redis-cli -h 192.168.1.113
auth 666666
get name 'lgx'
检查哨兵监控
/usr/local/redis/redis-5.0.4/src/redis-sentinel -p 26379
sentinel master mymaster
嫌弃使用命令前一堆的目录,就注册个全局的
ln -s /usr/local/redis/redis-5.0.4/src/redis-sentinel /usr/bin/redis-sentinel
ln -s /usr/local/redis/redis-5.0.4/src/redis-server /usr/bin/redis-server
ln -s /usr/local/redis/redis-5.0.4/src/redis-cli /usr/bin/redis-cli
注意事项
上生产记得检查:防火墙,安全组,redis密码,绑定的ip,各文件的存放目录。
这是默认的目录,避免忘记配置又不知道放在哪里。
#redis节点
pidfile /var/run/redis_6379.pid
logfile ""
dbfilename dump.rdb
dir ./
#redis哨兵
pidfile /var/run/redis-sentinel.pid
logfile ""
dir /tmp
这是在防火墙中添加节点端口,哨兵端口
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --permanent --add-port=26379/tcp//添加某个端口
firewall-cmd --reload //然后,重新加载
测试报告
主节点宕机后,立马重启,主节点切换需要一段时间,大概几秒钟,这期间若操作redis,会因为连接主节点不成功而导致操作失败。
切换的时候,节点及哨兵的配置会被自动修改,如从节点的replicaof参数,哨兵的sentinel monitor mymaster参数。
宕机重启后,节点及哨兵无法自动恢复,需要手工启动。我还以为daemonize yes是开机自启动的意思,原来是可以后台运行,不然退出redis命令行页面就会退出。