系统安装好 gcc 环境,(不然编译 Redis 会报错). 依旧不知道怎么离线安装 gcc 环境的可查看 CentOS 下离线安装 gcc 环境, 图文详细 https://blog.51cto.com/14089205/2485301
下载
点击官网地址下载 Linux 版的 Redis
上传
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 命令行页面就会退出.
来源: http://www.bubuko.com/infodetail-3496875.html