zoukankan      html  css  js  c++  java
  • Redis——搭建主从模式 搭建哨兵模式

    首先在linux安装好redis,版本如下:

    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -v
    redis-cli 4.0.8
    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-server -v
    Redis server v=4.0.8 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=6878437d5ce73519

    编辑三个redis.conf,master 1, slave 2, 目录如下:

    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# tree /root/data/soft/redis/ins-sentinel/
    /root/data/soft/redis/ins-sentinel/
    ├── 6300
    │   ├── dump.rdb
    │   ├── logfile.log
    │   ├── pidfile.pid
    │   └── redis.conf
    ├── 6301
    │   ├── dump.rdb
    │   ├── logfile.log
    │   ├── pidfile.pid
    │   └── redis.conf
    └── 6302
        ├── dump.rdb
        ├── logfile.log
        ├── pidfile.pid
        └── redis.conf
    
    3 directories, 12 files
    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# 

    端口号分别为 6300  6301  6302

    master修改:

    bind 0.0.0.0
    protected-mode yes
    port 6300
    pidfile /root/data/soft/redis/ins-sentinel/6300/pidfile.pid
    logfile "/root/data/soft/redis/ins-sentinel/6300/logfile.log"
    dir /root/data/soft/redis/ins-sentinel/6300/

    slave修改,同master,但多一句话:

    slaveof 172.31.140.161 6300

    分别启动三个实例:

    redis-server /root/data/soft/redis/ins-sentinel/6300/redis.conf 
    redis-server /root/data/soft/redis/ins-sentinel/6301/redis.conf 
    redis-server /root/data/soft/redis/ins-sentinel/6302/redis.conf 

    自此一主两从搭建并启动完成,查看主从状态如下:

    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -h 172.31.140.161 -p 6300 info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=172.31.140.161,port=6301,state=online,offset=280,lag=1
    slave1:ip=172.31.140.161,port=6302,state=online,offset=280,lag=1
    master_replid:02859e4cd236cbc4c3276b5e66016a871ca0010c
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:280
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:280
    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# 
    
    
    [root@izm5e6u39ae8sj3eivv3rvz data]# redis-cli -h 172.31.140.161 -p 6301 info replication
    # Replication
    role:slave
    master_host:172.31.140.161
    master_port:6300
    master_link_status:up
    master_last_io_seconds_ago:3
    master_sync_in_progress:0
    slave_repl_offset:378
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:02859e4cd236cbc4c3276b5e66016a871ca0010c
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:378
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:378
    [root@izm5e6u39ae8sj3eivv3rvz data]# 

    验证主从同步

    在主插入,在从查

    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -h 172.31.140.161 -p 6300 set "name" "zhangsan"
    OK
    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -h 172.31.140.161 -p 6300 keys "*"
    1) "name"
    
    [root@izm5e6u39ae8sj3eivv3rvz data]# redis-cli -h 172.31.140.161 -p 6301 get "name"
    "zhangsan"
    
    [root@izm5e6u39ae8sj3eivv3rvz data]# redis-cli -h 172.31.140.161 -p 6302 get "name"
    "zhangsan"

    表示插主从查没问题。

    下面加入哨兵,以实现高可用,主从切换。

    编辑哨兵配置文件   sentinel.conf

    protected-mode no
    daemonize yes
    port 16300
    dir "/root/data/soft/redis/ins-sentinel/sentinel"
    logfile "./sentinel.log"
    sentinel monitor mymaster 172.31.140.161 6300 1

    启动哨兵

    redis-sentinel /root/data/soft/redis/ins-sentinel/sentinel/sentinel_16300.conf

    查看哨兵状态

    redis-cli -p 16300 info sentinel

    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -p 16300 info sentinel
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=172.31.140.161:6300,slaves=2,sentinels=1
    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# 

    停接redis主节点后,再看哨兵状态,显示master节点已切换

    [root@izm5eb28tnyvb00rm7as8wz ins-sentinel]# redis-cli -p 16300 info sentinel
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=172.31.140.161:6302,slaves=2,sentinels=1
  • 相关阅读:
    [公链观点] BTC 1.0, ETH 2.0, EOS 3.0, Dapp, WASM, DOT, ADA, VNT
    [FAQ] chrome.runtime.onMessage 问题, Unchecked runtime.lastError: The message port closed before a response was received
    [FAQ] Composer, Content-Length mismatch
    [PHP] Laravel 依赖注入使用不当引起的内存溢出
    [PHP] 浅谈 Laravel auth:api 不同驱动 token 和 passport 的区别
    [PHP] 自定义 laravel/passport 的误区讲解
    [Tools] Kali Linux 高清屏扩大系统字体、BurpSuite、OpenVAS
    [NoSQL] 从模型关系看 Mongodb 的选择理由
    [quacker] Browser Extension to Clean Website ADs in Quasar BEX
    [FE] Quasar BEX 预览版指南
  • 原文地址:https://www.cnblogs.com/xingchong/p/14744484.html
Copyright © 2011-2022 走看看