为了账号安全,请及时绑定邮箱和手机立即绑定

「实战篇」开源项目docker化运维部署-redis高速缓存(六)

标签:
Docker

webp

redis

  • 官网

https://redis.io/
Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。它支持诸如字符串、散列、列表、集合、带有范围查询的排序集、位图、日志、带有半径查询的地理空间索引和流之类的数据结构。Redis具有内置的复制、Lua脚本、LRU驱逐、事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供高可用性。

webp

  • 历史

2008年,意大利一家创业公司Merzia的创始人Salvatore Sanfilippo为了避免MySQL的低性能,亲自定做一个数据库,并于2009年开发完成,这个就是Redis。
短短几年,用户数据量猛增。国内如新浪微博、街旁和知乎等,国外如GitHub、暴雪等,都是Redis的用户。世界上最大规模的Redis缓存,就是新浪微博团队打造的。热点新闻的时候。Redis可以达到最多每秒10万的读写。

  • 高速缓存介绍

  1. 高速缓存利用内存保持数据,读写速度远超过硬盘

  2. 高速缓存可以减少IO操作,降低IO压力

微信红包就是很好的例子,在发红包的时候,红包信息就保存在缓存中,抢的人也是从高速缓存中取。春节当天几个亿的人来抢也保持系统的稳定。

  1. 一般的应用,都分为常用和个性化,个性化可能是从数据库中获取的。但是常用的可能就是从高速缓存中获取的。

  • Redis集群介绍

Redis目前的集群方案为以下几种:

  1. RedisCluster:官方推荐,没有中心点(主节点不是中心节点,而是保存数据最多的,最新的,同步后主节点就消失了)。

  2. Codis:中间件,存在中心节点(中心节点挂了,彻底玩完)。

  3. Twemproxy:中间件产品,存在中心节点。

  • RedisCluster

  1. 无中心节点,客户端与redis节点直连,不需要中间代理层(很类似PXC)

  2. 数据可以被分片存储(每个节点存储的内容是不一样的)

  3. 管理方便,后续可自行增加或者摘除节点

  • 本次搭建的Redis节点的示意图

webp

  • 主从同步

上边说过,RedisCluster的数据是分片存储的,如果redis挂了就会丢失一部分的数据。为了避免这个问题的产生,就必须引入主从同步的机制

  1. Redis集群中的数据复制是通过主从同步来实现的。

  2. 主节点(Master)把数据分发给从节点(Slave)

  3. 主从同步的好处在于高可用,Rredis节点有冗余设计

  • Redis集群高可用

  1. Redis集群中应该包含奇数个Master,至少应该是3个,如果其中一个挂的,剩余奇数个可以进行选举至少过半的情况。很容易选择到master节点。

  2. Redis集群中每个Master都应该有Slave

  • 为什么Redis不搭建负载均衡

因为本身前后端分离项目,请求后端的时候,后端对请求已经做了负载均衡所以Redis不需要做负载均衡。

搭建集群

应用IP地址服务配置安装应用安装方式
docker-mysql192.168.66.101docker-redis-cluster双核 8g内存docker-redis-clusterdocker

(1). 虚拟机vagrant讲述安装的步骤

vagrant up

(2).机器window/mac开通远程登录root用户下

su -# 密码vagrant#设置 PasswordAuthentication yesvi /etc/ssh/sshd_config
sudo systemctl restart sshd

webp

  • 创建文件夹,配置

mkdir redis-clustercd redis-cluster
mkdir r1cd r1
vi redis.conf
mkdir datacd ~

webp

webp

  • redis.conf

配置了5个地方

  1. daemonize yes

以后台进程运行

  1. cluster-enabled yes

开启集群

  1. cluster-config-file 150000

超时时间

  1. appendonly yes

开启AOF模式,保存文件的形式

  1. requirepass idig8.com

认证密码

  1. cluster-config-file nodes.conf

集群配置文件

直接看github我提交的源码吧

一共要创建6个redis集群

  • 创建容器(r1)

想加上安全验证,但是不生效,查了下daemonize yes,他的作用是是否开启守护进程模式,在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。所以进入这个容器内手动选择加载配置文件。

docker run -it -d \
-v /root/redis-cluster/r1/redis.conf:/etc/redis/redis.conf \
--name r1 -p 5001:6379 \
--net=net2 \
--ip 172.19.0.2 \
zhugeaming1314/redis bash
  • 配置启动

docker exec -it r1 bashcd /usr/redis/src
./redis-server /etc/redis/redis.conf

webp

  • 创建容器(r2)

docker run -it -d \
-v /root/redis-cluster/r2/redis.conf:/etc/redis/redis.conf \
--name r2 -p 5002:6379 \
--net=net2 \
--ip 172.19.0.3 \
zhugeaming1314/redis bash
  • 配置启动

docker exec -it r2 bashcd /usr/redis/src
./redis-server /etc/redis/redis.conf

webp

  • 创建容器(r3)

docker run -it -d \
-v /root/redis-cluster/r3/redis.conf:/etc/redis/redis.conf \
--name r3 -p 5003:6379 \
--net=net2 \
--ip 172.19.0.4 \
zhugeaming1314/redis bash
  • 配置启动

docker exec -it r3 bashcd /usr/redis/src
./redis-server /etc/redis/redis.conf

webp

  • 创建容器(r4)

docker run -it -d \
-v /root/redis-cluster/r4/redis.conf:/etc/redis/redis.conf \
--name r4 -p 5004:6379 \
--net=net2 \
--ip 172.19.0.5 \
zhugeaming1314/redis bash
  • 配置启动

docker exec -it r4 bashcd /usr/redis/src
./redis-server /etc/redis/redis.conf

webp

  • 创建容器(r5)

docker run -it -d \
-v /root/redis-cluster/r5/redis.conf:/etc/redis/redis.conf \
--name r5 -p 5005:6379 \
--net=net2 \
--ip 172.19.0.6 \
zhugeaming1314/redis bash
  • 配置启动

docker exec -it r5 bashcd /usr/redis/src
./redis-server /etc/redis/redis.conf

webp

  • 创建容器(r6)

docker run -it -d \
-v /root/redis-cluster/r6/redis.conf:/etc/redis/redis.conf \
--name r6 -p 5006:6379 \
--net=net2 \
--ip 172.19.0.7 \
zhugeaming1314/redis bash
  • 配置启动

docker exec -it r6 bashcd /usr/redis/src
./redis-server /etc/redis/redis.conf

webp

redis-trib.rb

redis内自带集群工具redis-trib.rb,操作redis-trib需要很多指令很麻烦。建议使用我提供的镜像,里面什么都装好了老铁就根据我的命令操作就可以了 。

webp

  • 创建集群命令

docker exec -it r1 bashcd /usr/redis
mkdir clustercd src



作者:IT人故事会
链接:https://www.jianshu.com/p/31b16b34d675


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消