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

  • 相关阅读:
    使用exe4j将java项目打成exe执行程序
    使用exe4j将java项目打成exe执行程序
    使用exe4j将java项目打成exe执行程序
    使用exe4j将java项目打成exe执行程序
    Java 数组 之 二维数组
    Java 数组 之 二维数组
    自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/ZeroSunny/p/12704901.html
Copyright © 2011-2022 走看看