zoukankan      html  css  js  c++  java
  • Centos7中搭建Redis6集群操作步骤

    下载安装包

    # 进入软件下载目录
    cd /root/software
    
    # 下载安装包
    wget https://download.redis.io/releases/redis-6.2.0.tar.gz
    
    # 确认下载安装包
    ll
    

    解压安装装包

    # 进入安装目录
    cd /root/program
    
    # 创建安装软件目录
    mkdir redis
    cd redis
    
    # 确认当前目录
    pwd
    # /root/program/redis
    
    # 复制安装包
    cp /root/software/redis-6.2.0.tar.gz .
    
    # 解压目录
    tar -xvf redis-6.2.0.tar.gz
    

    安装依赖

    # 确认gcc是否已安装及版本
    gcc -v
    
    # 安装gcc依赖
    yum install gcc
    
    # CentOS7默认安装的是4.8.5,而redis6.0只支持5.3以上版本,这里将gcc升级到9
    yum install centos-release-scl
    
    yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
    
    # 永久切换gcc版本
    echo “source /opt/rh/devtoolset-9/enable” >> /etc/profile
    
    # 临时切换gcc版本
    scl enable devtoolset-9 bash
    
    # 查看gcc版本
    gcc -v
    

    安装

    # 进入解压后目录
    cd /root/program/redis/redis-6.2.0
    
    # 编译
    make MALLOC=libc
    
    # 安装
    make install PREFIX=/usr/local/redis
    
    # 确认是否安装成功
    cd /usr/local/redis/bin
    
    # 如果出现下面的结果则证明已安装成功
    [root@localhost bin]# ll
    total 8424
    -rwxr-xr-x. 1 root root  963456 Mar  1 10:00 redis-benchmark
    lrwxrwxrwx. 1 root root      12 Mar  1 10:00 redis-check-aof -> redis-server
    lrwxrwxrwx. 1 root root      12 Mar  1 10:00 redis-check-rdb -> redis-server
    -rwxr-xr-x. 1 root root 1202888 Mar  1 10:00 redis-cli
    lrwxrwxrwx. 1 root root      12 Mar  1 10:00 redis-sentinel -> redis-server
    -rwxr-xr-x. 1 root root 6452272 Mar  1 10:00 redis-server
    
    # 配置全局可以使用Redis命令
    cp redis-cli /usr/bin/redis-cli
    
    cp redis-server /usr/bin/redis-server
    
    # 确认是否可以使用全局变量
    redis-cli
    

    创建目录

    # 创建对应数据文件目录
    cd /root/
    mkdir data
    cd data/
    mkdir redis
    cd redis/
    
    # 确认当前所在的操作目录
    pwd
    # /root/data/redis
    
    # 创建相应的文件目录
    mkdir run log data conf
    
    # 创建数据对应rdb文件每个端口对应目录
    cd data
    mkdir 7000 7001 7002 7003 7004 7005
    

    设置配置文件

    # 进入安装包目录
    cd /root/program/redis/redis-6.2.0
    
    # 复制配置文件到目标目录
    cp redis.conf /root/data/redis/conf/redis_7000.conf
    
    # 进入配置文件对应目录
    cd /root/data/redis/conf
    
    # 配置配置文件内容,修改文件内容如下:
    vim redis_7000.conf
    
    # 一.允许远程访问
    #1. 注释掉下面代码,或者改为 bind 0.0.0.0,第75行
    bind 0.0.0.0
    #2. 关闭保护模式,第94行
    protected-mode no
    
    # 二.通用配置
    #1. 开启守护进程,第247行
    daemonize yes
    #2. 配置密码(必须设置相同的密码,不设masterauth的话宕机了不能自动恢复),第879行
    requirepass tdfdsfnkinki.net
    #集群节点间的访问密码,第474行
    masterauth tdfdsfnkinki.net
    # 持久化类型
    appendonly yes
    appendfilename "appendonly-7000.aof"
    
    # 三.集群配置
    port 7000 #配置端口,第98行
    cluster-enabled yes #开启集群,第1363行
    cluster-config-file nodes-7000.conf  #集群节点配置文件,第1371行
    pidfile /root/data/redis/run/redis_7000.pid #进程文件ID对应文件,第279行
    cluster-node-timeout 5000 #集群节点超时时间,超过这个时间,集群认为该节点故障,如果是主节点,会进行相应的主从切换,第1377行
    
    # 四.配置对应目录
    logfile /root/data/redis/log/redis_7000.log #日志文件,第292行
    dir /root/data/redis/data/7000 #目录要提前创建好,第444行
    
    # 将当前7000的配置文件复制为其他端口的配置文件,7001、7002、7003、7004、7005
    # 复制配置文件
    cp redis_7000.conf redis_7001.conf
    cp redis_7000.conf redis_7002.conf
    cp redis_7000.conf redis_7003.conf
    cp redis_7000.conf redis_7004.conf
    cp redis_7000.conf redis_7005.conf
    
    # 修改与端口号有关的配置,对应端口号与当前端口号一致,在所有的配置文件中均需要进行修改配置,具体修改内容如下所示:
    
    # 二.通用配置
    appendfilename "appendonly-7000.aof"
    
    # 三.集群配置
    port 7001 #配置端口,第98行
    cluster-config-file nodes-7001.conf  #集群节点配置文件,第1371行
    pidfile /root/data/redis/run/redis_7001.pid #进程文件ID对应文件,第279行
    
    # 四.配置对应目录
    logfile /root/data/redis/log/redis_7001.log #日志文件,第292行
    dir /root/data/redis/data/7001 #目录要提前创建好,第444行
    

    创建启动服务

    下面以7000端口为例创建系统服务,其余端口模仿此配置进行修改,需修改对应的端口号数据。

    # 创建服务文件
    vim /etc/systemd/system/redis-7000.service
    
    # 文件内容如下:
    
    [Unit]
    Description=The redis-cluster-server-7000 Process Manager
    After=syslog.target network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/redis/bin/redis-server /root/data/program/redis/data/conf/redis_7000.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    # 重新加载
    systemctl daemon-reload
    
    # 启动服务
    systemctl start redis-7000
    
    # 查看服务状态
    systemctl status redis-7000
    
    # 设置开机启动
    systemctl enable redis-7000
    

    制作启动文件

    # 系统对应的服务即可
    systemctl start redis-7000
    systemctl start redis-7001
    systemctl start redis-7002
    systemctl start redis-7003
    systemctl start redis-7004
    systemctl start redis-7005
    

    启动并验证Redis

    # 查看启动状态
    ps aux | grep redis
    

    开放防火墙端口

    # 查看防火墙状态
    systemctl status firewalld
    
    # 查看已经开放的端口
    firewall-cmd --list-ports
    
    # 开放端口
    firewall-cmd --zone=public --add-port=7000/tcp --permanent
    firewall-cmd --zone=public --add-port=7001/tcp --permanent
    firewall-cmd --zone=public --add-port=7002/tcp --permanent
    firewall-cmd --zone=public --add-port=7003/tcp --permanent
    firewall-cmd --zone=public --add-port=7004/tcp --permanent
    firewall-cmd --zone=public --add-port=7005/tcp --permanent
    
    # 开放通信端口
    firewall-cmd --zone=public --add-port=17000/tcp --permanent
    firewall-cmd --zone=public --add-port=17001/tcp --permanent
    firewall-cmd --zone=public --add-port=17002/tcp --permanent
    firewall-cmd --zone=public --add-port=17003/tcp --permanent
    firewall-cmd --zone=public --add-port=17004/tcp --permanent
    firewall-cmd --zone=public --add-port=17005/tcp --permanent
    
    # 重新加载配置
    firewall-cmd --reload
    
    # 查看端口开放状态
    firewall-cmd --list-ports
    

    创建集群

    用以下命令创建集群,--cluster-replicas 1 参数表示希望每个主服务器都有一个从服务器,这里则代表3主3从,前3个代表3个master,后3个代表3个slave。

    通过该方式创建的带有从节点的机器不能够自己手动指定主节点,Redis集群会尽量把主从服务器分配在不同机器上。

    # 进入启动脚本目录
    cd /root/data/redis
    
    # 启动集群
    ./cluster_start.sh
    
    # 创建集群
    redis-cli -a tdfdsfnkinki.net --cluster create 192.168.110.129:7000 192.168.110.129:7001 192.168.110.129:7002 192.168.110.129:7003 192.168.110.129:7004 192.168.110.129:7005 --cluster-replicas 1
    
    # 确认对应主从节点配置信息,没有问题后输入yes即可,输出的信息如下所示:
    
    [root@localhost redis]# redis-cli -a ttknoa@cnki.net --cluster create 192.168.110.129:7000 192.168.110.129:7001 192.168.110.129:7002 192.168.110.129:7003 192.168.110.129:7004 192.168.110.129:7005 --cluster-replicas 1
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    >>> Performing hash slots allocation on 6 nodes...
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    Master[2] -> Slots 10923 - 16383
    Adding replica 192.168.110.129:7004 to 192.168.110.129:7000
    Adding replica 192.168.110.129:7005 to 192.168.110.129:7001
    Adding replica 192.168.110.129:7003 to 192.168.110.129:7002
    >>> Trying to optimize slaves allocation for anti-affinity
    [WARNING] Some slaves are in the same host as their master
    M: a91202256714e5c1988e651e0561f36fa3e893af 192.168.110.129:7000
       slots:[0-5460] (5461 slots) master
    M: 9e9a9dd3256aef33108c33955237b593df64448c 192.168.110.129:7001
       slots:[5461-10922] (5462 slots) master
    M: e6c4b9ead90526d54713f5471f4bdb763a32156f 192.168.110.129:7002
       slots:[10923-16383] (5461 slots) master
    S: 1c1a7082395374d3364f856317afaaec01251c9a 192.168.110.129:7003
       replicates e6c4b9ead90526d54713f5471f4bdb763a32156f
    S: 81880bd5afd523932df5f201141fbca2c422d267 192.168.110.129:7004
       replicates a91202256714e5c1988e651e0561f36fa3e893af
    S: c7f24bdc1d7648f1841d3a958d108279bd552025 192.168.110.129:7005
       replicates 9e9a9dd3256aef33108c33955237b593df64448c
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join
    ..
    >>> Performing Cluster Check (using node 192.168.110.129:7000)
    M: a91202256714e5c1988e651e0561f36fa3e893af 192.168.110.129:7000
       slots:[0-5460] (5461 slots) master
       1 additional replica(s)
    M: e6c4b9ead90526d54713f5471f4bdb763a32156f 192.168.110.129:7002
       slots:[10923-16383] (5461 slots) master
       1 additional replica(s)
    S: c7f24bdc1d7648f1841d3a958d108279bd552025 192.168.110.129:7005
       slots: (0 slots) slave
       replicates 9e9a9dd3256aef33108c33955237b593df64448c
    M: 9e9a9dd3256aef33108c33955237b593df64448c 192.168.110.129:7001
       slots:[5461-10922] (5462 slots) master
       1 additional replica(s)
    S: 1c1a7082395374d3364f856317afaaec01251c9a 192.168.110.129:7003
       slots: (0 slots) slave
       replicates e6c4b9ead90526d54713f5471f4bdb763a32156f
    S: 81880bd5afd523932df5f201141fbca2c422d267 192.168.110.129:7004
       slots: (0 slots) slave
       replicates a91202256714e5c1988e651e0561f36fa3e893af
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    

    集群其他操作

    # 连接到集群上(任何一个节点即可),进行集群信息的查看
    redis-cli -c -h 192.168.110.129 -p 7000 -a tdfdsfnki.net
    
    # 查看节点信息
    cluster nodes
    
    # 查看集群信息
    cluster info
    
    # 查看槽位信息
    cluster slots
    
    # 计算某个key的槽位
    cluster keyslot xxx
    
    # 关闭redis
    ./redis-cli shutdown
    #直接结束线程
    kill -p pid
    

    注意

    这里是在一台服务器部署的,所以各个redis实例之间是可以相互通信的,如果是多服务器部署cluster,除了保证redis基础端口开放,还要保证cluster的通信端口开放,即 通信端口=基础端口号 + 10000 。

    主节点上有槽位,删除前必须先把槽位迁移。

    新加进去的节点默认都为master主节点。

    当被删除掉的节点重新起来之后不能自动加入集群,但其和主的复制还是正常的,也可以通过该节点看到集群信息(通过其他正常节点已经看不到该被del-node节点的信息)。

    如果想要再次加入集群,则需要先在该节点执行cluster reset,再用add-node进行添加,进行增量同步复制。

  • 相关阅读:
    价值观
    周记 改
    周记
    C语言问卷调查
    icon踩坑记录
    console.log(a)和console.log(window.a)的区别?
    记录一次微信二次分享的优化过程
    在jQuery中使用自定义属性
    10个JS技巧
    日常工作总结 2019/10/10
  • 原文地址:https://www.cnblogs.com/zhang-guansheng/p/14647271.html
Copyright © 2011-2022 走看看