生产环境部署Redis Cluster集群

作者: Johnnian | 来源:发表于2017-07-01 23:03 被阅读298次

    本文同步于个人Github博客:https://github.com/johnnian/Blog/issues/9,欢迎留言。

    软件版本: redis版本3.2.9(官方稳定版本)

    说明:redis对应的包,是我在CentOS 6.8上编译过,并且编写了一些脚本,方便快速配置Redis Cluster。
    该包已经开源,感兴趣的可以点击前往:EasyRedisCluster

    在生产的服务器上,使用3台服务器,每台服务器开启两个Redis 实例,组成Redis Cluster:

    局域网节点

    下面是 Redis Cluster 的安装步骤:

    步骤1:拷贝安装包到 home 目录

    1、拷贝 redis_cluster.tar.gz 到 home目录;

    2、解压到 home 目录:

    [root@ec7e56056c01 ~]# tar -zxvf redis_cluster.tar.gz
    

    3、添加到环境变量

    [root@ec7e56056c01 bin]# vi /etc/bashrc
    
    #Redis Cluster config
    REDIS_CLUSTER_HOME=/root/redis_cluster
    PATH=$REDIS_CLUSTER_HOME/bin:$PATH
    export PATH REDIS_CLUSTER_HOME
    
    [root@ec7e56056c01 bin]# source /etc/bashrc
    

    步骤2:安装 Ruby 环境

    [root@ec7e56056c01 ~]# yum -y install ruby
    [root@ec7e56056c01 ~]# yum -y install rubygems
    [root@ec7e56056c01 ~]# gem install redis  #这一步安装会慢一些
    

    步骤3:配置集群

    1、修改每个节点的配置信息
    注:假设需要在同一台机子上部署更多节点,可以复制一份为nodeX,修改对应的端口,nodes.conf 位置。

    [root@ec7e56056c01 ~]# vi redis_cluster/node1/redis.conf
    port 7000
    cluster-enabled yes
    cluster-config-file /root/redis_cluster/node1/nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    bind <内网IP>
    
    [root@ec7e56056c01 ~]# vi redis_cluster/node2/redis.conf
    port 7001
    cluster-enabled yes
    cluster-config-file /root/redis_cluster/node2/nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    bind <内网IP>
    

    配置文件的 bind 默认是 bind 本机,因为在局域网部署集群,设置成 局域网的本机IP,如 172.17.0.1

    2、设置服务器的防火墙端口

    在生产情况下,服务器的防火墙是开着的,因此需要设置防火墙端口,让集群中的节点间可以彼此通讯。

    上面的配置中,把redis的端口设置成 7000,因此防火墙需要开通 7000 对外端口。

    但是在实际部署的过程中发现,单单开 7000 端口,无法顺利搭建集群,发现集群脚本一直处于等待状态...

    组建集群报错

    看到这个,想到平时在自己本地用Docker搭建,都是秒速创建完成,于是推测: 应该是防火墙没开某个端口。

    查了一些资料,发现, Redis 集群的搭建,默认情况下会另外开一个端口用于节点之间通讯( 新端口号 = 开通的端口 +10000,即 我原先的端口是7000, 节点之间通讯的端口就是 17000),开通之后,集群就搭建成功了~

    下面是配置防火墙的命令:

    [root@c43bfab6f744 ~] vi /etc/sysconfig/iptables
    # 在 -A INPUT -i lo -j ACCEPT 后添加
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 7001 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 17000 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 17001 -j ACCEPT
    
    [root@c43bfab6f744 ~] service iptables restart
    

    3、分别启动每个节点的Redis
    注:请根据实际的节点,修改下 start.sh 的内容

    [root@ec7e56056c01 ~]# ./redis_cluster/start.sh
    

    4、选择任意一个节点,配置集群启动脚本信息,并且执行脚本
    注:将下面的IP改为真实的内网IP地址

    [root@ec7e56056c01 ~]# vi redis_cluster/first_init_cluster.sh
    #!/bin/sh
    redis-trib.rb create --replicas 1 172.17.0.1:7000 172.17.0.1:7001 172.17.0.2:7002 172.17.0.2:7003 172.17.0.3:7004 172.17.0.3:7005
    
    [root@ec7e56056c01 ~]# ./redis_cluster/first_init_cluster.sh
    

    相关文章

      网友评论

        本文标题:生产环境部署Redis Cluster集群

        本文链接:https://www.haomeiwen.com/subject/wlngcxtx.html