• redis(1) 集群部署


    一、部署环境

    1、版本
    redis 6.9
    2、实例
    3 master 3 slave

    主机 角色 IP:端口
    Hadoop1 master/slave 192.168.43.2:6380 /192.168.43.2:6379
    Hadoop2 master/slave 192.168.43.3:6380 /192.168.43.3:6379
    Hadoop3 master/slave 192.168.43.4:6380 /192.168.43.4:6379

    3、操作系统
    centos7.x

    普通用户 操作

    二、 部署

    1、官网下载
    | wget https://download.redis.io/releases/redis-6.0.9.tar.gz

    2、解压

    # tar zxvf redis-6.0.9.tar.gz -C /data1/hadoop
    

    3、编译

    # cd /data1/hadoop/redis
    # make MALLOC=libc
    

    3.1、编译报错如下:

    出现这个原因是gcc版本太低,查看当前的gcc版本

    (base) [hduser@hadoop1 redis]$ gcc -v
    Using built-in specs.
    Thread model: posix
    gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
    

    3.2、升级gcc版本
    升级到 5.3及以上版本
    yum -y install centos-release-scl
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

    scl enable devtoolset-9 bash

    注意:scl命令启用只是临时的,推出xshell或者重启就会恢复到原来的gcc版本。
    如果要长期生效的话,执行如下:
    echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
    或者也可以源码安装
    3.3、查看版本

    $ gcc --version
    gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
    
    

    接着重新编译

    三、cluster 配置

    4.1 创建集群目录

    # cd /data1/hadoop/redis
    # mkdir cluster/{6380,6379} -p
    # cp redis.conf cluster/6379
    # cp  redis.conf cluster/6380
    

    4.2、修改6379目录下的配置文件

    bind 192.168.43.2
    port 6379
    daemonize yes
    dir ./
    pidfile /var/run/redis_6379.pid
    logfile "/data1/hadoop/redis-6379.log"
    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
    cluster-require-full-coverage no
    appendonly yes
    
    
    #port 6379    #端口
    #daemonize yes    #守护进程
    #dir ./    #数据存储目录
    #logfile "/data1/hadoop/redis-6379.log"    #日志存储目录
    #cluster-enabled yes    #开启集群
    #cluster-config-file nodes-6379.conf
    #cluster-node-timeout 15000
    #cluster-require-full-coverage no
    #appendonly yes    #持久化
    

    4.3 根据上述的配置文件修改6378目录下的redis.conf,同时拷贝到其他两个节点,修改bind的IP地址

    (base) [hduser@hadoop1 6379]$ cp redis.conf ../6380/
    (base) [hduser@hadoop1 6379]$ vim ../6380/redis.conf
    

    主要修改

    port 6380
    pidfile /var/run/redis_6380.pid
    logfile "/data1/hadoop/redis-6380.log"
    cluster-config-file nodes-6380.conf
    

    拷贝redis到其他节点

    (base) [hduser@hadoop1 hadoop]$ scp -r redis/ 192.168.43.3:/data1/hadoop/
    (base) [hduser@hadoop1 hadoop]$ scp -r redis/ 192.168.43.4:/data1/hadoop/
    

    在hadoop2节点上执行

    [hduser@hadoop2 ~]$ cd /data1/hadoop/redis/
    [hduser@hadoop2 cluster]$ sed -i 's/192.168.43.2/192.168.43.3/g' 6379/redis.conf 
    [hduser@hadoop2 cluster]$ sed -i 's/192.168.43.2/192.168.43.3/g' 6380/redis.conf
    

    在hadoop3节点执行

    [hduser@hadoop3 ~]$ cd /data1/hadoop/redis/cluster/
    [hduser@hadoop3 cluster]$ sed -i 's/192.168.43.2/192.168.43.4/g' 6379/redis.conf
    [hduser@hadoop3 cluster]$ sed -i 's/192.168.43.2/192.168.43.4/g' 6380/redis.conf
    [hduser@hadoop3 cluster]$
    

    4.4 在Hadoop 配置启动脚本

    (base) [hduser@hadoop1 redis]$ cat startAllRedisInstance.sh 
    #!/bin/bash
    test  $# -ne 1 && echo "`basename $0` [start|status|stop]" && exit 1
    hosts=(hadoop1 hadoop2 hadoop3)
    REDIS_HOME=/data1/hadoop/redis
    CONFIG_HOME=/data1/hadoop/redis/cluster
    
    case $1 in
    "start")
    for host in ${hosts[*]};do
        ssh -T $host "${REDIS_HOME}/src/redis-server ${CONFIG_HOME}/6379/redis.conf ; ${REDIS_HOME}/src/redis-server ${CONFIG_HOME}/6380/redis.conf"
    done
    ;;
    "stop")
        for host in ${hosts[*]};do
        ssh -T ${host} "pgrep redis-server | xargs -exec kill -9 "
    done
    ;;
    
    "status")
    for host in ${hosts[*]};do
        ssh -T ${host} "echo -------------------${host}----------------;ps aux|grep redis-server|grep -v grep"
    done
    ;;
    *)
        echo "`basename $0` [start|status|stop]"
        exit 1
    ;;
    esac
    
    

    4.4、 脚本测试

    四、创建集群

    (base) [hduser@hadoop1 redis]$ ./src/redis-cli --cluster create  192.168.43.2:6379 192.168.43.2:6380 192.168.43.3:6379 192.168.43.3:6380 192.168.43.4:6379  192.168.43.4:6380 --cluster-replicas 1
    

    说明:
    --cluster-replicas 1 每一个主节点分配一个从节点。
    在创建的过程当中,会提示是否输入yes,默认输入yes就可以,代表同意对当前哈希槽位的分配。

    五、测试

    5.1 查看集群信息

    (base) [hduser@hadoop1 redis]$ ./src/redis-cli -c -h 192.168.43.2 -p 6379 cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_ping_sent:348
    cluster_stats_messages_pong_sent:335
    cluster_stats_messages_sent:683
    cluster_stats_messages_ping_received:330
    cluster_stats_messages_pong_received:348
    cluster_stats_messages_meet_received:5
    cluster_stats_messages_received:683
    

    主要看cluster_state
    5.2 查看节点状态

    (base) [hduser@hadoop1 redis]$ ./src/redis-cli -c -h 192.168.43.2 -p 6379 cluster nodes
    23f461e9c718bf89fb8b055efdd25c45649284e4 192.168.43.3:6380@16380 slave ea3140ab4fbe154b7b81bf7d9dd51179c12e68ef 0 1607404036527 1 connected
    ea3140ab4fbe154b7b81bf7d9dd51179c12e68ef 192.168.43.2:6379@16379 myself,master - 0 1607404035000 1 connected 0-5460
    9116660c1740ae5de7b19f0a9e2cdb7b4b515cad 192.168.43.2:6380@16380 slave afc9c1d087ad2c80d7b61ab6cd79304ccbb95f79 0 1607404035000 5 connected
    c1ff22c2df04f7df8c26ff21ce309df7d94de251 192.168.43.3:6379@16379 master - 0 1607404036000 3 connected 5461-10922
    ebcc5c7cef39246c1ea452456d39cde040ba4260 192.168.43.4:6380@16380 slave c1ff22c2df04f7df8c26ff21ce309df7d94de251 0 1607404035505 3 connected
    afc9c1d087ad2c80d7b61ab6cd79304ccbb95f79 192.168.43.4:6379@16379 master - 0 1607404034482 5 connected 10923-16383
    

    输出信息说明:
    节点ID
    IP:端口
    标志: master, slave, myself, fail, …
    如果是个从节点, 这里是它的主节点的NODE ID
    集群最近一次向节点发送 PING 命令之后, 过去了多长时间还没接到回复。.
    节点最近一次返回 PONG 回复的时间。
    节点的配置纪元(configuration epoch)
    本节点的网络连接情况:例如 connected 。
    节点目前包含的槽:例如 192.168.43.3:6379 目前包含号码为 5461 至 10922 的哈希槽。
    5.3 查看连接数

    (base) [hduser@hadoop1 redis]$ ./src/redis-cli -c -h 192.168.43.2 -p 6379 info clients
    # Clients
    connected_clients:1
    client_recent_max_input_buffer:24
    client_recent_max_output_buffer:0
    blocked_clients:0
    tracking_clients:0
    clients_in_timeout_table:0
    

    5.4 获取最大连接数

    (base) [hduser@hadoop1 redis]$ ./src/redis-cli -c -h 192.168.43.2 -p 6379 CONFIG GET maxclients
    1) "maxclients"
    2) "4064" # 默认值
    

    5.5 设置值

    借鉴:
    |https://blog.51cto.com/net881004/2538344
    |http://www.redis.cn/topics/cluster-tutorial.html

  • 相关阅读:
    poj 3667 Hotel
    codevs 1380 没有上司的舞会
    bzoj 4033 树上染色
    bzoj 1179 [APIO 2009]Atm(APIO水题)
    poj 1741 Tree
    bzoj 3600 没有人的算术
    poj 3233 Matrix Power Series
    hdu 2256 Problem of Precision -矩阵快速幂
    [矩阵十题第七题]vijos 1067 Warcraft III 守望者的烦恼 -矩阵快速幂
    main函数递归
  • 原文地址:https://www.cnblogs.com/yjt1993/p/14102078.html
Copyright © 2020-2023  润新知