没有合适的资源?快使用搜索试试~ 我知道了~
Redis集群详解
4 下载量 199 浏览量
2020-12-14
06:30:26
上传
评论
收藏 144KB PDF 举报
温馨提示
试读
17页
Redis集群详解 Redis有三种集群模式,分别是: * 主从模式 * Sentinel模式 * Cluster模式 三种集群模式各有特点,关于Redis介绍可以参考这里:NoSQL(二)——Redis Redis官网:https://redis.io/ ,最新版本6.0.5 主从模式 主从模式介绍 主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。 其中主从复制有如下特点: * 主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库 * 从数据库一般都是只读的,并且接收主数据库同步过来的数据 * 一个m
资源详情
资源评论
资源推荐
Redis集群详解集群详解
Redis集群详解
Redis有三种集群模式,分别是:
* 主从模式
* Sentinel模式
* Cluster模式
三种集群模式各有特点,关于Redis介绍可以参考这里:NoSQL(二)——Redis
Redis官网:https://redis.io/ ,最新版本6.0.5
主从模式主从模式
主从模式介绍
主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。
其中主从复制有如下特点:
* 主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库
* 从数据库一般都是只读的,并且接收主数据库同步过来的数据
* 一个master可以拥有多个slave,但是一个slave只能对应一个master
* slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来
* master挂了以后,不影响slave的读,但redis不再提供写服务,master重启后redis将重新对外提供写服务
* master挂了以后,不会在slave节点中重新选一个master
工作机制:工作机制:
当slave启动后,主动向master发送SYNC命令。master接收到SYNC命令后在后台保存快照(RDB持久化)和缓存保存快照
这段时间的命令,然后将保存的快照文件和缓存的命令发送给slave。slave接收到快照文件和命令后加载快照文件和缓存的执
行命令。
复制初始化后,master每次接收到的写命令都会同步发送给slave,保证主从数据一致性。
安全设置:
当master节点设置密码后,
客户端访问master需要密码
启动slave需要密码,在配置文件中配置即可
客户端访问slave不需要密码
缺点:
从上面可以看出,master节点在主从模式中唯一,若master挂掉,则redis无法对外提供写服务。
主从模式搭建主从模式搭建
环境准备:
master节点 192.168.30.128
slave节点 192.168.30.129
slave节点 192.168.30.130
全部下载安装:
# cd /software
# wget http://download.redis.io/releases/redis-6.0.5.tar.gz
# tar zxf redis-5.0.4.tar.gz && mv redis-6.0.5/ /usr/local/redis
# cd /usr/local/redis && make && make install
# echo $?
0
全部配置成服务:
服务文件
# vim /usr/lib/systemd/system/redis.service
[Unit] Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target [Service] ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis.conf –
supervised systemd
ExecStop=/usr/libexec/redis-shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target
shutdown脚本
# vim /usr/libexec/redis-shutdown
#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x
REDIS_CLI=/usr/local/bin/redis-cli
# Retrieve service name
SERVICE_NAME="$1"
if [ -z "$SERVICE_NAME" ]; then
SERVICE_NAME=redis
fi
# Get the proper config file based on service name
CONFIG_FILE="/usr/local/redis/$SERVICE_NAME.conf"
# Use awk to retrieve host, port from config file
HOST=`awk '/^[[:blank:]]*bind/ { print $2 }' $CONFIG_FILE | tail -n1`
PORT=`awk '/^[[:blank:]]*port/ { print $2 }' $CONFIG_FILE | tail -n1`
PASS=`awk '/^[[:blank:]]*requirepass/ { print $2 }' $CONFIG_FILE | tail -n1`
SOCK=`awk '/^[[:blank:]]*unixsocket\s/ { print $2 }' $CONFIG_FILE | tail -n1`
# Just in case, use default host, port
HOST=${HOST:-127.0.0.1}
if [ "$SERVICE_NAME" = redis ]; then
PORT=${PORT:-6379}
else
PORT=${PORT:-26739}
fi
# Setup additional parameters
# e.g password-protected redis instances
[ -z "$PASS" ] || ADDITIONAL_PARAMS="-a $PASS"
# shutdown the service properly
if [ -e "$SOCK" ] ; then
$REDIS_CLI -s $SOCK $ADDITIONAL_PARAMS shutdown
else
$REDIS_CLI -h $HOST -p $PORT $ADDITIONAL_PARAMS shutdown
fi
# chmod +x /usr/libexec/redis-shutdown
# useradd -s /sbin/nologin redis
# chown -R redis:redis /usr/local/redis
# chown -R reids:redis /data/redis
# yum install -y bash-completion && source /etc/profile #命令补全
# systemctl daemon-reload
# systemctl enable redis
修改配置:
192.168.30.128
# mkdir -p /data/redis
# vim /usr/local/redis/redis.conf
bind 192.168.30.128 #监听ip,多个ip用空格分隔
daemonize yes #允许后台启动
logfile "/usr/local/redis/redis.log" #日志路径
dir /data/redis #数据库备份文件存放目录
masterauth 123456 #slave连接master密码,master可省略
requirepass 123456 #设置master连接密码,slave可省略
appendonly yes #在/data/redis/目录生成appendonly.aof文件,将每一次写操作请求都追加到appendonly.aof 文件中
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
# sysctl -p
192.168.30.129
# mkdir -p /data/redis
# vim /usr/local/redis/redis.conf
bind 192.168.30.129
daemonize yes
logfile "/usr/local/redis/redis.log"
dir /data/redis
replicaof 192.168.30.128 6379
masterauth 123456
requirepass 123456
appendonly yes
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
# sysctl -p
192.168.30.130
# mkdir -p /data/redis
# vim /usr/local/redis/redis.conf
bind 192.168.30.130
daemonize yes
logfile "/usr/local/redis/redis.log"
dir /data/redis
replicaof 192.168.30.128 6379
masterauth 123456
requirepass 123456
appendonly yes
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
# sysctl -p
全部启动redis:
# systemctl start redis
查看集群状态:
剩余16页未读,继续阅读
weixin_38714370
- 粉丝: 2
- 资源: 905
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Unity XR 手势射击控制脚本(适用于任何可手势识别的设备)
- 机械设计全自动电表(NB和IC卡表)控制和上壳装配线sw16可编辑非常好的设计图纸100%好用.zip
- 基于matlab的EAN-13条形码识别系统GUI界面.zip代码53
- matlab基于bp神经网络交通信号标志识别GUI界面13个标志.zip代码54
- 电子万年历答辩实物展示视频mp4格式
- 基于python实现的程序,包括哈希感知算法cvHash,图像切割cvsplit,固定目标检测cvRec(附文档ppt)等
- 计算0-10000之间所有偶数的和
- multiled.zip
- 基于php实现的哈希算法的人脸检索
- 单片机 电子钟 设计报告/课程设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0