安装redis3.0+集群

  1. redis安装环境
    yum install gcc-c++
  2. 拷贝到/usr/local/src/下
    安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要连外网安装gcc,安装命令如下:
    解压:tar -zxvf redis-3.0.0.tar.gz
  3. 进入解压后的目录进行编译
    cd /usr/local/src/redis-3.0.0
    make
    4.安装到指定目录,如 /usr/local/src/redis
    cd /usr/local/src/redis-3.0.0
    make PREFIX=/usr/local/src/redis install
    5.拷贝配置文件到安装目录下
    进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径的bin目录下
    cd /usr/local/src/redis

cp /usr/local/src/redis-3.0.0/redis.conf /usr/local/src/redis/bin
1)前端启动(不推荐)
直接运行bin/redis-server将以前端模式启动,切换到bin目录下,执行以下命令: ./redis-server 即可以前端模式启动redis;
前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。
2)后端模式启动(推荐)
修改redis.conf配置文件, daemonize yes 以后端模式启动。
cd /usr/local/src/redis/bin
./redis-server ./redis.conf
执行如下命令启动redis:
redis默认使用6379端口。
ps -ef | grep redis : 查看服务有没有开启或
ss -lnp| grep 6379 : 查看有无端口被服务使用
./redis-cli shutdown
停止:强行终止Redis进程可能会导致redis持久化数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:
6.启动
yum -y install gcc
1.CentOS5.7默认没有安装gcc,这会导致我们无法make成功。使用yum安装:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error “Newer version of jemalloc required”
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src’
make: *** [all] Error 2
2.make时报如下错误:
make MALLOC=libc
原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数。
3.make之后,会出现一句提示
Hint: To run ‘make test’ is a good idea 😉
但是不测试,通常是可以使用的。若我们运行make test ,会有如下提示
[devnote@devnote src]$ make test
You need tcl 8.5 or newer in order to run the Redis test
make: ***[test] Error_1
yum install tcl
解决办法是用yum安装tcl8.5(或去tcl的官方网站http://www.tcl.tk/下载8.5版本,并参考官网介绍进行安装)
7.安装过程可能出现的问题:
一主二从三哨兵集群搭建
环境:Centos7.2(3台虚拟机)+redis3.0
redis搭建可参考其上文章
内网IP:192.168.146.153、192.168.146.154、192.168.146.155
#支持内网/本地访问,比如 bind 192.168.146.153 127.0.0.1
bind 本机内网IP 127.0.0.1
#如下图:
在每个redis.conf里进行修改
1.通用配置
安装redis3.0+集群
2019年10月5日 17:10
分区 Centos-7 的第 1 页
#支持后台运行,默认值为no
daemonize yes
#日志文件,比如redis.log、sentinel.log
logfile xxx.log
#指定master
slaveof 192.168.146.153 6379
slave配置(在2个slave的redis.conf下指定master) #后台启动开启
daemonize yes
#set log 指定日志存储位置
logfile “/usr/local/src/redis-3.0/bin/sentinel.log”
#指定监控的master,最后一位表示quorum(法人数量),即认定master’客观下线’成立的最低票数
sentinel monitor mymaster 192.168.146.153 6379 2
配置如下图:
注:按其上写前三个配置行即可,port 26379端口后的配置会在启动后自动生成,俺在redis自带的sentinel.conf配置文件中修改添加均启动不了哨兵,无奈,手写了配置文件(放在bin目录下)
sentinel配置(在3个sentinel.conf下指定监控的master)
分别启动主从redis, 验证没问题,再分别启动哨兵,假设已进入redis/bin目录
./redis-server ./redis.conf
tail -100f redis.log
./redis-cli
运行redis
info replication
下图是master的信息
下面是其中一个slave的信息
查看主从信息(连接成功后)
在master上写入变量,在slave上查看是否同步
测试主从同步
./redis-sentinel ./sentinel.conf
运行哨兵
ps -ef | grep redis
查询后可得知已成功启动,如下图所示:
./redis-cli -h 192.168.146.153 -p 26379 info sentinel
在master、slave服务器上都可以查看哨兵相关信息(node1为master节点)
2.主从/哨兵运行
分区 Centos-7 的第 2 页
./redis-cli -h 192.168.146.153 -p 26379 info sentinel
模拟发生故障, 进入master主机172.31.175.142, kill掉redis-server进程.接下来, 查看各个哨兵的日志, 大抵可以看出哨兵的工作过程, 如下

  1. 主观下线(sdown)
    当某个哨兵心跳检测master超时后,则认定其sdown
    +sdown master mymaster 192.168.146.153 6379
  2. 客观下线(odown)
    当认定sdown的哨兵数>=quorum时,则master下线事实最终成立,即odown
    +odown master mymaster 192.168.146.153 6379 #quorum 2/2
  3. 选举哨兵leader
    各哨兵协商,选举出一个leader,由其进行故障转移操作
    +vote-for-leader 6198a2cb8afa9a57f33bcbdd8c5fdca7b486d84f 1
  4. 故障转移
    选择一个slave作为新的master, 并将其他节点设置为新master的slave (刚才已下线的老master的配置文件也会被设置slaveof…)
    +switch-master mymaster 192.168.146.153 6379 192.168.146.155 6379
    当故障转移成功后, redis就是一主一从,
    主机 角色
    192.168.146.153 哨兵、master
    192.168.146.154 哨兵、slave
    192.168.146.155 哨兵、slave -> master
    查看日志如下图所示:
    3.故障转移
    进入新的master192.168.146.155,查看redis主从信息,还剩一从
    故障恢复
    模拟故障恢复,进入老的master192.168.146.153,重启刚才搞掉的redis,之后查看其主从信息,发
    现老的master已经变成slave了,如下
    分区 Centos-7 的第 3 页
    因为192.168.146.153的redis.conf在故障转移时被修改了,所以重启之后就直接成了slave
    进入新的master192.168.146.155下,再去查看最新的主从信息,发现加入了新的slave,如下
    故障恢复之后,redis恢复到了一主二从三哨兵,只不过master/slave换了地方
    //若想要调整master/slave,则需要手动操作,所以为了方便起见,建议在故障转移之前备份配置文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章