day07-Redis主从及安全

Redis集群

  • 主从复制

    为了避免单台机器故障导致的数据丢失,我们需要将数据复制多份部署到多台不同的服务器上,这样即使一台服务器出现故障,别的服务器依然能提供服务。 这也要求一台服务器数据更新以后,自动同步更新到其他服务器上。

    • 如何实现

      • Redis 提供了复制(Replication)功能来实现多台 Redis 服务器的数据同步

      • 通过部署多台 Redis 机器,并在配置文件中指定者几台 Redis 服务器之间的主从关系。主负责写入数据,同时将数据实时同步到从机器上。Redis默认Master用于写,Slave用于读。向 Slave 写数据会导致错误。

    方式一: 修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从而构成主从复制关系

    启动

    • redis-sever /etc/redis6380.conf //启动master

    • redis-sever /etc/redis6381.conf //启动slaver1

    • redis-sever /etc/redis6382.conf //启动slaver2

      Redis Master配置

      #导入原始配置文件
      include /etc/redis/redis.conf
      
      #守护进程
      daemonize yes
      
      #端口
      port 6380
      
      #进程文件
      pidfile /var/run/redis/redis_6380.pid
      
      #日志文件
      logfile redis-6380.log
      
      #RDB文件
      dbfilename redis-dump-6380.rdb
      

      Redis slave 配置

      #导入原始配置文件
      include /etc/redis/redis.conf
      
      #守护进程
      daemonize yes
      
      #端口
      port 6381
      
      #进程文件
      pidfile /var/run/redis/redis_6381.pid
      
      #日志文件
      logfile redis-6381.log
      
      #RDB文件
      dbfilename redis-dump-6381.rdb
      
      #配置目前的配置是那一台master的slave
      slaveof 127.0.0.1 6380
      

    查看当前机器的角色

      ```
      #master机器信息
      root@aaron:/home/aaron# redis-cli -p 6380
      127.0.0.1:6380> INFO replication
      # Replication
      role:master
      connected_slaves:2
      slave0:ip=127.0.0.1,port=6381,state=online,offset=476,lag=1
      slave1:ip=127.0.0.1,port=6383,state=online,offset=476,lag=1
      master_replid:aa778915d498ad1ea8a5c44cf7aa73e238a95956
      master_replid2:0000000000000000000000000000000000000000
      master_repl_offset:476
      second_repl_offset:-1
      repl_backlog_active:1
      repl_backlog_size:1048576
      repl_backlog_first_byte_offset:1
      repl_backlog_histlen:476
      
      -----------------------------------------------
      #slaver信息
      127.0.0.1:6383> info replication
      # Replication
      role:slave
      master_host:127.0.0.1
      master_port:6380
      master_link_status:up
      master_last_io_seconds_ago:9
      master_sync_in_progress:0
      slave_repl_offset:1246
      slave_priority:100
      slave_read_only:1
      connected_slaves:0
      master_replid:aa778915d498ad1ea8a5c44cf7aa73e238a95956
      master_replid2:0000000000000000000000000000000000000000
      master_repl_offset:1246
      second_repl_offset:-1
      repl_backlog_active:1
      repl_backlog_size:1048576
      repl_backlog_first_byte_offset:253
      repl_backlog_histlen:994
    
      ```
    
    • 方式二: redis-server --slaveof <master-ip> <master-port>, 在启动 Redis 时指定当前服务成为某个主Redis服务的从Slave

    • 容灾处理

    当 master 机器出现故障时(模拟时杀掉redis master服务进程),需要手动将Slave中的一个提升为Master, 剩下的slav配置到新的Master上(冷处理)

    将6381端口的 Slave 提升 master

    127.0.0.1:6381> SLAVEOF no one
    OK
    

    将6382的master设置为6381

    127.0.0.1:6382> SLAVEOF 127.0.0.1 6381
    OK
    

高可用 Sentinel 哨兵

Sentinel 时官方提供的用于监控多个Redis服务实例运行情况的解决方案。

  • 监控

  • Sentinel配置

#复制四份sentinel.conf文件

- sentinel26380.conf
- sentinel26381.conf
- sentinel26382.conf
- sentinel26383.conf

#修改sentinel2638*.conf中的两个配置项

port 26380   //sentinel26380.conf

port 26381   //sentinel26381.conf

port 26382   //sentinel26382.conf

port 26383   //sentinel26383.conf

#修改sentinel监视配置项

<!---->
#                name     masterIP    masterPort  哨兵投票数
sentinel monitor mymaster 127.0.0.1   6381        2

#创建监视主服务器的Sentinel实例

redis-sentinel /etc/redis/sentinel26380.conf

redis-sentinel /etc/redis/sentinel26381.conf

redis-sentinel /etc/redis/sentinel26382.conf

redis-sentinel /etc/redis/sentinel26383.conf

安全

  • 设置密码

redis.conf 文件中设置 requirepass yourPassword

  • 绑定ip
#只允许本机登陆
bind 127.0.0.1
  • 命令禁止或是重命名
#重命名flushall为asdfg
#注意:对于flushall命令,需要保证appendonly.aof文件没有flushall命令,否则服务器无法启动
rename-command flushall asdfg

#禁止使用flushdb命令
rename-command flushdb ""

#禁止使用config命令
rename-command config ""

参考:【动力节点】Redis视频教程

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

推荐阅读更多精彩内容

  • 浅谈Redis主从复制 2013.09.27 11:27:00 来源: 京东 作者:张成远 ( 0 条评论 )...
    epime阅读 568评论 0 2
  • 最近公司项目要求Redis集群且高可用,在查询了一系列文章,再结合项目实际情况,所以采用了这一套高可用集群方案 方...
    Crazy_Coder阅读 1,078评论 0 4
  • 文章已经放到github上 ,如果对您有帮助 请给个star[https://github.com/qqxuanl...
    尼尔君阅读 2,286评论 0 22
  • 摘要:1 什么是Redis部分重新同步-psync redis部分重新同步:是指redis因某种原因引起复制中断后...
    暖夏未眠丶阅读 1,047评论 0 3
  • 晚上11:00多了,准备写日记了,一位扫码进来的帅哥貌似对我们的朵嘉浓感兴趣,跟我聊了起来。 这一聊不打紧,一直聊...
    朵嘉浓小熊阅读 448评论 1 1