redis安装详解
下载安装包
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/dir3.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
我们刷新页面