生产环境部署Redis Cluster集群
Opened this issue · 0 comments
软件版本: 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