https://redis.io/或者https://redis.io/download
提示找不到cc命令,执行yum -y install gcc gcc-c++ libstdc++-devel安装gcc环境
这是因为安装gcc之前执行make编译时有残留的文件,此时应该先清理残留文件,再进行编译:make distclean && make
自redis 6.0.0之后,编译redis需要支持C11特性
Centos7默认gcc版本为4.8.5,C11 特性在4.9中引入
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
升级并使用gcc高版本之后,再次执行make distclean && make,发现成功了。
单节点的redis就安装完成了,启动前备份一下安装好的redis,方便后面集群使用
修改daemonize yes(daemonize:守护进程)
正常关闭redis服务:redis-cli shutdown
如果端口不是默认的6379:redis-cli -p 8080 shutdown
把redis.conf拷贝到集群(这里先做主从复制)用的redis的bin目录下
把现有的redis改名为redis01,然后复制出redis02和redis03
首先停掉所有服务,然后修改7002和7003的redis.conf配置文件
#配置master的地址和端口 slaveof 192.168.1.6 7001
依次启动三个redis服务,然后使用info replication查看信息,发现有问题,
这里是因为master中配置文件的bind是127.0.0.1,需要改成bind 0.0.0.0或者直接注释掉,这里我将master中的bind属性直接注释掉。然后重新启动三台redis服务,发现状态正确了,数据也同步到了从服务器上。这里不仅需要改master的bind,slave的也需要改,因为一般用了主从复制都会用到哨兵模式,哨兵模式的话,在master挂掉的时候,其中一个slave会成为master。
redis默认日志是控制台打印,因为上面的操作修改为后台启动,所以看不到日志,这个时候最好设置redis的日志输出到文件,这样方便出问题的时候看日志。进入redis.conf文件,设置logfile "path"。
主从服务器都创建sentinel.conf文件,里面的内容只有端口不一样。具体内容:
#entinel端口 port 17001 #工作路径,注意路径不要和主重复 dir "/tmp" # 守护进程模式 daemonize yes #关闭保护模式 protected-mode no # 指明日志文件名 logfile "../logs/redis-sentinel.log" #哨兵监控的master,主从配置一样 # sentinel monitor <master-name> <ip> <redis-port> <quorum> sentinel monitor mymaster 192.168.1.6 7001 1 #设置master和slaves验证密码(如果redis没设置密码,则不用设置) #sentinel auth-pass mymaster 123 #指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步 sentinel down-after-milliseconds mymaster 5000