Linux搭建redis集群

1.安装redis 

# 由于安装 redis 需进行编译
# 我们需要先安装 gcc 环境,如果已经存在 gcc 则忽略
yum -y install gcc gcc-c++ kernel-devel
# 如果为内网环境无法 yum 安装,可通过 rpm 包安装
# 这里我们就不进行演示了
# 注意:rpm 涉及依赖,需要找到各种依赖包
# 解压缩 redis-4.0.8.tar.gz 包
tar -zxvf redis-4.0.8.tar.gz
# 将 redis-4.0.8 移至 /usr/local/下
mv redis-4.0.8 /usr/local/
# 切换至解压后的 redis-4.0.8 目录
cd /usr/local/redis-4.0.8
# 编译
make
# 如果提示zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
# 执行:make MALLOC=libc
# 切换至 src 目录
cd src
# 编译且安装
make install

2.修改配置文件

# 打开 redis 配置文件
vim /usr/local/redis-4.0.8/redis.conf

 (1)修改redis-4.0.8/redis.conf文件中的daemonize属性为yes

(2)注释掉bind 127.0.0.1,该属性将导致redis只能从本地发起访问,其他域名或IP无法访问

或设置绑定ip,即服务器实际ip

(3)修改端口(按实际需要修改);修改redis-4.0.8/redis.conf文件中的port属性   默认端口6379

3.创建集群文件

# 切换至 redis-4.0.8 目录
cd /usr/local/redis-4.0.8
# 创建 redis_cluster 集群目录
mkdir redis_cluster
# 切换至 redis_cluster 目录
cd redis_cluster/
# 创建 7000-7005 目录
mkdir {7000..7005}
# 查看 7001-7005 目录是否存在
ls
7000  7001  7002  7003  7004  7005
# 拷贝 redis.conf 配置文件到 7000目录
cp /usr/local/redis-4.0.8/redis.conf 7000/
# 修改 7000 下 redis.conf 配置文件
vim 7000/redis.conf

(1)修改端口(按实际需要修改);即redis-4.0.8/redis.conf中的port属性,这里我们改为7000

(2)开启aof持久化以及aof持久化生成的文件

(3)开启集群功能

(4)集群节点的配置文件

# 切换至 7000 目录下
cd 7000/
# 将 redis.conf 分别复制到 7001-7006 目录
cp redis.conf ../7001
cp redis.conf ../7002
cp redis.conf ../7003
cp redis.conf ../7004
cp redis.conf ../7005
cp redis.conf ../7006
# 将 7001-7005 各个 redis.conf 配置文件端口
# 以及aof持久化生成的文件和集群节点的配置文件修改为对应的端口号
# 即 7001-7005
# 或者依次打开 7001-7005 目录依次修改
# 可采用 sed 和 vim
sed -i "s/7000/7001/g" ../7001/redis.conf
sed -i "s/7000/7002/g" ../7002/redis.conf
sed -i "s/7000/7003/g" ../7003/redis.conf
sed -i "s/7000/7004/g" ../7004/redis.conf
sed -i "s/7000/7005/g" ../7005/redis.conf
# 查看各个配置文件是否更改成功
cat ../7001/redis.conf | grep 7001
cat ../7002/redis.conf | grep 7002
cat ../7003/redis.conf | grep 7003
cat ../7004/redis.conf | grep 7004
cat ../7005/redis.conf | grep 7005
# 切换至 redis_cluster 目录
cd ../redis_cluster/
# 分别启动 7001-7005 的 redis
redis-server 7000/redis.conf
redis-server 7001/redis.conf
redis-server 7002/redis.conf
redis-server 7003/redis.conf
redis-server 7004/redis.conf
redis-server 7005/redis.conf
# 查看 redis 是否启动
ps -ef| grep redis
root      18839      1  0 22:58 ?        00:00:00 redis-server 192.168.112.34:7000 [cluster]
root      18843      1  0 22:58 ?        00:00:00 redis-server 192.168.112.34:7001 [cluster]
root      18847      1  0 22:58 ?        00:00:00 redis-server 192.168.112.34:7002 [cluster]
root      18851      1  0 22:59 ?        00:00:00 redis-server 192.168.112.34:7003 [cluster]
root      18855      1  0 22:59 ?        00:00:00 redis-server 192.168.112.34:7004 [cluster]
root      18859      1  0 22:59 ?        00:00:00 redis-server 192.168.112.34:7005 [cluster]
root      18865   2891  0 22:59 pts/1    00:00:00 grep --color=auto redis

4.部署集群

(1)源码安装ruby依赖,返回安装软件目录

# 将下载好的 ruby 源码包上传至服务器
# 解压 ruby 安装包
tar -zxvf ruby-3.0.3.tar.gz -C /usr/local/
# 也可通过 yum 安装 ruby
# 这里我们二选一 自行选择
# yum -y install ruby
# 移动至 ruby-3.0.3 目录
cd /usr/local/ruby-3.0.3/
# 编译安装
./configure
make
make install
# 查看 ruby 版本
ruby -v
# 出现以下信息则表示安装成功
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]

(2)安装集群管理工具

# 将下载好的 redis-4.0.3.gem 上传至 /usr/local/redis-4.0.8/
# 切换至 /usr/local/redis-4.0.8 目录
cd /usr/local/redis-4.0.8/
# 安装集群管理工具
gem install -l redis-4.0.3.gem
# 输出以下内容则表示成功
Successfully installed redis-4.0.3
Parsing documentation for redis-4.0.3
Installing ri documentation for redis-4.0.3
1 gem installed

(3)将集群管理程序复制到/usr/local/bin/

cp /usr/local/redis-4.0.8/src/redis-trib.rb /usr/local/bin/redis-trib

(4)创建集群

redis-trib create --replicas 1 192.168.112.34:7000 192.168.112.34:7001 192.168.112.34:7002 192.168.112.34:7003 192.168.112.34:7004 192.168.112.34:7005
# 输出以下内容
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.112.34:7000
192.168.112.34:7001
192.168.112.34:7002
Adding replica 192.168.112.34:7003 to 192.168.112.34:7000
Adding replica 192.168.112.34:7004 to 192.168.112.34:7001
Adding replica 192.168.112.34:7005 to 192.168.112.34:7002
M: 2f4dbcd260b4a532754cadce92dfe40346f474a9 192.168.112.34:7000
 slots:0-5460 (5461 slots) master
M: b363376598db2e278fd3d79013ceb7e0570e17ee 192.168.112.34:7001
 slots:5461-10922 (5462 slots) master
M: d3cbd564a1393dd4f5e46f0f0206b093a1983c54 192.168.112.34:7002
 slots:10923-16383 (5461 slots) master
S: f33ea1093ac495e16e9c0f71f1bf8209ffe39f4f 192.168.112.34:7003
 replicates 034c9b6e9e42f4dcadc752df4a53260b4d2f474a
S: c79bf2c6bf3c9dc41995d886a451a166c3095c1b 192.168.112.34:7004
 replicates eb7e0570ed793376cb36278fd3598db2e01e17e3
S: 587f8445440a4c954d60bea22c75944532c5c1b2 192.168.112.34:7005
 replicates d3d83cbd563de41939b093c546f0a4a14f5f0206
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 192.168.112.34:7000)
M: 2f4dbcd260b4a532754cadce92dfe40346f474a9 192.168.112.34:7000
 slots:0-5460 (5461 slots) master
 1 additional replica(s)
M: d3cbd564a1393dd4f5e46f0f0206b093a1983c54 192.168.112.34:7002
 slots:10923-16383 (5461 slots) master
 1 additional replica(s)
M: b363376598db2e278fd3d79013ceb7e0570e17ee 192.168.112.34:7001
 slots:5461-10922 (5462 slots) master
 1 additional replica(s)
S: f33ea1093ac495e16e9c0f71f1bf8209ffe39f4f 192.168.112.34:7003
 slots: (0 slots) slave
 replicates 0346e92df4a532e42f4dbccadc754d260f474a9b
S: c79bf2c6bf3c9dc41995d886a451a166c3095c1b 192.168.112.34:7004
 slots: (0 slots) slave
 replicates 376598db2e01e17eeb36278fd3d7933ceb7e0570
S: 587f8445440a4c954d60bea22c75944532c5c1b2 192.168.112.34:7005
 slots: (0 slots) slave
 replicates e46f0a194a1393dd4f5f020683b093c54d3cbd56
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
# 注意:
# #######
#这里需要注意给redis-trib.rb的节点地址必须是不包含任何槽/数据的节点,否则会拒绝创建集群。
#--replicascas参数制定集群中每个主节点配置几个从节点,这里设置为1.节点列表顺序用于确定主从角色,先主节点之后是从节点

(5)检查集群完整性

redis-trib check 192.168.112.34:7000

(6)测试

# 连接 7000 redis
redis-cli -h 192.168.112.34 -p 7000 -c
192.168.112.34:7000> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_sent:414
cluster_stats_messages_received:414
# 添加数据
set 123456
-> Redirected to slot [10439] located at 192.168.112.34:7001
OK

5.添加或移除节点

(1)添加从节点

# 切换至 /usr/local/redis/redis_cluster/ 目录
cd /usr/local/redis-4.0.8/redis_cluster/
# 创建 7006 节点目录
mkdir 7006
# 将 7000 配置文件拷贝至 7006
cp 7000/redis.conf 7006/
# 修改配置文件内容
sed -i "s/7000/7006/g" 7006/redis.conf
# 启动 7006 节点
redis-server 7006/redis.conf
# 将创建集群时候产生的 hash 值复制
redis-trib.rb add-node --slave --master-id 2f4dbcd260b4a532754cadce92dfe40346f474a9 192.168.112.34:7006 192.168.112.34:7000

 (2) 添加主节点

# 创建 7007 节点目录
mkdir 7007
# 将 7000 配置文件拷贝至 7007
cp 7000/redis.conf 7007/
# 修改配置文件内容
sed -i "s/7000/7007/g" 7007/redis.conf
# 启动 7006 节点
redis-server 7007/redis.conf
# 槽点重新分配
redis-trib.rb reshard 192.168.112.34:7000
# 添加槽点后按照提示输入
Source node #1: all
Do you want to proceed with the proposed reshard plan(yes/no)? yes
# 出现 7007 则表示成功

 (3)删除节点

# 删除 7005 节点
redis-trib.rb del-node 192.168.112.34:7000 587f8445440a4c954d60bea22c75944532c5c1b2
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建redis集群,需要进行以下步骤: 1. 下载redis集群源码包并解压 2. 编译redis集群源码包 3. 创建redis集群配置文件 4. 启动redis集群 5. 验证redis集群是否正常工作 下面我们逐一介绍每个步骤的具体操作: 1. 下载redis集群源码包并解压 可以在redis官网上下载redis集群的源码包,下载地址为:https://redis.io/download。下载完成后,解压到指定的目录下。 2. 编译redis集群源码包 进入redis集群源码包所在的目录,使用以下命令编译redis集群: make 3. 创建redis集群配置文件 在redis集群源码包所在的目录下,创建一个名为redis_cluster.conf的配置文件,并添加以下内容: port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes 说明: port:redis集群中的一个节点所使用的端口号。 cluster-enabled:是否启用集群模式。 cluster-config-file:集群配置文件的名称。 cluster-node-timeout:如果一个节点在指定的时间内没有响应,那么它就被认为是不可用的。 appendonly:是否启用AOF持久化。 根据实际需要,可以添加更多的配置项。 4. 启动redis集群redis集群源码包所在的目录下,启动redis集群,使用以下命令: ./src/redis-trib.rb create --replicas 1 127.0.0.1:7000 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 说明: ./src/redis-trib.rb:redis集群管理工具。 create:创建一个新的集群。 --replicas:指定每个主节点的从节点数量。 127.0.0.1:7000 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:指定redis集群中的所有节点。 5. 验证redis集群是否正常工作 使用以下命令验证redis集群是否正常工作: ./src/redis-trib.rb check 127.0.0.1:7000 说明: check:检查集群中的所有节点是否正常工作。 127.0.0.1:7000:指定一个节点进行检查。 如果所有节点都正常工作,那么redis集群搭建成功了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值