• Redis——predixy源码安装和配置


    predixy的安装和配置:

    predixy 是高性能的适用于 redis 集群和哨兵的代理。

    predixy github 地址:https://github.com/joyieldInc/predixy

    predixy 编译安装需要 C++11 版本的编译器,至少需要 CentOS 7及以上版本才能编译安装。

    下载 

    wget https://gitee.com/mirrors/predixy/repository/archive/master.zip

    unzip  master.zip

    cd predixy

    make

    报错

    make[1]: Entering directory `/root/data/soft/predixy/predixy/src'
    g++ -std=c++11 -Wall -w -g -O3 -D_PREDIXY_BACKTRACE_ -D_EPOLL_ -c Crc16.cpp 
    make[1]: g++: Command not found
    make[1]: *** [Crc16.o] Error 127
    make[1]: Leaving directory `/root/data/soft/predixy/predixy/src'
    make: *** [default] Error 2

    安装 yum install gcc gcc-c++

    报错

    /usr/bin/ld: cannot find -lstdc++
    collect2: error: ld returned 1 exit status
    make[1]: *** [predixy] Error 1

    安装 stdc

    yum list | grep "stdc"

    yum install -y libstdc++-static.x86_64

    再次  make  成功

    把编译好的src/predixy  与配置文件conf,拷贝出来,目录如下:

    [root@izm5eb28tnyvb00rm7as8wz predixy]# tree build/ 
    build/
    ├── conf
    │   ├── auth.conf
    │   ├── cluster.conf
    │   ├── command.conf
    │   ├── dc.conf
    │   ├── latency.conf
    │   ├── predixy.conf
    │   ├── sentinel.conf
    │   ├── standalone.conf
    │   └── try.conf
    ├── logs
    │   ├── predixy.20210511.log
    │   └── predixy.log -> predixy.20210511.log
    ├── predixy
    └── run.sh
    2 directories, 13 files

    修改  predixy.conf 

    Bind 0.0.0.0:7617
    Log /root/data/soft/predixy/build/logs/predixy.log
    LogRotate 1d
    Include cluster.conf

    修改  cluster.conf , 172.31.140.161:6321为三主三从集群中任意一个节点。

    ClusterServerPool {
        MasterReadPriority 60
        StaticSlaveReadPriority 50
        DynamicSlaveReadPriority 50
        RefreshInterval 1
        ServerTimeout 1
        ServerFailureLimit 10
        ServerRetryTimeout 1
        KeepAlive 120
        Servers {
            + 172.31.140.161:6321
        }
    }

    启动 run.sh

    screen -dmS MyPredixy ./predixy conf/predixy.conf 
    screen -wipe
    echo "ok"

    查看集群状态,或者测试集群的使用

    redis-cli -h 172.31.140.161 -p 7617 info

      redis-cli -h 172.31.140.161 -p 7617 get "name"

    [root@izm5e6u39ae8sj3eivv3rvz data]# redis-cli -h 172.31.140.161 -p 7617 info
    # Proxy
    Version:1.0.5
    Name:PredixyExample
    Bind:0.0.0.0:7617
    RedisMode:proxy
    SingleThread:false
    WorkerThreads:1
    Uptime:1620703395
    UptimeSince:2021-05-11 11:23:15
    
    # SystemResource
    UsedMemory:49000
    MaxMemory:0
    MaxRSS:1826816
    UsedCpuSys:0.089
    UsedCpuUser:0.102
    
    # Stats
    Accept:34
    ClientConnections:1
    TotalRequests:784
    TotalResponses:625
    TotalRecvClientBytes:899
    TotalSendServerBytes:16719
    TotalRecvServerBytes:447092
    TotalSendClientBytes:18884
    
    # Servers
    Server:172.31.140.161:6321
    Role:master
    Group:60988515df740ac95be96140f8eb8e7f4e51cf2c
    DC:
    CurrentIsFail:0
    Connections:1
    Connect:1
    Requests:100
    Responses:100
    SendBytes:2776
    RecvBytes:76428
    
    Server:172.31.140.161:6323
    Role:master
    Group:90b34bf34f7061dc5f9d61f3561086f2ba180bab
    DC:
    CurrentIsFail:1
    Connections:1
    Connect:78
    Requests:230
    Responses:67
    SendBytes:1852
    RecvBytes:50907
    
    Server:172.31.140.161:6324
    Role:slave
    Group:430d3250d575ec138cdd15a9d9cd65f0b96ae668
    DC:
    CurrentIsFail:0
    Connections:1
    Connect:1
    Requests:111
    Responses:111
    SendBytes:3084
    RecvBytes:84726
    
    Server:172.31.140.161:6326
    Role:slave
    Group:60988515df740ac95be96140f8eb8e7f4e51cf2c
    DC:
    CurrentIsFail:0
    Connections:1
    Connect:1
    Requests:99
    Responses:99
    SendBytes:2748
    RecvBytes:75705
    
    Server:172.31.140.161:6322
    Role:master
    Group:430d3250d575ec138cdd15a9d9cd65f0b96ae668
    DC:
    CurrentIsFail:0
    Connections:1
    Connect:1
    Requests:120
    Responses:120
    SendBytes:3231
    RecvBytes:75882
    
    Server:172.31.140.161:6325
    Role:master
    Group:824a62be2ca3f9a1614e8fd73813b5a304ccba18
    DC:
    CurrentIsFail:0
    Connections:1
    Connect:1
    Requests:109
    Responses:109
    SendBytes:3028
    RecvBytes:83444
    # LatencyMonitor
    LatencyMonitorName:all
    <=          100                 1456               27 67.50%
    <=          200                 1424               13 100.00%
    T            72                 2880               40
    
    LatencyMonitorName:get
    <=          100                  734                8 38.10%
    <=          200                 1424               13 100.00%
    T           102                 2158               21
    LatencyMonitorName:set
    LatencyMonitorName:blist
    [root@izm5e6u39ae8sj3eivv3rvz data]# 

    对于 CentOS 6或更低版本,可以直接使用在 github release 中的二进制版本。

    ##安装

    tar -xzf predixy-1.0.5-bin-amd64-linux.tar.gz

    mv predixy-1.0.5 /usr/local/

    cd /usr/local/predixy-1.0.5/conf/

    修改里边的两个配置文件:predixy.conf   cluster.conf

    ###predixy 支持多种架构,由于使用的是 redis cluster,只需配置 redis cluster 对应的配置文件cluster.conf 即可。

    内容如下:

    ClusterServerPool {

        MasterReadPriority 60

        StaticSlaveReadPriority 50

        DynamicSlaveReadPriority 50

        RefreshInterval 1

        ServerTimeout 1

        ServerFailureLimit 10

        ServerRetryTimeout 1

        KeepAlive 120

        Servers {

            + 127.0.0.1:6379

            + 127.0.0.1:6380

            + 127.0.0.1:6381

            + 127.0.0.1:6382

            + 127.0.0.1:6383

            + 127.0.0.1:6384

        }

    }

    在 Servers 部分配置集群中任意一个节点即可,predixy 会自动发现整个集群的信息,即使配置的节点挂掉后,predixy 代理仍然可正常工作。通过自动发现集群,可以减少 cluster.conf 配置文件的修改及对 predixy 的重启操作。但 predixy 无法删除曾经自动发现的节点,如果某节点下掉,predixy 仍会看到之前的节点,虽然不影响正常使用,日志则会不断报出错误信息。需重启 predixy 解决。

    配置 predixy.conf

    Name Predixy001

    Bind 0.0.0.0:7617

    Include cluster.conf 

    注意 Include 部分,只需包括 cluster.conf,其他的则注释掉,否则可能会影响到 predixy的使用。

    启动predixy

    cd /usr/local/predixy-1.0.5/bin/

    cp predixy /usr/local/bin/

    ##启动

    nohup predixy predixy.conf   > /tmp/predixy.log 2>&1 & 

    ##查看日志

     tail -f /tmp/predixy.log

     predixy 添加环境变量,在 /etc/profile 中添加,然后在 /etc/rc.local 中设置开机启动 nohup predixy /usr/local/predixy-1.0.5/conf/predixy.conf > /tmp/predixy.log 2>&1 &

     ##可以看到集群的信息

    redis-cli -p 7617 info

    参数说明:

    MasterReadPriority,StaticSlaveReadPriority,DynamicSlaveReadPriority 三个参数和 redis 本身配置文件中的  slave-priority 没任何关系的。
    
    如果是自动发现找到的节点,则 DynamicSlaveReadPriority 会起作用,如果是直接配置的节点,则 StaticSlaveReadPriority 会起作用。

    Master/SlaveReadPriority

    Master

    Slave1

    Slave2

    Fail-over notes

    60/50 all requests 0 requests 0 requests Master dead, read requests deliver to slave until master(maybe new master) alive
    60/0 all requests 0 requests 0 requests Master dead, all requests fail
    50/50 all write requests, 33.33%read requests 33.33% read requests 33.33% read requests -
    0/50 all write requests, 0 read requests 50% read requests 50% read requests all slaves dead, all read requests fail
    10/50 all write requests, 0 read requests 50% read requests 50% read requests all slaves dead, read requests deliver to master
    RefreshInterval : predixy 获取节点信息和集群 hash slot 集群信息的间隔
    ServerFailureLimit : predixy 停止路由到节点之前失败的次数
    ServerTimeout : 单个命令执行的超时时间
     
  • 相关阅读:
    mysql decimal(10,2)对应java类型
    idea maven 配置spring boot dev-tools热部署
    在CentOS 8上安装Java 11(OpenJDK 11)和Java 8(OpenJDK 8)的方法
    关于mybatis-plus中Service和Mapper的分析
    Springboot测试类之@RunWith注解
    Get bit field from buffer as an integer / Set bit field in buffer from an integer
    A generic doubly linked list implementation
    Array helper
    Base64 Encoding/Decoding
    ffmpeg color_table[]
  • 原文地址:https://www.cnblogs.com/xingchong/p/14752872.html
Copyright © 2020-2023  润新知