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进行添加,进行增量同步复制。

  • 相关阅读:
    part11-1 Python图形界面编程(Python GUI库介绍、Tkinter 组件介绍、布局管理器、事件处理)
    part10-3 Python常见模块(正则表达式)
    Cyclic Nacklace HDU
    模拟题 Right turn SCU
    状态DP Doing Homework HDU
    Dp Milking Time POJ
    区间DP Treats for the Cows POJ
    DP Help Jimmy POJ
    Dales and Hills Gym
    Kids and Prizes Gym
  • 原文地址:https://www.cnblogs.com/zhang-guansheng/p/14647271.html
Copyright © 2011-2022 走看看