Redis Cluster集群Linux安装

一、版本信息

CentOS:release 6.5 (Final)
GCC:4.4.7
Redis:5.0.9

二、集群搭建

2.1集群规划

主节点:11.11.11.160:6379,11.11.11.161:6379,11.11.11.162:6379
从节点:11.11.11.163:6379,11.11.11.164:6379,11.11.11.165:6379

  1. 如果是云服务器,需要外网访问,以上IP都是外网IP
  2. 开启所有服务器的防火墙端口,6379和16379

2.2集群安装

首先创建/data/redis-cluster文件夹,下载 Redis 压缩文件到该文件夹下,然后编译安装:

mkdir /data/redis-cluster
cd /data/redis-cluster
wget http://download.redis.io/releases/redis-5.0.9.tar.gz
tar -zxvf redis-5.0.9.tar.gz
cd redis-5.0.9
make

根据端口创建文件夹

mkdir /data/redis-cluster/redis-5.0.9/conf
mkdir /data/redis-cluster/redis-5.0.9/6379
mkdir /data/redis-cluster/redis-5.0.9/6380
mkdir /data/redis-cluster/redis-5.0.9/6381
mkdir /data/redis-cluster/redis-5.0.9/6382
mkdir /data/redis-cluster/redis-5.0.9/6383
mkdir /data/redis-cluster/redis-5.0.9/6384

复制配置文件redis.conf,到/data/redis-cluster/redis-5.0.9/conf目录下,改名为redis-6379.conf,redis-6380.conf,redis-6381.conf,redis-6382.conf,redis-6383.conf,redis-6384.conf
redis-6379.conf修改如下部分:

port 6379
#bind 127.0.0.1
cluster-enabled yes
cluster-config-file /data/redis-cluster/redis-5.0.9/6379/nodes.conf
appendfilename "appendonly.aof"
protected-mode no
daemonize yes
appendonly yes
requirepass qaz@123
masterauth qaz@123
logfile "/data/redis-cluster/redis-5.0.9/6379/redis.log"
pidfile /data/redis-cluster/redis-5.0.9/6379/redis.pid
dbfilename dump.rdb
dir /data/redis-cluster/redis-5.0.9/6379
cluster-announce-ip 11.11.11.160
cluster-announce-bus-port 16379

配置说明

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

其他配置项,更加详细的说明:Redis配置文件详解
其他端口的配置文件,也做相应的修改
在每台服务器上执行如下命令,分别启动 Redis 实例:

/data/redis-cluster/redis-5.0.9/src/redis-server /data/redis-cluster/redis-5.0.9/conf/redis-6379.conf

用redis-cli创建redis集群

/data/redis-cluster/redis-5.0.9/src/redis-cli -a qaz@123 --cluster create 11.11.11.160:6379 11.11.11.161:6379 11.11.11.162:6379 11.11.11.163:6379 11.11.11.164:6379 11.11.11.165:6379 --cluster-replicas 1

创建日志:

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 11.11.11.164:6379 to 11.11.11.160:6379
Adding replica 11.11.11.165:6379 to 11.11.11.161:6379
Adding replica 11.11.11.163:6379 to 11.11.11.162:6379
M: f6bade412603174b67db6b1a470fd673f9a5c314 11.11.11.160:6379
   slots:[0-5460] (5461 slots) master
M: 64026cdbf85335a43d16ccfb9f5e0e335faa2722 11.11.11.161:6379
   slots:[5461-10922] (5462 slots) master
M: 98ca7df6298a84c58f73412f95a398a050ca302e 11.11.11.162:6379
   slots:[10923-16383] (5461 slots) master
S: a3990e0418aa242bb0e39d2d31a1ec8c796de5f3 11.11.11.163:6379
   replicates 98ca7df6298a84c58f73412f95a398a050ca302e
S: c5dcbc92b1e939113d5594f4895340cdec6bf2c1 11.11.11.164:6379
   replicates f6bade412603174b67db6b1a470fd673f9a5c314
S: 5d252fb7a82c3e2b28aa7f573f1516444584e97c 11.11.11.165:6379
   replicates 64026cdbf85335a43d16ccfb9f5e0e335faa2722
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 11.11.11.160:6379)
M: f6bade412603174b67db6b1a470fd673f9a5c314 11.11.11.160:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 98ca7df6298a84c58f73412f95a398a050ca302e 11.11.11.162:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: c5dcbc92b1e939113d5594f4895340cdec6bf2c1 11.11.11.164:6379
   slots: (0 slots) slave
   replicates f6bade412603174b67db6b1a470fd673f9a5c314
M: 64026cdbf85335a43d16ccfb9f5e0e335faa2722 11.11.11.161:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 5d252fb7a82c3e2b28aa7f573f1516444584e97c 11.11.11.165:6379
   slots: (0 slots) slave
   replicates 64026cdbf85335a43d16ccfb9f5e0e335faa2722
S: a3990e0418aa242bb0e39d2d31a1ec8c796de5f3 11.11.11.163:6379
   slots: (0 slots) slave
   replicates 98ca7df6298a84c58f73412f95a398a050ca302e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

2.3集群验证

2.3.1设置环境变量

vim /etc/profile
#添加
export REDIS_HOME=/data/redis-cluster/redis-5.0.9/src
export PATH=${JAVA_HOME}/bin:$PATH:$REDIS_HOME

source /etc/profile

2.3.2连接客户端

redis-cli -c -a qaz@123 -h 11.11.11.160 -p 6379

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

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
11.11.11.160:6379>
11.11.11.160:6379>
11.11.11.160:6379> keys *
(empty list or set)
11.11.11.160:6379> set name my name is lihy
-> Redirected to slot [5798] located at 11.11.11.161:6379
(error) ERR syntax error
11.11.11.161:6379> keys *
(empty list or set)
11.11.11.161:6379> set name 'my name is lihy'
OK
11.11.11.161:6379> keys *
1) "name"
11.11.11.161:6379> get name
"my name is lihy"

2.3.3查看集群信息

11.11.11.161:6379>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:1545
cluster_stats_messages_pong_sent:1615
cluster_stats_messages_meet_sent:2
cluster_stats_messages_sent:3162
cluster_stats_messages_ping_received:1612
cluster_stats_messages_pong_received:1547
cluster_stats_messages_meet_received:3
cluster_stats_messages_received:3162

2.3.4查看节点列表

11.11.11.161:6379> cluster nodes
98ca7df6298a84c58f73412f95a398a050ca302e 11.11.11.162:6379@16379 master - 0 1600765329213 3 connected 10923-16383
a3990e0418aa242bb0e39d2d31a1ec8c796de5f3 11.11.11.163:6379@16379 slave 98ca7df6298a84c58f73412f95a398a050ca302e 0 1600765330215 3 connected
64026cdbf85335a43d16ccfb9f5e0e335faa2722 11.11.11.161:6379@16379 myself,master - 0 1600765331000 2 connected 5461-10922
f6bade412603174b67db6b1a470fd673f9a5c314 11.11.11.160:6379@16379 master - 0 1600765331217 1 connected 0-5460
5d252fb7a82c3e2b28aa7f573f1516444584e97c 11.11.11.165:6379@16379 slave 64026cdbf85335a43d16ccfb9f5e0e335faa2722 0 1600765331000 6 connected
c5dcbc92b1e939113d5594f4895340cdec6bf2c1 11.11.11.164:6379@16379 slave f6bade412603174b67db6b1a470fd673f9a5c314 0 1600765332221 1 connected

2.3.5关闭集群

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

redis-cli -a qaz@123 -c -h 11.11.11.160 -p 6379 shutdown

2.3.6手动管理redis集群

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

CLUSTER MEET <ip> <port>

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

CLUSTER FORGET <node_id>

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

CLUSTER REPLICATE <node_id>

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

CLUSTER SAVECONFIG

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

CLUSTER ADDSLOTS <slot> [slot ...]

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

CLUSTER DELSLOTS <slot> [slot ...]

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

CLUSTER FLUSHSLOTS

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

CLUSTER SETSLOT <slot> NODE <node_id>

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

CLUSTER SETSLOT <slot> MIGRATING <node_id>

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

CLUSTER SETSLOT <slot> IMPORTING <node_id>

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

CLUSTER SETSLOT <slot> STABLE

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

CLUSTER KEYSLOT <key>

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

CLUSTER COUNTKEYSINSLOT <slot>

16、返回 count 个 slot 槽中的键

CLUSTER GETKEYSINSLOT <slot> <count>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Linux安装Redis集群,您可以按照以下步骤进行操作: 1. 下载Redis软件包: 在Redis官方网站(https://redis.io/download)上下载最新版本的Redis软件包,并将其解压到您希望安装的目录。 2. 编译和安装Redis: 打开一个终端窗口,切换到Redis源代码所在的目录,并执行以下命令: ``` $ make $ make install ``` 3. 创建Redis配置文件: 在任意位置创建一个用于保存Redis配置的文件夹,例如 `/etc/redis`,并在该文件夹下创建多个配置文件,用于不同的Redis实例。每个配置文件对应一个Redis节点。您可以使用以下示例配置文件作为参考: ``` # redis-7000.conf port 7000 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 # redis-7001.conf port 7001 cluster-enabled yes cluster-config-file nodes-7001.conf cluster-node-timeout 5000 # 其他实例的配置文件... ``` 4. 启动Redis节点: 打开多个终端窗口,分别切换到不同的节点配置文件所在的目录,并执行以下命令: ``` $ redis-server redis-7000.conf $ redis-server redis-7001.conf ``` 5. 创建Redis集群: 打开另一个终端窗口,并执行以下命令: ``` $ redis-cli --cluster create <node1>:<port1> <node2>:<port2> <node3>:<port3> ... ``` 其中,`<nodeX>`和`<portX>`是Redis节点的IP地址和端口号。例如,如果您在本地主机上运行了3个节点,可以这样执行命令: ``` $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 ``` 6. 验证Redis集群的状态: 执行以下命令来验证Redis集群的状态: ``` $ redis-cli -c -p <port> $ cluster info ``` 现在您已经成功安装Redis集群。您可以通过访问不同的节点来使用集群。请注意,Redis集群需要至少3个主节点才能正常工作,并且每个主节点都应该有多个从节点以提供高可用性和故障转移。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值