一、Redis单机安装部署
1、上传并解压
[root@localhost opt]# tar -zxvf redis-3.2.12.tar.gz
2、安装依赖
yum -y install gcc
3、安装redis
[root@localhost redis-3.2.12]# make
注:如出现报错:jemalloc/jemalloc.h: No such file or directory
原因:错误的本质是我们在开始执行make 时遇到了错误(大部分是由于gcc未安装),然后我们安装好了gcc 后,我们再执行make ,这时就出现了jemalloc/jemalloc.h: No such file or directory。这是因为上次的编译失败,有残留的文件,我们需要清理下,然后重新编译就可以了。
正确解决办法:make distclean && make
错误解决办法:make MALLOC=libc
网上的解决办法虽然最后也是可以成功安装好 redis ,但是是有一些隐患的,首先我们要知道redis 需要使用内存分配器的, make MALLOC=jemalloc 就是指定内存分配器为 jemalloc ,make MALLOC=libc 就是指定内存分配器为 libc ,这个是有安全隐患的,jemalloc 内存分配器在实践中处理内存碎片是要比libc 好的,而且在README.md 文档也说明到了,jemalloc内存分配器也是包含在源码包里面的,可以在deps 目录下看到 jemalloc 目录。
4、修改环节变量
vim /etc/profile
export PATH=/opt/redis-3.2.12/src:$PATH
###source /etc/profile
5、启动redis
###后台运行
redis-server &
###关闭
redis-cli shutdown
6、连接redis
###如设置值为中文则显示为编码
redis-cli
###如设置值为中文则显示为中文
redis-cli --raw
7、编辑配置文件
mkdir -p data/redis/6379/data
vim /data/redis/6379/redis.conf
###后台运行
daemonize yes
port 6379
logfile /data/redis/6379/redis.log
dir /data/redis/6379/data
###数据文件的名字
dbfilename dump.rdb
8、带配置文件启动
redis-server /data/redis/6379/redis.conf
9、安全模式下启动
###redis默认开启了安全模式,只允许本地回环地址登录并范文数据库
vim /data/redis/6379/redis.conf
bind 192.168.1.80 127.0.0.1
requirepass 123456
10、安全模式下启动
###登录时验证
redis-cli -h 192.168.1.80 -p 6379 -a 123456
redis-cli -a 123456
###登录后验证
[root@localhost 6379]# redis-cli -h 192.168.1.80 -p 6379
192.168.1.80:6379> auth 123456
二、Redis持久化配置
1、RDB模式
vim /data/redis/6379/redis.conf
dir /data/redis/6379/data
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
2、AOF模式
vim /data/redis/6379/redis.conf
appendonly yes
#appendfsync always ###每次操作都保存
#appendfsync everysec ###每秒钟保存一次
三、Redis复制集(Master-Replica)
1、环节准备
准备两个及以上的多实例
###创建数据目录
[root@localhost redis]# mkdir -p 6380/data 6381/data 6382/data
###分别编辑配置文件
vim redis.conf
port 6380
daemonize yes
pidfile /data/redis/6380/data/redis.pid
loglevel notice
logfile "/data/redis/6380/redis.log"
dbfilename dump.rdb
dir /data/redis/6380/data
requirepass 123456
masterauth 123456 ###设定主库的密码为123456
2、启动多实例
redis-server /data/redis/6380/redis.conf
redis-server /data/redis/6381/redis.conf
redis-server /data/redis/6382/redis.conf
3、开启主从
###6381、6382为从
redis-cli -p 6381 -a 123456 slaveof 127.0.0.1 6380
redis-cli -p 6382 -a 123456 slaveof 127.0.0.1 6380
4、查询主从状态
redis-cli -p 6380 -a 123456 info replication
redis-cli -p 6381 -a 123456 info replication
redis-cli -p 6382 -a 123456 info replication
5、解除主从
redis-cli -p 6381 -a 123456 slaveof no one
四、Redis-Sentinel
1、redis-sentinel(哨兵)的功能
1、监控
2、自动选主、切换
3、应用透明
4、自动处理故障节点
2、创建sentinel节点目录
mkdir /data/sentinel/26380
3、编辑配置文件
vim /data/sentinel/26380/sentinel.conf
port 26380
dir "/data/sentinel/26380"
sentinel monitor mymaster 127.0.0.1 6380 1 ###mymaster是自定义的集群名,“1”为票数
sentinel down-after-milliseconds mymaster 5000 ###如果5000毫秒没有心跳就认为宕机
sentinel auth-pass mymaster 123456 ###sentinel连接redis使用的密码
4、启动
redis-sentinel /data/sentinel/26380/sentinel.conf &>/tmp/sentinel.log &
5、停主库测试
redis-cli -p 6380 -a 123456 shutdown
redis-cli -p 6381 -a 123456 info replication
五、Sentinel实现vip漂移故障切换
说明如果通过sentinel做vip漂移,则三台redis节点上都需要执行四、五步操作
1、编辑sentinel配置文件
vim /data/sentinel/26380/sentinel.conf
###加入故障时节点转移脚本参数
sentinel client-reconfig-script mymaster /usr/local/bin/recfg.sh
2、编辑脚本
vim /usr/local/bin/recfg.sh
#!/bin/bash
MASTER_IP=${6} #新主redis的ip地址
LOCAL_IP='192.168.1.80' #当前服务器IP,主机192.168.1.80
VIP='192.168.1.81' ###自定义
NETMASK='24'
INTERFACE='ens33' ###需注意
if [ ${MASTER_IP} = ${LOCAL_IP} ]; then
sudo /sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE} #将VIP绑定到该服务器上
sudo /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
exit 0
else
sudo /sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE} #将VIP从该服务器上删除
exit 0
fi
exit 1 #如果返回1,sentinel会一直执行这个脚本
3、赋予可执行权限
chmod +x recfg.sh
4、主库上手工生成第一个vip地址
ifconfig ens33:1 192.168.1.81/24
5、重启redis及sentinel