您的位置:首页 > 数据库 > Redis

redis安装-主从-哨兵模式

2017-09-21 17:01 573 查看

redis安装详解

下载安装包

wget http://download.redis.io/releases/redis-3.2.9.tar.gz

tar -zxvf redis-3.2.9.tar.gz

如下图



cd redis-3.2.9

执行make命令:

[wepay@wy188-app104 redis-3.2.9]make[wepay@wy188−app104redis−3.2.9] sudo make install

检查是否安装成功:

[wepay@wy188-app104 redis-3.2.9]$ rpm -qa|grep gcc



创建配置文件目录和bin目录:

[wepay@wy188-app104 redis]$ mkdir /usr/local/redis/etc

[wepay@wy188-app104 redis]$ sudo mkdir /usr/local/redis/bin

移动文件:

下图文件移动至/usr/local/redis/bin



redis.conf移动至/usr/local/redis/etc

修改redis.conf文件:

将daemonize的值改为yes

启动redis服务:[wepay@wy188-app104 bin]$ ./redis-server /usr/local/redis/etc/redis.conf

查看服务启动情况:[wepay@wy188-app104 /]$ ps -ef|grep redis

客户端连接:[wepay@wy188-app104 bin]$ ./redis-cli

简单的部署图



简单的生产部署图



配置主从关系

配置104机器为从服务器

修改conf文件:

修改端口为6380



修改daemonize 为yes

备注:

默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把配置文件里

当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面



修改pidfile为自己端口



修改slaveof

备注:设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步



配置106机器为主服务器

修改conf文件:

设置端口为6379

修改daemonize 为yes

测试

登录主服务器:[wepay@ba188-app106 bin]$ ./redis-cli

set测试数据 127.0.0.1:6379> set name zhc

get测试数据 127.0.0.1:6379> get name



登录从服务器:[wepay@wy188-app104 bin]$ redis-cli -p 6380

info发现:master_link_status:down



证明没有连接上

一些尝试

查看端口是否开放:

查看主服务:netstat -an | grep 6379



查看从服务器





问题排除,经过一系列排除,问题解决如下:

3.1 修改主服务器conf:

3.1.1 关闭rdb快照,rdb备份交由slave进行(只需在一台slave开启rdb即可)

#save 900 1

#save 300 10

#save 60 10000

3.1.2 开启aof日志,因为主服务器的aof日志数据是最新最全的,slave在数据同步时有可能会出现延迟

appendonly yes

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

appendfilename appendonly.aof

3.2 修改从服务器conf

3.2.1 打开 rdb快照功能(多台slave只需开一台)

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename “dump.rdb”

dir /usr/local/redis/dir

3.2.2 通常从服务器不能写,因此需要配置是否只读,配置项:

slave-read-only yes

3.2.3 优先级配置

slave-priority 100

3.3 再次测试

127.0.0.1:6379> set name “zhc”



我们发现主服务器set的值在从服务器能get到

网上一些主从配置出现问题的解决方案

master上set操作时报错或slave启动报错

![2017-08-21-11-34-56](http://ouv5iy6zs.bkt.clouddn.com/2017-08-21-11-34-56.png)


redis启动时报错





配置100机器从服务器

和104一致,但是端口为6382



查看日志信息

106主服务器



可以看到有两个从服务器信息

查看104从服务器



查看100从服务器



配置哨兵模式

单哨兵模式

100机器作为哨兵

为方便管理,我把sentinel.conf文件放到redis.conf平级目录

[wepay@wy188-app100 redis-3.2.9]$ sudo mv sentinel.conf /usr/local/redis329/etc



修改 sentinel.conf,来监控主服务器



启动哨兵

[wepay@wy188-app100 bin]$ sudo redis-sentinel /usr/local/redis329/etc/sentinel.conf



发现有哨兵ID,给master一个监控,两个从服务

强制杀掉104redis服务





发现哨兵控制台打印出来 +sdown信息,说明已经监控到slave宕机了

重启104redis服务

发现哨兵控制台打印出来 -sdown信息,说明已经监控到slave重启了



强制杀掉master服务



发现哨兵控制台打印出来





查看100机器日志



他已经变成主服务器了

项目中测试

我们配置好server.properties



重启服务:



有个错误提示: All sentinels down, cannot determine where is mymaster master is running

查阅资料:把哨兵的sentinel.conf配置文件中的保护模式改为禁用就行了

我也重新telnet了哨兵端口:



与资料解释一致,尝试修改conf文件,并重启哨兵

修改conf文件,并重启哨兵

protected-mode no



服务重启成功

杀掉100机器的6379的master服务



选举104作为master

我们刷新页面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: