redis-cluster伪集群搭建

本文详细描述了如何在Linux系统中安装GCC和Ruby,下载并编译Redis源码,配置6个Redis实例组成伪集群,包括端口设置、密码配置、启动集群和验证集群状态的过程。
摘要由CSDN通过智能技术生成

1、搭建要求

需要 1台Linux虚拟机,6 个 redis 实例搭建伪集群。
需要运行在不同的端口 7001-7006

2、准备工作

2.1安装gcc

Redis 是 c 语言开发的。安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。

yum install gcc-c++

2.2使用yum命令安装 ruby (可以不安装旧版本使用ruby搭建集群需要安装)

yum install ruby
yum install rubygems

2.3将redis源码包上传到 linux 系统 ,解压redis源码包

cd /opt/data/
tar -zcvf redis-7.2.4.tar.gz 

2.4编译redis源码 ,进入redis源码文件夹(解压后的目录文件夹下)

make

2.5创建目录

2.5.1 创建redis-cluster目录
mkdir /usr/local/redis-cluster
2.5.2在redis-cluster下创建redis目录
mkdir /usr/local/redis-cluster/redis-1
mkdir /usr/local/redis-cluster/redis-2
mkdir /usr/local/redis-cluster/redis-3
mkdir /usr/local/redis-cluster/redis-4
mkdir /usr/local/redis-cluster/redis-5
mkdir /usr/local/redis-cluster/redis-6

2.6安装redis实例

在解压的redis-7.2.4目录中执行

make install PREFIX=/usr/local/redis-cluster/redis-1
make install PREFIX=/usr/local/redis-cluster/redis-2
make install PREFIX=/usr/local/redis-cluster/redis-3
make install PREFIX=/usr/local/redis-cluster/redis-4
make install PREFIX=/usr/local/redis-cluster/redis-5
make install PREFIX=/usr/local/redis-cluster/redis-6

2.7复制配置文件 将 /redis-7.2.4/redis.conf 复制到redis-x下的bin目录下

cp redis.conf /usr/local/redis-cluster/redis-1/bin
cp redis.conf /usr/local/redis-cluster/redis-2/bin
cp redis.conf /usr/local/redis-cluster/redis-3/bin
cp redis.conf /usr/local/redis-cluster/redis-4/bin
cp redis.conf /usr/local/redis-cluster/redis-5/bin
cp redis.conf /usr/local/redis-cluster/redis-6/bin

3、配置redis

3.1修改每个redis节点的配置文件redis.conf

端口号为 7001 - 7006
如我们需要修改文件中的port的值,需要按空格键,在使用/port,按enter键,就找到port。如果文件中有多个port,按N键就可以找到下一个port,只到找到为止

cd /usr/local/redis-cluster/redis-x/bin
vim redis.conf

需要修改的内容

bind 0.0.0.0
protected-mode no
port 7001
timeout 5000
cluster-enabled yes 
daemonize yes
cluster-enabled yes

配置说明

port:修改 Redis 端口
#bind 127.0.0.1:注释掉后外网就可以连接 Redis 了
cluster-enabled:设置为 yes 表示开启集群
cluster-config-file: 表示集群节点的配置文件
protected-mode:由于配置了密码登录,这里将 protected-mode 设置为 no 关闭保护模式。
daemonize:设置为 yes 表示允许 Redis 在后台启动。
requirepass:表示登录该 Redis 实例所需的密码
masterauth:由于每个节点都开启了密码认证,因此又增加 masterauth 配置,使得从机可以登录到主机上。
appendonly:开启aof文件
cluster-announce-ip:云服务器上部署需指定公网ip,每一个节点对外的公网IP
cluster-announce-bus-port:Redis总线端口,用于与其它节点通信,注意是在节点的port参数前面加1

3.4启动redis实例

cd /usr/local/redis-cluster/redis-x/bin/
./redis-server redis.conf

3.5查看启动状态

ps -ef | grep redis

3.6用redis-cli创建redis集群

进入到redis-1的bin目录下
无密码

cd /usr/local/redis-cluster/redis-1/bin/
./redis-cli --cluster create 192.168.134.102:7001 192.168.134.102:7002 192.168.134.102:7003 192.168.134.102:7004 192.168.134.102:7005 192.168.134.102:7006 --cluster-replicas 1

有密码

./redis-cli -a Your Password --cluster create 192.168.134.102:7001 192.168.134.102:7002 192.168.134.102:7003 192.168.134.102:7004 192.168.134.102:7005 192.168.134.102:7006 --cluster-replicas 1

出现如下代表成功

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

备注:旧版本搭建命令
./redis-trib.rb create –replicas 1 192.168.134.102:7001 192.168.134.102:7002 192.168.134.102:7003 192.168.134.102:7004 192.168.134.102:7005 192.168.134.102:7006

4、集群验证

4.1链接客户端

cd /usr/local/redis-cluster/redis-1/bin/

无密码

./redis-cli -c -h 192.168.134.102 -p 7001

有密码

./redis-cli -c -a qaz@123 -h 192.168.134.102 -p 7001

提示:-c表示集群模式,-a访问服务端密码,-h ip地址,-p 端口号

[root@localhost bin]# ./redis-cli -c -h 192.168.134.102 -p 7001
192.168.134.102:7001> keys *
(empty array)
192.168.134.102:7001> set name 'my name is redis'
-> Redirected to slot [5798] located at 192.168.134.102:7002
OK
192.168.134.102:7002> keys *
1) "name"
192.168.134.102:7002> get name
"my name is redis"
192.168.134.102:7002> 

4.2查看集群信息

cluster info
192.168.134.102:7002> 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:2
cluster_stats_messages_ping_sent:2982
cluster_stats_messages_pong_sent:3239
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:6222
cluster_stats_messages_ping_received:3239
cluster_stats_messages_pong_received:2983
cluster_stats_messages_received:6222
total_cluster_links_buffer_limit_exceeded:0

4.2查看节点列表

cluster nodes
192.168.134.102:7002> cluster nodes
7fa54707841a159c1c737108a7b679e846e84d2e 192.168.134.102:7004@17004 slave e4f191521ca80ebef45f75351abbe2e284504c92 0 1713282561384 1 connected
5aa6ddb016bd21bc3e7e05b18005426129805023 192.168.134.102:7002@17002 myself,master - 0 1713282560000 2 connected 5461-10922
d8c92e1d9c34340cced8cdace66b4f965f631bad 192.168.134.102:7006@17006 slave 98e51ff0e12eb67715f4491b5fe9371ef0359a6f 0 1713282560377 3 connected
e4f191521ca80ebef45f75351abbe2e284504c92 192.168.134.102:7001@17001 master - 0 1713282559000 1 connected 0-5460
98e51ff0e12eb67715f4491b5fe9371ef0359a6f 192.168.134.102:7003@17003 master - 0 1713282561000 3 connected 10923-16383
ab85f2f06a00d8d54e43d30c06335ea75a47a3e5 192.168.134.102:7005@17005 slave 5aa6ddb016bd21bc3e7e05b18005426129805023 0 1713282559371 2 connected

4.3关闭集群

关闭集群则需要逐个进行关闭,使用命令:

cd /usr/local/redis-cluster/redis-x/bin/

无密码

./redis-cli -c -h 192.168.134.102 -p 7001 shutdown

有密码

./redis-cli -a Your Password -c -h 192.168.134.102 -p 7001 shutdown

4.4手动管理集群

注意:链接客户端之后执行

1、将 ip 和 port 所指定的节点添加到集群中

CLUSTER MEET <ip> <port>

2、从集群中移除 node_id 指定的节点

CLUSTER FORGET <node_id>

3、将当前节点设置为 node_id 指定的节点的从节点

CLUSTER REPLICATE <node_id>

4、将节点的配置文件保存到硬盘里面

CLUSTER SAVECONFIG

5、将一个或多个槽(slot)指派(assign)给当前节点

CLUSTER ADDSLOTS <slot> [slot ...]

6、移除一个或多个槽对当前节点的指派

CLUSTER DELSLOTS <slot> [slot ...]

7、 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点

CLUSTER FLUSHSLOTS

8、将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派

CLUSTER SETSLOT <slot> NODE <node_id>

9、将本节点的槽 slot 迁移到 node_id 指定的节点中

CLUSTER SETSLOT <slot> MIGRATING <node_id>

10、从 node_id 指定的节点中导入槽 slot 到本节点

CLUSTER SETSLOT <slot> IMPORTING <node_id>

11、取消对槽 slot 的导入(import)或者迁移(migrate)

CLUSTER SETSLOT <slot> STABLE

12、计算键 key 应该被放置在哪个槽上

CLUSTER KEYSLOT <key>

13、返回槽 slot 目前包含的键值对数量

CLUSTER COUNTKEYSINSLOT <slot>

14、返回 count 个 slot 槽中的键

CLUSTER GETKEYSINSLOT <slot> <count>

4.5 ip更改重置集群

4.5.1 kill -9 所有的redis进程

4.5.2 删除所有节点下的nodes.conf 和dump.rdb 文件

rm -rf /usr/local/redis-cluster/redis-x/bin/dump.rdb 
rm -rf /usr/local/redis-cluster/redis-x/bin/nodes.conf

4.5.3 重启所有redis

4.5.4 用redis-cli创建redis集群

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装 Redis Cluster,可以编写一个 Shell 脚本来自动化安装过程。以下是一个示例脚本: ```shell #!/bin/bash # 下载 Redis wget http://download.redis.io/releases/redis-6.2.1.tar.gz tar xzf redis-6.2.1.tar.gz cd redis-6.2.1 # 编译 Redis make # 复制 Redis 可执行文件到 /usr/local/bin sudo cp src/redis-cli src/redis-server /usr/local/bin # 创建 Redis Cluster 目录 sudo mkdir /var/lib/redis-cluster # 配置 Redis Cluster 节点 for port in {7000..7005}; do sudo mkdir -p /var/lib/redis-cluster/$port sudo cp redis.conf /var/lib/redis-cluster/$port/ sudo sed -i "s/port 6379/port $port/" /var/lib/redis-cluster/$port/redis.conf sudo sed -i "s/# cluster-enabled yes/cluster-enabled yes/" /var/lib/redis-cluster/$port/redis.conf sudo sed -i "s/# cluster-config-file nodes-6379.conf/cluster-config-file nodes-$port.conf/" /var/lib/redis-cluster/$port/redis.conf sudo sed -i "s/# cluster-node-timeout 15000/cluster-node-timeout 5000/" /var/lib/redis-cluster/$port/redis.conf done # 启动 Redis Cluster 节点 for port in {7000..7005}; do redis-server /var/lib/redis-cluster/$port/redis.conf --daemonize yes done # 创建 Redis Cluster yes | redis-cli --cluster create 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 --cluster-replicas 1 # 清理安装文件 cd .. rm -rf redis-6.2.1 redis-6.2.1.tar.gz ``` 将以上脚本保存为 `install_redis_cluster.sh`,然后在终端中运行以下命令来执行脚本: ```shell chmod +x install_redis_cluster.sh ./install_redis_cluster.sh ``` 脚本将会下载、编译和配置 Redis,然后启动 Redis Cluster 节点,并创建 Redis Cluster。 请注意,此脚本仅适用于安装 Redis 6.2.1 版本的 Redis Cluster。如需安装其他版本,请根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值