Redis随笔(四)Centos7 搭redis3.2.9集群-3主3从的6个节点服务

1、虚拟机环境

使用的Linux环境已经版本:

Centos 7   64位系统

 

主机ip

192.168.56.180

192.168.56.181

192.168.56.182

每台服务器是11从,实验3台服务器课成为33从。

Redis安装的项目目录、日志、配置文件等都存放在/root/svr/目录下。

2、下载相关的安装包以及解压

首先在192.168.56.180机器操作:

cd /root/svr
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar -zxvf redis-3.2.9.tar.gz

 3、安装

/root/svr/redis-3.2.9/目录下执行:

make install PREFIX=/root/svr/redis-3.2.9

 4、配置信息

创建集群配置、log日志、数据所在的文件夹

cd /root/svr/redis-3.2.9/
mkdir cluster-conf

 创建集群端口文件夹:

cd cluster-conf
mkdir 7777
mkdir 8888

 复制配置文件/root/svr/redis-3.2.9/cluster-conf/7777目录下:

cp /root/svr/redis-3.2.9/redis.conf  /root/svr/redis-3.2.9/cluster-conf/7777

修改7777目录下redis.conf配置文件

注意:找到相应的信息修改,或者把修改的信息全部注释掉,重新添加下面信息到头部,有利于以后修改和查看)

#注释掉ip或者设置0.0.0.0都是局域网访问
#bind 127.0.0.1
#端口号
port 7777

#指定了记录日志的文件
logfile "/root/svr/redis-3.2.9/cluster-conf/7777/redis.log"

#该目录要事先创建好,数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
dir /root/svr/redis-3.2.9/cluster-conf/7777/

#是否开启集群
cluster-enabled yes

#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息,
#这个文件并不需要手动配置,这个配置文件有Redis生成并更新,
#每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突。
cluster-config-file nodes.conf

#节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 5000

#默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了,
#但是redis如果中途宕机,会导致可能有几分钟的数据丢失,
#根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性,
#Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,
#每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
appendonly yes

 复制7777目录下redis.conf8888并修改端口及存储路径

cp /root/svr/redis-3.2.9/cluster-conf/7777/redis.conf /root/svr/redis-3.2.9/cluster-conf/8888 

 5、使用scp复制安装和配置好的redis复制到其他服务器上

已经在192.168.56.180机器配置好,复制到181182机器

在两台新机器上创建文件夹

mkdir /root/svr

 复制:

scp -r /root/svr/redis-3.2.9 root@192.168.56.181:/root/svr/
#输入181机器密码即可传输数据。
scp -r /root/svr/redis-3.2.9 root@192.168.56.182:/root/svr/
#输入182机器密码即可传输数据。

 6、启动3台机器的redis

3台机器执行启动方式:

/root/svr/redis-3.2.9/bin/redis-server /root/svr/redis-3.2.9/cluster-conf/7777/redis.conf &
/root/svr/redis-3.2.9/bin/redis-server /root/svr/redis-3.2.9/cluster-conf/8888/redis.conf &

 查看状态是否:

ps -ef|grep redis

 

7、创建集群

/root/svr/redis-3.2.9/src/redis-trib.rb create --replicas 1 192.168.56.180:7777 192.168.56.180:8888 192.168.56.181:7777 192.168.56.181:8888 192.168.56.182:7777 192.168.56.182:8888

无法创建,提示错误信息:

提示错误,是没有安装ruby这个插件,因为redis

集群创建的程序文件redis-trib,rb是由ruby来编写的,需要安装:

yum install ruby

 安装ruby完毕接着执行上面的创建集群命令

报错。这时候需要安装一些和rubyreids相关程序包和类库

yum install rubygems
gem install reids

 

报错,提示ruby版本需要大于2.2.2版本。CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2

需要安装个高版本的ruby

#安装curl
yum install curl
#安装rvm
#gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
#curl -L get.rvm.io | bash -s stable
#source /usr/local/rvm/scripts/rvm

 

查看rvm库中已知的ruby版本

rvm list known

 

安装一个ruby版本

rvm install 2.4.0

 

使用一个ruby版本

rvm use  2.4.0

 卸载一个已知版本

rvm remove 2.0.0

 查看现在版本

ruby --version

 

在重新安装ruby相关的redis就可以了

gem install redis

 

更新ruby版本、移除旧版本、重新安装reids完毕。接着执行上面的创建集群命令

还是出现错误:提示连接不上节点:

这时候需要排查一下错误:

第一:服务器是否关闭防火墙

systemctl status firewalld.service  #查看防火墙
systemctl stop firewlld.service    #关闭防火墙

 

(我这边已经关闭)

第二:是否所有的节点都启动

ps -ef|grep redis

 

我这边都已经启动并且正常运行

第三:服务器之间是否ping

ping 192.168.56.180

ping 192.168.56.181

ping 192.168.56.182

(我这边都能正常ping通过)

第四:是否可以telnet ip port  连接上

yum install telnet
telbet 192.168.56.180 7777

 出现错误:提示redis是受保护的,需要身份验证才可以进行:

这个问题解决可以有两种方法解决:

(1)修改配置文件redis.conf的权限参数设置为no,就是不需要权限验证

protected-mode no

 

(2)修改配置文件redis.conf的权限设置安全密码(密码自定义设置)

requirepass “111111”   #权限密码

 

我这里是第一解决方法,不需要权限,先kill启动的6redis进程,在修改配置文件。在启动reidis服务。

接着执行上面的创建集群命令。

创建集群启动成功。

 

8、测试redis集群

#登录客户端
./redis-cli -c -p 7777(或者8888)   #-c 参数:表示使用集群模式连接

在192.168.56.181:7777服务set值

 

在192.168.56.182:8888服务上get

 9、数据解析

完整搭建起来,管理的集群以及主从关联都在nodes.conf文件中生成的,我这边集群节点的生成配置文件数据显示

主/从                   节点id                       ip     prot   slot槽范围     槽数量     m/s   主从等比例  附近信息(如果是主节点记录为复制功能,如果是从节点,关联相应的主节点id)

M: 3f0d98eebfa18364a95ce7a578865ba7a3ef4493 192.168.56.180:7777 slots:0-5460 (5461 slots) master 1 additional replica(s)
S: 54a525c670ad92a45dccfa92164c0a5f220a10bc 192.168.56.180:8888 slots: (0 slots) slave replicates 078973835bb8a36aeef272c2e243a9d9d733ea96

M: 078973835bb8a36aeef272c2e243a9d9d733ea96 192.168.56.181:7777 slots:5461-10922 (5462 slots) master 1 additional replica(s)
S: 4e13f9dca80c63079e536b17eaa81cef8fcba624 192.168.56.182:8888 slots: (0 slots) slave replicates 3c0fa46c14e6d25c7e7b01079162baec86bd88e9

M: 3c0fa46c14e6d25c7e7b01079162baec86bd88e9 192.168.56.182:7777 slots:10923-16383 (5461 slots) master 1 additional replica(s)
S: d507f34a7dab6dc512a82427e3731967f5a69101 192.168.56.181:8888 slots: (0 slots) slave replicates 3f0d98eebfa18364a95ce7a578865ba7a3ef4493

 

 当节点挂了,nodes.conf会记录新的数据

当主节点挂了,因为集群会一直在监听集群中的主从节点的状态。加入一个主节点挂了,集群监听机制检查到,会对主节点的槽(数据)进行迁移,按照投票机制将主节点关联的从节点进行选举出一个充当主节点,因为我这里一个主节点关联一个从节点,所以只能是那个充当。

10、扩展知识

(1)持久层的配置和原理:rdb和aof

(2)哨兵、数据字段迁移、键空间迁移、在线迁移、redis-trib.rb的详解

(3)集群节点添加,删除

(4)Jedis客户端对集群的数据操作:set、list、key/value、hash等

(5)将key值执行CRC16算法对18384个槽进行取模

(6)压测.........

 

转载于:https://www.cnblogs.com/c-xiaohai/p/8296396.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在CentOS 7上部署Redis Cluster集群的步骤如下: 1. 安装Redis。可以使用yum安装,命令为:yum install redis。 2. 在每台机器上配置redis.conf文件。需要修改的配置项包括:bind IP地址、端口号、cluster-enabled yes、cluster-config-file nodes.conf、cluster-node-timeout 15000。 3. 启动每台机器上的Redis服务。命令为:systemctl start redis。 4. 在一台机器上执行redis-cli --cluster create命令,创建集群。命令格式为:redis-cli --cluster create <host:port> <host:port> <host:port> … --cluster-replicas <replicas>。 5. 验证集群是否正常工作。可以使用redis-cli --cluster info命令查看集群信息,使用redis-cli --cluster nodes命令查看集群中的节点。 注意: - 安装redis-trib.rb - redis-cli --cluster create 参数的IP是各自机器的IP,端口号应该相同 - 集群中可以有多个节点 - 如果集群已经存在,那么需要在新加入节点上进行redis-trib add-node ### 回答2: 在CentOS 7上部署Redis 7的集群,需要执行以下步骤: 1. 安装Redis 7: 首先,确保已经安装了CentOS 7的操作系统。然后,通过以下命令安装Redis 7的依赖项: ```bash sudo yum install epel-release sudo yum install redis ``` 安装完成后,验证Redis是否成功安装: ```bash redis-cli --version ``` 如果输出了Redis的版本信息,则表示安装成功。 2. 配置Redis集群节点: 创建redis-cluster文件夹,然后在该文件夹下创建6个目录,分别用于存储6个节点的配置和数据: ```bash mkdir redis-cluster cd redis-cluster mkdir node1 node2 node3 node4 node5 node6 ``` 在每个节点文件夹下创建redis.conf配置文件,并进行相应的配置。至少需要配置以下参数: ```bash bind 0.0.0.0 port <port_number> cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout <timeout_in_ms> appendonly yes ``` 其中,<port_number>是每个节点的端口号,<timeout_in_ms>是集群节点通信的超时时间。 3. 启动Redis集群节点: 使用以下命令启动每个节点: ```bash redis-server /path/to/redis-conf-file.conf ``` 比如,启动第一个节点: ```bash redis-server /path/to/redis-cluster/node1/redis.conf ``` 4. 创建Redis集群: 使用以下命令创建Redis集群: ```bash redis-cli --cluster create <node1_ip:port> <node2_ip:port> ... --cluster-replicas 1 ``` 比如,创建Redis集群的命令为: ```bash redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1 ``` 这个命令会将节点连接成一个集群,并指定1个副本。 5. 验证Redis集群是否正常工作: 使用以下命令验证Redis集群是否正常工作: ```bash redis-cli -c -p <any_port> ``` 比如,连接到第一个节点Redis CLI: ```bash redis-cli -c -p 7001 ``` 然后,运行一些Redis命令进行验证: ```bash set key1 value1 get key1 ``` 至此,Redis 7的集群在CentOS 7上部署完成。可以通过添加更多的节点来扩展集群,并根据需要调整配置参数。 ### 回答3: 在CentOS 7上部署Redis 7的集群要可以通过以下步骤来完成: 1. 安装Redis 7:在CentOS 7上安装Redis 7可以使用源码编译安装或者使用软件包管理工具(如yum)来安装。可以从Redis官方网站下载最新版本的源码并编译安装,或者使用以下命令通过yum安装: ``` $ sudo yum update $ sudo yum install redis ``` 2. 配置Redis 7:Redis的配置文件位于`/etc/redis.conf`。可以使用文本编辑器(如vi或nano)打开该文件并进行必要的配置更改,以确保集群设置能够正常工作。配置参数包括端口、绑定IP、密码等。 3. 创建集群:使用Redis提供的`redis-cli`命令行工具创建Redis集群集群至少需要3个节点才能正常工作。可以通过以下命令创建Redis集群: ``` $ redis-cli --cluster create <Node1IP>:<Port> <Node2IP>:<Port> <Node3IP>:<Port> ... ``` 其中,`NodeIP`和`Port`分别是节点的IP地址和端口号,具体根据实际情况进行填写。该命令会自动进行分区和数据分配。 4. 验证集群:在创建集群后,可以使用`redis-cli`连接到集群,并使用`cluster nodes`命令来验证集群的状态,以确保所有节点正常运行并连接到正确的集群。 ``` $ redis-cli -c -h <NodeIP> -p <Port> redis> cluster nodes ``` 该命令将返回当前集群节点信息,包括节点ID、IP地址、端口、角色等。 5. 扩展和管理集群:一旦集群正常运行,可以通过添加新的节点或对节点进行重新分区来扩展和管理集群。可以使用`redis-cli`命令行工具添加新节点,然后使用`cluster reshard`命令来重新分区。 以上是在CentOS 7上部署Redis 7集群的基本步骤。根据具体的需求和情况,还可以进行更深入的集群配置和管理。请注意,集群的设置和管理需要仔细考虑,并且需要深入了解Redis集群的工作原理和最佳实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值