准备六台已经安装好的redis服务器
IP地址
192.168.114.128 (主机)
192.168.114.129 (主机)
192.168.114.130 (主机)
192.168.114.131 (备机)
192.168.114.132 (备机)
192.168.114.133 (备机)
注:主数量应为奇数,以便做选举判决。redis官方建意:整体集群最少需要准备6台。
在每台Liunx服务器上安装好redis,并测试能够成功启动。
redis安装教程点击这里(注:此步可以先跳过)
该文件夹夹用于存放redis分片集群
cd /usr/local/redis-cluster
例如,我当前由六台机器,那么我根据当前六台机器的IP器创建,对应的文件夹
192.168.114.128服务机上,创建递归文件夹 mkdir -p /usr/local/redis-cluster/128/data
192.168.114.129服务机上,创建递归文件夹 mkdir -p /usr/local/redis-cluster/129/data
192.168.114.130服务机上,创建递归文件夹 mkdir -p /usr/local/redis-cluster/130/data
192.168.114.131服务机上,创建递归文件夹 mkdir -p /usr/local/redis-cluster/131/data
192.168.114.132服务机上,创建递归文件夹 mkdir -p /usr/local/redis-cluster/132/data
192.168.114.133服务机上,创建递归文件夹 mkdir -p /usr/local/redis-cluster/133/data
每台服务机上不需要创建六个文件夹,只需要创建单个即可
该文件夹用来存放集群运行脚本
mkdir /usr/local/redis-cluster/bin
然后在redis的安装包中取得相关的运行脚本,并拷入该bin文件夹中
cd /home/redis-5.0.5/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
**注意:此bin文件只要在一台服务器节点中创建,不需要在每台服务器节点中创建,我这边是因为电脑虚拟机再增加一台可能会很卡,然后就只开了6台虚拟机。如果条件允许,开第七台虚拟机,存放集群运行脚本。
**
我这边将集群文件存放到了192.168.114.128节点上。
如果你在前面已经安装好redis,那么请把你的redis复制一份至/usr/local/redis-cluster/128
是每一个服务器下的该类文件中都需要一个redis实例
我这边安装好的目录为/usr/local/redis
cp -r /usr/local/redis /usr/local/redis-cluster/128
如果你前面并没有安装过redis,那么在指定redis安装目录时,指位置指到/usr/local/redis-cluster/128
最后一个文件夹 128。是根据你所创建的文件夹来命名的。
每一个服务器下的该类文件中都需要一个redis实例
make install PREFIX=/usr/local/redis-cluster/128
进入安装好的redis目录中,创建文件夹etc
mkdir /usr/local/redis-cluster/128/redis/etc
复制一份配置文件至redis实例中
cp /home/redis-5.0.5/redis.conf /usr/local/redis-cluster/128/redis/etc
vim /usr/local/redis-cluster/128/redis/etc/redis.conf
修改内容如下:
redis改为后台启动
daemonize yes
设置访问密码
requirepass 111
绑定的IP为当前机器的IP
bind 192.168.114.128
数据文件存放路径设置
dir /usr/local/redis-cluster/128/data/
端口号设置,我这里因为使用六台虚拟主机,所以我端口号没变,你们可以根据自己的实际环境而改变
port 6379
pid文件设置,这里的6379一定要与当前服务机的redis端口号对应
pidfile /usr/local/redis-cluster/128/redis/run/redis_6379.pid
启动集群模式
cluster-enabled yes
设置集群配置文件,这里的6379也要与当前服务机的redis端口号所对应
cluster-config-file nodes-6379.conf
设置超时时间
cluster-node-timeout 15000
开启AOF日志记录
appendonly yes
设置日志文件
logfile “/usr/local/redis-cluster/128/redis/logs/redis.log”
注:如果你在前面配置过主从配置,那么请把replicaof注释或删除
这里的双引号需要注意一下,CSDN博客把英文状态的下的双引号改为了中文双引号,你们在使用的时候记得修改成英文下的双引号。
最后就是建意配置文件拷贝一下,然后改点参数,我这边连续修改了六个配置文件,眼睛痛。
文档替换命令
%s/128/129
命令说明:
%s/[你所需要被替换的字符]/[你所需要替换后的字符]
mkdir /usr/local/redis-cluster/128/redis/run/
touche /usr/local/redis-cluster/128/redis/run/redis_6379.pid
mkdir /usr/local/redis-cluster/128/redis/logs
mkdir /usr/local/redis-cluster/128/redis/logs/redis.log
根据不同的机器,相关配置需要进行简单的修改,比如说文件夹,第一个机器为128,那么我这边的第二台为129,第三为130,以此类推。简单来说就是路径地址需要注意一下是否准确,ip是否与当前机器对应。
启动每台服务器的redis,查看是否启动成功
/usr/local/redis-cluster/128/redis/bin/redis-server /usr/local/redis-cluster/128/redis/etc/redis.conf
/usr/local/redis-cluster/129/redis/bin/redis-server /usr/local/redis-cluster/129/redis/etc/redis.conf
/usr/local/redis-cluster/130/redis/bin/redis-server /usr/local/redis-cluster/130/redis/etc/redis.conf
/usr/local/redis-cluster/131/redis/bin/redis-server /usr/local/redis-cluster/131/redis/etc/redis.conf
/usr/local/redis-cluster/132/redis/bin/redis-server /usr/local/redis-cluster/132/redis/etc/redis.conf
/usr/local/redis-cluster/133/redis/bin/redis-server /usr/local/redis-cluster/133/redis/etc/redis.conf
验证方法一:
在每台机器上出入命令,查看redis是否启动成功
ps -ef|grep redis
只要是出现了这种类似的信息说明配置成功。
验证方法二
进入redis控制台
/usr/local/redis-cluster/128/redis/bin/redis-cli -h 192.168.114.128 -p 6379 -a ‘111’
/usr/local/redis-cluster/129/redis/bin/redis-cli -h 192.168.114.129 -p 6379 -a ‘111’
/usr/local/redis-cluster/130/redis/bin/redis-cli -h 192.168.114.130 -p 6379 -a ‘111’
/usr/local/redis-cluster/131/redis/bin/redis-cli -h 192.168.114.131 -p 6379 -a ‘111’
/usr/local/redis-cluster/132/redis/bin/redis-cli -h 192.168.114.132 -p 6379 -a ‘111’
/usr/local/redis-cluster/133/redis/bin/redis-cli -h 192.168.114.133 -p 6379 -a ‘111’
输入ping,如果每台redis都返回pong,说明配置成功
开启6379、16379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=16379/tcp --permanent
更新防火墙规则
firewall-cmd --complete-reload
查看当前所开放的端口
firewall-cmd --zone=public --list-ports
当然你也可以选择关闭防火墙端口
临时关闭防火墙命令
systemctl stop firewalld
如果不开启对应端口,或者没有关闭防火墙
则会出现Waiting for the cluster to join一直在等待
原因:
redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
集群总线端口为redis客户端连接的端口 + 10000
如redis端口为6379
则集群总线端口为16379
故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口
/usr/local/redis-cluster/bin/redis-cli --cluster create 192.168.114.128:6379 192.168.114.129:6379 192.168.114.130:6379 192.168.114.131:6379 192.168.114.132:6379 192.168.114.133:6379 --cluster-replicas 1 -a 111
按下回车后记得输入yes
命令说明:
/usr/local/redis-cluster/bin/redis-cli:该运行文件存在于本文章中的第五步。
–cluster create:表示创建一个redis集群,需要注意的是前后注意空格。
–cluster-replicas 1:表示为集群中的每一个主节点指定一个从节点,即一比一的复制。需要注意的是前后注意空格。
-a 111:表示我每个redis节点都配置了密码,我的每台节点的redis节点密码都相同都为 111,如果你没有创建密码,那么不需要写入 -a 111,还有最后需要注意的是前后注意空格。
5.0的版本之前集群创建需要使用ruby脚本需要更多的操作,5.0之后可以使用redis-cli命令、
所以在5.0之后我们不再需要安装以下插件
yum install ruby、yum install rubygems、gem install redis
注意代码行上的空格,我这边因为没有注意空格,然后就报了错误
Invalid address format: 1 无效的地址格式
这里展示了三主三备。
192.168.114.128、192.168.114.129、192.168.114.130均为master
192.168.114.131、192.168.114.132、192.168.114.133均为slave
slots为hash值的区间。
输入登陆命令,登陆到 192.168.114.128,一定要加入 -c,代表我当前登陆是集群模式登陆的
./redis-cli -c -h 192.168.114.128 -p 6379 -a '111’
输入查看集群命令
cluster nodes
发现搭建成功
这里我插入了一个key为name的数据,现在会自动存储至 192.168.114.129中
证明我们搭建成功,没有问题。