Redis-cluster集群、主从复制

Redis主从复制、读写分离

一般主库可以做读写、从库做读。

过程:

从库启动时,会向主库发送sync命令。
主库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来。
当快照完成后,redis会将快照文件和所有缓存的命令发送给从库。
从库收到后,会载入快照文件并执行收到的缓存的命令。

配置:

只需在从库修改 redis.config(vim redis.config)文件,加入主库的IP地址,端口号,密码。
slaveof 192.168... 6379
masterauth 123456--- 主库没有密码就不用配

主从配置.png

Redis-cluster集群

官方推荐三主三从,Redis-cluster集群至少需要6个节点,一个主配一个从。
服务器有点小贵,这里先创建一台虚拟机试试手,分配6个不同端口实现不同的节点。
7001、7002、7003、7004、7005、7006。
先把防火墙关闭了--
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl status firewalld.service #查看firewall的状态

  1. 创建redis-cluster目录
    mkdir -p 7001/data
    mkdir -p 7002/data
    mkdir -p 7003/data
    mkdir -p 7004/data
    mkdir -p 7005/data
    mkdir -p 7006/data
    mkdir bin
  2. 到redis的安装路径复制src的脚本到bin目录下(绿色的)
    cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis-cluster/bin
  3. 复制redis 实例 到7001
    cp -r /usr/local/redis /usr/local/redis-cluster/7001
  4. 修改7001的redis.conf脚本
port 7001(每个节点的端口号)
daemonize yes
bind 192.168.119.131(绑定当前机器 IP)
pidfile /var/run/redis_7001.pid(pid 7001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-7001.conf(pid 7001和port要对应)
cluster-node-timeout 15000
appendonly yes
dir /usr/local/redis-cluster/7001/data/(数据文件存放位置,这个放到脚本最后面一行)
  1. 我们再复制5个分别放到对应的端口号目录里
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7002
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7003
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7004
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7005
    \cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7006
  2. 然后进入7002-7006端口号对应的redis.conf脚本,修改成对应的端口号。
  3. 启动试试水
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis/etc/redis.conf
    /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis/etc/redis.conf
  4. 测试节点
    /usr/local/redis-cluster/7001/redis/bin/redis-cli -h 192.168.37.130 -p 7001
    /usr/local/redis-cluster/7002/redis/bin/redis-cli -h 192.168.37.130 -p 7002
    /usr/local/redis-cluster/7003/redis/bin/redis-cli -h 192.168.37.130 -p 7003
    /usr/local/redis-cluster/7004/redis/bin/redis-cli -h 192.168.37.130 -p 7004
    /usr/local/redis-cluster/7005/redis/bin/redis-cli -h 192.168.37.130 -p 7005
    /usr/local/redis-cluster/7006/redis/bin/redis-cli -h 192.168.37.130 -p 7006
    ping一下.
    查看redis进程:ps -ef |grep redis
    9.这时候set,会报错


    报错.png
  5. 安装ruby软件,直接复制到命令行运行。
    yum install ruby
    yum install rubygems
    gem install redis (或者使用本地上传方式,不知道是不是国内问题,可能这个命令下载不来)
  6. 找到刚刚下载gem install redis 的位置,运行命令。
    gem install -l redis-3.2.1.gem
  7. 最后测试集群:
    /usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 id地址:7001 id地址:7002 id地址:7003 id地址:7004 id地址:7005 id地址:7006
集群成功.png

M主S从
测试:
往7001set数据,保存到了6007。


测试.png
  1. 如果报错:
    报错2.png

    可能是 redis-trib.rb与你所安装的版本不符。
    下载3.2.1版本的 redis-trib.rb。官网地址
    解压后我们在src目录找到redis-trib.rb脚本,上传,再用这个redis-trib.rb运行集群。

在云服务器上搭建

基本步骤跟上面差不多,要注意几点:

  • 需要protected-mode把改成no:protected-mode no
    保护模式,yes就是不允许外网访问。
  • bind后面写主机ip地址,我的写了没用,我就直接注释了,或者写0.0.0.0。就上面IP都允许。


    bind.png
  • protected-mode改为no,bind有注释了,运行的时候会报你什么安全的东西,意思就是你总的设置一个密码吧,不然什么人都能链。加个密码,requirepass 123。
  • 看你是用什么云服务,腾讯云阿里云需要去安全组开放端口,端口+10000也要开放,6个节点的12个端口号。百度云就不需要了,默认就已经是全部端口号都开启了。


    端口1.png

    端口2.png
  • redis官方一般不建议加密码了,主要是只允许本机访问,bind后面加固定ip的方法比较好
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 前言:项目中用到的缓存数据库是同事自己写的,虽然可用,但是很多特性都感觉差了一点意思,仅仅是可用。于是乎萌生一个想...
    lsnl8480阅读 3,159评论 0 3
  • 文章已经放到github上 ,如果对您有帮助 请给个star[https://github.com/qqxuanl...
    尼尔君阅读 2,287评论 0 22
  • 【本教程目录】 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动r...
    徐猿猿阅读 1,869评论 0 35
  • 在Redis的持久化中曾提到,Redis高可用的方案包括持久化、主从复制(及读写分离)、哨兵和集群。其中持久化侧重...
    不变甄心阅读 1,497评论 0 5
  • redis是什么 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Valu...
    烨枫_邱阅读 776评论 0 6