当前位置: 首页 > >

部署Redis Cluster集群并开启密码认证和公网访问

发布时间:

如果只想简单的搭建Redis Cluster,不需要设置密码和公网访问,可以参考官方文档。


节点介绍

Cluster模式推荐最少有6个节点,本次实验搭建了6个节点,使用的端口为7000-7005。Cluster模式是数据分开存放在不同的节点上,如果有6个节点,通常设置3个主节点,每个主节点有一个从节点作为备份。正常情况下读写操作的是主节点,从节点会同步主节点的更变。当某个主节点挂了之后,其对应的从节点会变成主节点。如果一段时间后之前挂掉的主节点恢复了,它将变成从节点。如果某个主节点挂了之后,其对应的从节点也挂了,集群将不可访问。即每个主节点相互独立,从节点作为主节点的备份。


下载和编译

下载地址:https://redis.io/download
下载、解压并编译:


wget http://download.redis.io/releases/redis-6.0.5.tar.gz
tar -zxvf redis-6.0.5.tar.gz
cd cd redis-6.0.5
make

坑:6.x版本的Redis需要新版的gcc才能编译,centOS 7 自带的gcc版本为4.8.5,无法完成编译,需要升级版本。
解决方案:


yum install centos-release-scl
yum install devtoolset-9-gcc*
# 仅对当前bash生效
scl enable devtoolset-9 bash

以上操作仅对当bash生效,若想永久生效,按以下操作:


echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
source /etc/profile

编译完成后src目录下会生成几个可执行文件redis-benchmark redis-cli redis-sentinel redis-server等。


集群部署
复制文件

新建6个目录,并将redis.confsrc目录中的redis-server复制到每个目录,目录名称可随意,这里采用redis运行时的端口号作为目录的名称。


mkdir -p /usr/local/redis/cluster/7000
cp redis.conf /usr/local/redis/cluster/7000
cp src/redis-server /usr/local/redis/cluster/7000

重复以上操作,最终结果如下图:


修改配置

修改每个目录中的redis.conf,需要修改配置项如下:


bind:0.0.0.0(指定访问的网卡,默认为127.0.01只能本机访问,可以将此项改为0.0.0.0或本机IP,或者直接注释掉此项。)protected-mode:no (是否开启保护模式,开启后只能本机访问。此项默认为yes,需要设置为no。)port:7000(服务运行端口,如果6个节点运行在同一台机器上,每个节点的端口应不相同。)requirepass:123456(访问密码,设置为需要的密码。建议每个节点密码相同。)masterauth:123456(主节点的密码,当从节点从主节点同步数据时,需要提供主节点的密码。一般与访问密码相同。)cluster-enabled :yes(是否开启cluster模式,默认为no,需要设置为yes。)cluster-config-file:nodes.conf (保存cluster中每个节点信息的文件,该文件会自动生成,这里设置的是文件保存的位置。)cluster-node-timeout:5000(超时多长时间后判断节点挂掉。)appendonly:yes(开启AOF持久化)
创建集群

启动每个节点:


./redis-server redis.conf


创建集群:


./redis-cli --cluster create ip:7000 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 --cluster-replicas 1 -a 123456

这里的IP是公网IP,-a后面的参数是设置的访问密码,?cluster-replicas后面的参数是每个主节点对应的从节点的数量。
这时会自动分配主从节点,如果确认分配无误,输入yes即可创建cluster。
坑:在cluster模式中,每个节点除了要使用设置的访问端口以外,还需要使用访问端口加10000的端口号进行数据传输,所以在防火墙开放端口时也需要打开对应的端口,否则会出现wait…的提示。
在本例中,需要开放的端口号为7000-7005和17000-17005。


测试集群:
可以使用redis-cli来连接集群,-c代表使用cluster模式。


./redis-cli -c -h localhost -p 7000 -a 14789632

查看集群信息:

查看节点信息:


设置公网访问

现在通过公网访问会出现unknown cluster ip:7000的报错信息,这是因为在nodes.conf文件中某些节点的IP是内网IP。解决方法为如下:


    停止每个节点的进程。编辑每个节点的nodes.conf文件,将其中的内网IP换成公网IP。重新启动每个节点。



友情链接: