zoukankan      html  css  js  c++  java
  • 虚拟机CentOS7.0 部署Redis 5.0.8 集群

    安装GCC环境

    版本查看

    gcc -v

    gcc安装

    yum install gcc-c++

    ruby安装

    yum install centos-release-scl-rh
    yum install rh-ruby23  -y
    scl  enable  rh-ruby23 bash

    rubygems安装

    yum install rubygems

    离线安装Redis-5.0.8

    下载redis安装包

    https://redis.io/download

    根目录创建文件夹/home

    mkdir redis

    安装Redis

    上传redis安装包 至 /home/redis/

    解压

    tar -zxvf redis-3.2.9.tar.gz

    转到安装包所在位置

    cd /home/redis/redis-5.0.8

    安装

    make && make install

    配置Redis集群

    创建6个文件夹

    存放Redis6个不同端口的Redis配置

    cd /home/redis/
    mkdir 700{1,2,3,4,5,6} 

    转到目录

     cd usr/local/bin

    复制文件

    把【redis-cli】、【redis-server】复制到 700、1、2、3、4文件夹内。

    cp redis-cli redis-server /home/redis/7001
    cp redis-cli redis-server /home/redis/7002
    cp redis-cli redis-server /home/redis/7003
    cp redis-cli redis-server /home/redis/7004
    cp redis-cli redis-server /home/redis/7005
    cp redis-cli redis-server /home/redis/7006

    创建 redis.conf 文件

    在不同文件夹内创建并配置以下内容

    port 7001 #配置对应的端口
    daemonize yes
    appendonly yes
    cluster-enabled yes
    cluster-config-file "nodes.conf"
    cluster-node-timeout 5000
    logfile ""
    bind 192.168.137.4
    dir "/home/redis/7001"
    masterauth "passwd123" #统一先配置好访问密码
    requirepass "passwd123" #统一先配置好访问密码
    

    启动6个不同端口的redis添加服务设置自动启动

    转到目录

    cd /home/redis/redis-5.0.8/utils

    执行命令install_server.sh 配置各个端口

    /home/redis/7001/redis-server /home/redis/7001/redis.conf
    /home/redis/7002/redis-server /home/redis/7002/redis.conf
    /home/redis/7003/redis-server /home/redis/7003/redis.conf
    /home/redis/7004/redis-server /home/redis/7004/redis.conf
    /home/redis/7005/redis-server /home/redis/7005/redis.conf
    /home/redis/7006/redis-server /home/redis/7006/redis.conf

    以上为重复操作,在此不重复贴图。

    至此,可通过服务命令 控制6个redis 的关闭与启动:

    service redis_端口号 start | service redis_端口号 stop

    查看redis运行情况

    netstat -tnulp | grep redis
    ps aux | grep redis

    启动Redis集群

    cd home/redis
    redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 192.168.137.4:7004 192.168.137.4:7005 192.168.137.4:7006 -a passwd123

    设置iptables规则

    允许外部访问7001、2、3、4、5、6端口

    iptables -I INPUT 1 -p tcp -m state --state NEW -m tcp --dport 7001 -j ACCEPT
    service iptables save

    关闭firewalld防火墙

    systemctl stop firewalld.service
    systemctl disable firewalld.service

    PS:此时需要注意一点关于文件夹权限问题可能会导致,外部redis 连接不上。

    这里需要需要查看redis的文件夹权限是否为drwxrwxrwx

    若权限不足,执行命令

    chmod 777 redis

    解决:

    查看集群状态

    登录Redis集群【redis-cli -c -p 7001】测试:

    原理:redis客户端任意访问一个redis实例,如果数据不在该实例中,通过重定向引导客户端访问所需要的redis实例

    常用指令

    重新创建集群
    1.关闭redis【kill -9 redis】
    2.删除文件
    appendonly.aof、dump.rdb、nodes.conf
    3.重新执行集群创建【redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 192.168.137.4:700 192.168.137.4:7005 192.168.137.4:7006 -a passwd123】
    
    创建集群主节点
    redis-cli --cluster create 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 -a passwd123
    
    
    创建集群主从节点(cluster-replicas 参数为数字,1表示每个主节点需要1个从节点)
    redis-cli --cluster create 192.168.137.4:7001 192.168.137.4:7002 192.168.137.4:7003 192.168.137.4:7004 192.168.137.4:7005 192.168.137.4:7006 --cluster-eplicas 1 -a passwd123
    
    
    添加集群主节点(为一个指定集群添加节点,需要先连到该集群的任意一个节点IP(192.168.137.4:7001),再把新节点加入。该2个参数的顺序有要求:新加入的节点放前)
    redis-cli --cluster add-node 192.168.137.4:XXXX 192.168.137.4:XXXX -a passwd123
    
    
    添加集群从节点(把6382节点加入到6379节点的集群中,并且当做node_id为 117457eab5071954faab5e81c3170600d5192270 的从节点。如果不指定 --cluster-master-id 会随分配到任意一个主节点)
    redis-cli --cluster add-node 192.168.163.132:6382 192.168.163.132:6379 --cluster-slave --cluster-master-id 117457eab5071954faab5e81c3170600d5192270 -a asswd123
    
    
    删除节点(指定IP、端口和node_id 来删除一个节点,从节点可以直接删除,主节点不能直接删除,删除之后,该节点会被shutdown)
    redis-cli --cluster del-node 192.168.163.132:6384 f6a6957421b80409106cb36be3c7ba41f3b603ff -a passwd123
    注意:当被删除掉的节点重新起来之后不能自动加入集群,但其和主的复制还是正常的,
    也可以通过该节点看到集群信息(通过其他正常节点已经看不到该被del-node节点的信息)。
    如果想要再次加入集群,则需要先在该节点执行cluster reset,再用add-node进行添加,进行增量同步复制。
    
    检查集群(任意连接一个集群节点,进行集群状态检查)
    redis-cli --cluster check 192.168.137.4:7001 --cluster-search-multiple-owners -a passwd123
    
    
    集群信息查看(检查key、slots、从节点个数的分配情况)
    redis-cli --cluster info 192.168.137.4:7001 -a passwd123
    
    
    修复集群(修复集群和槽的重复分配问题)
    redis-cli --cluster fix 192.168.137.4:7001 --cluster-search-multiple-owners -a passwd123
    
    
    设置集群的超时时间 (连接到集群的任意一节点来设置集群的超时时间参数cluster-node-timeout)
    redis-cli --cluster set-timeout 192.168.137.4:7001 10000
    
    
    集群中执行相关命令(连接到集群的任意一节点来对整个集群的所有节点进行设置)
    redis-cli --cluster call 192.168.137.4:7001 config set requirepass passwd123
    redis-cli -a cc --cluster call 192.168.137.4:7001 config set masterauth passwd123
    redis-cli -a cc --cluster call 192.168.137.4:7001 config rewrite
    

    阿里云服务器部署注意事项

    安全组的配置

    集群总线端口为redis客户端连接的端口 + 10000
    如redis端口为7001
    则集群总线端口为17001
    所以所有服务器的需要开通redis的客户端连接端口和集群总线端口

    端口开放

    redis.conf ip默认不绑定以及注释

    假设在添加规则阶段报错

    #service iptables sav -> The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
    

    解决档案

    停止防火墙

    systemctl stop firewalld
    systemctl mask firewalld
    

    安装iptables-services

    yum install iptables-services

    设置开机启动防火墙

    systemctl enable iptables

    可以使用文中提及的iptables 例子添加规则

    本文参考:https://www.cnblogs.com/xuliangxing/p/7146868.htmlhttps://www.diandian100.cn/eb5223a5.htmlhttps://www.cnblogs.com/zhoujinyi/p/11606935.htmlhttps://blog.csdn.net/truong/article/details/52531103https://blog.csdn.net/xu_melon/article/details/79043320https://blog.csdn.net/tangyuan_sibal/article/details/88097191

  • 相关阅读:
    CSS之旅——第二站 如何更深入的理解各种选择器
    CSS之旅——第一站 为什么要用CSS
    记录一些在用wcf的过程中走过的泥巴路 【第一篇】
    asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
    asp.net mvc 之旅—— 第一站 从简单的razor入手
    Sql Server之旅——终点站 nolock引发的三级事件的一些思考
    Sql Server之旅——第十四站 深入的探讨锁机制
    Sql Server之旅——第十三站 对锁的初步认识
    Sql Server之旅——第十二站 sqltext的参数化处理
    Sql Server之旅——第十一站 简单说说sqlserver的执行计划
  • 原文地址:https://www.cnblogs.com/ZeroSunny/p/12704901.html
Copyright © 2011-2022 走看看