Redis3.2.11主从集群模式

本文一切安装、测试、开发均以上一稳定版本3.2.11为准,不建议采用Windows版本,因为Redis官方没有任何声明支持Windows版本,市面上的Windows版本为微软XX开源小组维护。

单机安装

安装

安装环境:CentOS 6.5 x86_64版本,理论上CentOS6.x/RHEL 6.x的安装方式一样。但极可能不适用于CentOS 7.x/RHEL 7.x版本。

执行命令如下
tar -zxvf redis-3.2.11.tar.gz
cd redis-3.2.11
make
#下面这一句最好执行,意思是测试,验证环境是否正确
make test
执行命令完成之后,会在src目录下生产redis-server 和redis-cli文件.
注意:如果执行命令期间出现错误(请见下文常见错误),请修复错误之后,删除redis-3.2.11目录,重新解压安装包,重新执行上述步骤。

基础配置

配置文件目录默认为 Redis解压目录/redis.conf。如 redis-3.2.11/redis.conf (注意没有目录src)。
请使用FTP将上述文件下载到本地,然后用记事本或EditPlus打开,
修改以下两行(修改之前注意备份)
#前面增加#,即将此行注释掉
bind 127.0.0.1   
去掉前面的# ,修改为requirepass solution(设置redis连接密码)
#requirepass foobared   
#修改为 daemonize yes   以使redis在后台以守护进程的方式运行
daemonize no 
#在“”中填入日志文件路径,如 
#logfile “/home/peter/redis/redis-3.2.11/log/redis.log” 注意保证路径存在
logfile ""   
修改保存后,通过FTP上传覆盖掉原有文件。

启动

#启动redis-server
cd src
./redis-server ../redis.conf
#启动客户端工具 ,可以重新打开一个terminal窗口
#cd 到 redis-3.2.11/src 目录下
./redis-cli
SET name redis-server
GET name

启动结果校验
tail -f log/redis.log
可以看到启动日志

停止

在启动命令窗口 ctrl + c  或者直接杀掉进程,如下
ps -aux|grep redis
#通过上述命令查看进程ID
kill -9 进程ID

常见错误

1.make[2]: cc: Command not found  或者 gcc: Command not found
异常原因:没有安装gcc
解决方案:yum install gcc

2.  couldn't execute "tclsh8.5": no such file or directory
异常原因:没有安装tcl
解决方案:yum install tcl。

3.
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命令 替换为 make MALLOC=libc 

启动报警的解决

启动Redis常见一些警告信息,这些警告的解决办法请参考如下链接
http://blog.csdn.net/a491857321/article/details/52006376
笔者Redis的实际项目经验也不丰富,这些警告的严重后果不得而知,建议按照上文连接修改。有经验的朋友欢迎指教。


主从集群模式

三台虚拟机,IP分别为192.168.137.200 ~ 202
其中200规划为Master,其余两个为Slave
三台虚拟机均作为Redis Sentinel的节点,即整体结构如下:
 

Redis Server配置和启动

Redis-3.2.11/redis.conf文件,在基础配置之上,增加如下配置:
masterauth
#设置Master访问密码,因为failover之后,Master也会作为Slave,所以Master\Slave均需配置此项
masterauth solution   
slaveof
#在两个Slave的redis.conf中,配置Slave项
slaveof 192.168.137.200 6379

按照启动中的说明,依次启动Master、Slave节点。注意必须先启动Master节点。Slave节点彼此之间无顺序要求。

Redis Sentinel配置

在Master/slave01/slave02三台机器上,均修改如下文件
安装路径/Redis-3.2.11/sentinel.conf.

Monitor配置

查找配置项 
sentinel monitor mymaster 127.0.0.1 6379 2
修改为(仅变化IP,注意mymaster不需要变,一旦修改,需要同时修改若干关联配置)
sentinel monitor mymaster 192.168.137.200 6379 2

配置说明如下
https://redis.io/topics/sentinel   (Configuring Sentinel)
Master密码配置
# sentinel auth-pass <master-name> <password>
取消注释#,修改为(配置Master访问密码)
sentinel auth-pass mymaster solution
关闭保护模式(默认本地才能访问,不关闭则多台机器之间Sentinel无法通信,无法选举,无法发生failover)
protected-mode no
日志和守护进程
增加如下配置项,意思等同于Redis-Server的配置,不做赘述
daemonize yes
logfile "/usr/local/redis-3.2.11/log/sentinel.log"
其余配置项采用默认配置即可。

然后在三台机器上(不分先后顺序),分别执行以下命令以启动哨兵进程

# cd 到redis安装目录
#启动哨兵进程
src/redis-sentinel sentinel.conf
#查看启动日志
tail -f log/sentinel.log

主备集群搭建完毕!

验证

1. 停掉master节点,可直接杀掉进程 kill -9 xxxx
2. 查看任意Sentinel的日志  tail -f log/sentinel.log ,里面会有+sdown/+odown/failover信息
3. 查看原slave01/slave02的节点信息  src/redis-cli info, 找到Replication段落,查看Role属性,是否其中一台变成了Master
4. 重新启动原master节点, src/redis-server redis.conf
5. 查看任意Sentinel的日志,tail -f log/sentinel.log
6. 查看刚启动的原master节点信息,src/redis-cli info, 找到Replication段落,查看Role属性,值应该为Slave

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章