• 在三台服务器,搭建redis三主三从集群


    一、资源准备

    1、准备三台服务器H1、H2、H3

    172.26.237.83 H1
    172.26.237.84 H2
    172.26.237.85 H3

    二、配置服务器

    1、在H1服务器设置SSH免密登录;在H1生成RSA公钥和私钥(在H1操作)

    (1)执行ssh-keygen -t rsa命令
    (2)进入生成密钥所在的文件目录cd /root/.ssh/
    (3)将公钥(名为id_rsa.pub文件)追加到认证文件(名为authorized_keys文件),先后执行以下指令:

    ssh-copy-id 172.26.237.83
    ssh-copy-id 172.26.237.84
    ssh-copy-id 172.26.237.85

    (注意:这里的IP是H1、H2、H3内网IP,执行后需要输入yes和服务器密码)

    2、配置域名解析文件(负责将主机名称映射到相应的IP地址

    (1)在root目录创建env目录,并进入env目录下执行以下命令

    cat > /root/env/hosts.txt <<EOF
    172.26.237.83 H1
    172.26.237.84 H2
    172.26.237.85 H3
    EOF
    
    cat /root/env/hosts.txt
    cat /root/env/hosts.txt >> /etc/hosts

     (2)在每个节点进入env创建redis源配置文件,命名为redis-env.conf

    echo -e "port 7001
    cluster-enabled yes
    daemonize yes
    dir /root/soft/7001
    cluster-config-file nodes-7001.conf
    pidfile "/root/soft/7001/redis-7001.pid"
    logfile "/root/soft/7001/redis-7001.log"
    appendonly yes" > "redis-env.conf"

     配置文件说明:

    port 7000
    cluster-enabled yes
    dir /root/soft/7000
    cluster-config-file nodes-7000.conf
    pidfile /root/soft/7000/redis-7000.pid
    logfile /root/soft/7000/redis-7000.log
    appendonly yes
    daemonize yes
    protected-mode no

    3、在各个节点下载安装redis安装包

    (1)创建/root/soft目录

    mkdir -p /root/soft

    (2)下载安装包、解压、并进行编译

    cd /root/soft
    # 下载
    wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    # 解压
    tar -zxvf redis-5.0.5.tar.gz

    # cd redis-5.0.5 进行编译
    make
     

    4、指定配置文件

    (1)创建/root/soft/7000目录与/root/soft/7001目录

    cd /root/soft/
    mkdir 7000
    cd /root/soft/
    mkdir 7001

    (2)将之前创建的源配置文件拷贝到7000和7001目录下

    cd /root/env
    cp -R redis-env.conf /root/soft/7000/redis.conf
    cp -R redis-env.conf /root/soft/7001/redis.conf

    (3)分别进入7000和7001目录,修改redis.conf配置(修改成对应的端口),并检查文件路径是否正确

    (4)启动redis-server服务

    cd redis-5.0.5
    ./src/redis-server ../7000/redis.conf
    ./src/redis-server ../70001/redis.conf

    启动redis-server需要注意,守护进程需要打开,不然启动的时候是不成功的

    (5)检查是否启动成功

    ps -ef |grep redis

    5、创建集群(在H1操作)

    三主三从架构说明

    三台服务器,启动6个实例,形成三主三从,其中存储相同数据的主从节点不能落在同一台机器上,目的是防止部署redis的虚拟机宕机从而造成主从节点全部失效。实验机器的地址与端口如下:

    172.26.237.83  7000 7001
    172.26.237.84 7000 7001
    172.26.237.85  7000 7001

    为了使用主从节点不落在同一台机器上

    使用如下命令:每台ip+port交叉(没有找到命令指定主从节点的关系的方法).

    在目录下redis-5.0.5 执行

    ./src/redis-cli --cluster create --cluster-replicas 1 172.26.237.83:7000 172.26.237.84:7001 172.26.237.84:7000 172.26.237.85:7001 172.26.237.85:7000 172.26.237.83:7001

    # 根据提示输入yes

    集群创建成功,如下图:

    6、测试

    1)cd /root/soft/redis-5.0.5
    (2)进入redis客户端
      ./src/redis-cli -c -h H1 -p 7000
    (3)输入cluster info 查看集群健康状态
    (4)输入cluster nodes 查看节点健康状态

    三、搭建过程遇过的异常

    1、配置文件的保护模式没有修改成no

    (1)配置文件修改前

    port 7000
    cluster-enabled yes
    dir /root/soft/7000
    cluster-config-file nodes-7000.conf
    pidfile /root/soft/7000/redis-7000.pid
    logfile /root/soft/7000/redis-7000.log
    appendonly yes
    daemonize yes

     抛出异常如下-->

    [ERR] Node 172.26.237.83:7000 DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

     修改后配置文件,将保护模式修改成no;(protected-mode no)

    port 7000
    cluster-enabled yes
    dir /root/soft/7000
    cluster-config-file nodes-7000.conf
    pidfile /root/soft/7000/redis-7000.pid
    logfile /root/soft/7000/redis-7000.log
    appendonly yes
    daemonize yes
    protected-mode no

     2、redis配置了密码,创建集群的时候没有输入密码,也会报错

    (1)配置文件如下:

    bind 172.26.237.83
    port 7000
    cluster-enabled yes
    dir /root/soft/7000
    cluster-config-file nodes-7000.conf
    pidfile /root/soft/7000/redis-7000.pid
    logfile /root/soft/7000/redis-7000.log
    appendonly yes
    daemonize yes
    protected-mode yes
    requirepass 0123456789

     注意:绑定地址、保护模式设置为yes,密码最好一起设置!!

    创建集群报错前的命令:

    ./src/redis-cli --cluster create --cluster-replicas 1 172.26.237.83:7000 172.26.237.84:7001 172.26.237.84:7000 172.26.237.85:7001 172.26.237.85:7000 172.26.237.83:7001

    报错如下-->

    [ERR] Node 172.26.237.83:7000 NOAUTH Authentication required.

    修改后的命令:

    ./src/redis-cli --cluster create --cluster-replicas 1 172.26.237.83:7000 172.26.237.84:7001 172.26.237.84:7000 172.26.237.85:7001 172.26.237.85:7000 172.26.237.83:7001 -a 0123456789

    3。如果服务器开启了防火墙,需要开放对应的端口

    在防火墙中对端口 7000 7001开放:
    
    firewall-cmd --zone=public --add-port=7000/tcp --permanent
    
    firewall-cmd --zone=public --add-port=7001/tcp --permanent
    
    firewall-cmd --reload
  • 相关阅读:
    LeetCode() Rotate Image
    LeetCode() Sort Colors
    LeetCode() Spiral Matrix
    LeetCode() Find Minimum in Rotated Sorted Array
    LeetCode(169)Majority Element and Majority Element II
    LeetCode(88) Merge Sorted Array
    LeetCode(283) Move Zeroes
    sql临时表和表变量
    自增长字段自定义
    [转]作者:朱 茂海 CentOS安装iRedMail web邮件服务器
  • 原文地址:https://www.cnblogs.com/yfacesclub/p/11847361.html
Copyright © 2020-2023  润新知