三台服务器上离线安装redis哨兵集群,一主二从三哨兵
三台服务器上离线安装redis哨兵集群,一主二从三哨兵
系统安装好gcc环境,(不然编译redis会报错)。依旧不知道怎么离线安装gcc环境的可查看CentOS下离线安装gcc环境,图文详细
下载
点击官网地址下载Linux版的redis
http://download.redis.io/releases/redis-5.0.4.tar.gz
上传
put D:\AppStore\redis\redis-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命令行页面就会退出。