Redis主从复制及sentinel配置

1.环境说明

系统:CentOS-7-x86_64
ip:192.168.18.236
REDIS_HOME:/opt/redis-4.0.1
redis节点:
    192.168.18.236:6379 master
    192.168.18.236:6380 slave
    192.168.18.236:6381 slave

2.修改配置

cd /opt/redis-4.0.1
cp redis.conf redis_6380.conf
cp redis.conf redis_6381.conf

#修改port、pidfile、slaveof
vi redis_6380.conf
    port 6380
    pidfile /var/run/redis_6380.pid
    slaveof 127.0.0.1 6379

vi redis_6381.conf
    port 6381
    pidfile /var/run/redis_6381.pid
    slaveof 127.0.0.1 6379

3.启动测试

cd /opt/redis-4.0.1

#启动master和2个slave
./src/redis-server redis.conf 
./src/redis-server redis_6380.conf 
./src/redis-server redis_6381.conf 

#打开3个shell窗口,登录3个客户端
./src/redis-cli -p 6379
./src/redis-cli -p 6380
./src/redis-cli -p 6381

#查看6379复制系统中的信息
127.0.0.1:6379> INFO replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6380,state=online,offset=1246,lag=1
    slave1:ip=127.0.0.1,port=6381,state=online,offset=1246,lag=1
    master_replid:8bb4c076d0ce5179282dac083bf526173d8ef33b
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1246
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1246

#查看6380复制系统中的信息
127.0.0.1:6380> INFO replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:3
    master_sync_in_progress:0
    slave_repl_offset:1442
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:8bb4c076d0ce5179282dac083bf526173d8ef33b
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1442
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1442

4.sentinel配置

sentinel介绍

  1. Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案

  2. 当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换

  3. 而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换。
    它的主要功能有以下几点:

    • 不时地监控redis是否按照预期良好地运行;
    • 如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);
    • 能够进行自动切换。当一个master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址。
  4. Sentinel支持集群
    很显然,只使用单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后(sentinel本身也有单点问题,single-point-of-failure)整个集群系统将无法按照预期的方式运行。所以有必要将sentinel集群

搭建2个sentinel节点

cd /opt/redis-4.0.1

cp sentinel.conf  sentinel_26380.conf 
vi sentinel.conf
    #后端启动   
    daemonize yes
    logfile "/var/log/sentinel.log"
    sentinel monitor mymaster 127.0.0.1 6379 2
vi sentinel_26380.conf
    port 26380
    #后端启动
    daemonize yes
    logfile "/var/log/sentinel_26380.log"
    sentinel monitor mymaster 127.0.0.1 6379 2

#启动两个sentinel服务
./src/redis-sentinel  sentinel.conf 
./src/redis-sentinel  sentinel_26380.conf 

5.测试sentinel

1).把6379 master节点关闭

ps aux | grep redis-server
#把6379的服务kill掉
kill -9 3584

2).查看sentinel log

cat /var/log/sentinel.log 
    4323:X 21 Sep 10:15:57.638 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    4323:X 21 Sep 10:15:57.638 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=4323, just started
    4323:X 21 Sep 10:15:57.638 # Configuration loaded
    4324:X 21 Sep 10:15:57.641 * Increased maximum number of open files to 10032 (it was originally set to 1024).
    4324:X 21 Sep 10:15:57.643 * Running mode=sentinel, port=26379.
    4324:X 21 Sep 10:15:57.643 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    4324:X 21 Sep 10:15:57.643 # Sentinel ID is 8ad4ea46a01c2176d7665b64fad69e08080bf9a8
    4324:X 21 Sep 10:15:57.643 # +monitor master mymaster 127.0.0.1 6379 quorum 2
    4324:X 21 Sep 10:16:05.756 * +sentinel sentinel 1e3e9ae7f00507f5153ee3cef0ba2dc2a97c2ff1 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
    4324:X 21 Sep 10:18:56.619 # +sdown master mymaster 127.0.0.1 6379
    4324:X 21 Sep 10:18:56.753 # +new-epoch 1
    4324:X 21 Sep 10:18:56.754 # +vote-for-leader 1e3e9ae7f00507f5153ee3cef0ba2dc2a97c2ff1 1
    4324:X 21 Sep 10:18:57.189 # +config-update-from sentinel 1e3e9ae7f00507f5153ee3cef0ba2dc2a97c2ff1 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
    4324:X 21 Sep 10:18:57.189 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6381
    4324:X 21 Sep 10:18:57.189 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6381
    4324:X 21 Sep 10:18:57.189 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381
    4324:X 21 Sep 10:19:27.248 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381

发现自动将master切换到6381上

3).cat sentinel.conf

#发现自动改为6381
sentinel monitor mymaster 127.0.0.1 6381 2

4).登录6381客户端,查看是否为master

./src/redis-cli -p 6381
#查看复制系统信息,role已经改为master
127.0.0.1:6381> INFO replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6380,state=online,offset=52458,lag=0
    master_replid:9d438d265f580c023e1b08e73f0ea5edda5b8a8f
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:52591
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:25409
    repl_backlog_histlen:27183

5).再重新启动6379节点

./src/redis-server redis.conf
./src/redis-cli -p 6379
#发现role为slave
127.0.0.1:6379> INFO replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6381
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:83939
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:9d438d265f580c023e1b08e73f0ea5edda5b8a8f
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:83939
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:77064
    repl_backlog_histlen:6876
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,757评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,478评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,540评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,593评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,903评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,329评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,659评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,383评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,055评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,337评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,864评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,227评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,820评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,999评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,750评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,365评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,260评论 2 258

推荐阅读更多精彩内容