redis三主三从集群搭建(三台虚拟机)

先准备环境centos7
ip:192.168.81.132 192.168.81.133 192.168.81.137
设置三台机器的/etc/hosts,每台都要添加如下三行,保存退出

[root@localhost ~]# vim /etc/hosts
192.168.81.132 redis-132
192.168.81.133 redis-133
192.168.81.137 redis-137

安装依赖(3台都需要安装)

yum -y install gcc gcc-c++ wget

上传解压redis包到当前目录下

[root@localhost ~]# rz

[root@localhost ~]# ll
总用量 1936
-rw-------. 1 root root    1402 1月  20 09:20 anaconda-ks.cfg
-rw-r--r--. 1 root root 1975750 4月   1 10:33 redis-5.0.5.tar.gz
[root@localhost ~]# tar zxf redis-5.0.5.tar.gz

进入刚解压出来的redis目录,开始编译安装

[root@localhost ~]# cd redis-5.0.5
[root@localhost redis-5.0.5]# make && make PREFIX=/usr/local/redis install
make[1]: 离开目录“/root/redis-5.0.5/src”
make[1]: 进入目录“/root/redis-5.0.5/src”

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: 离开目录“/root/redis-5.0.5/src”

查看是否编译安装成功,执行 如下命令,如果输出0 表示redis安装成功了

[root@localhost redis-5.0.5]# echo $?
0

配置环境变量,在/etc/profile文件最后添加如下内容

[root@localhost redis-5.0.5]# vim /etc/profile
###### redis env ######
export REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin
[root@localhost redis-5.0.5]# source /etc/profile

分别创建两个7001和7002的配置文件目录conf,日志目录logs,数据存储目录data,如下命令

[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/conf/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/logs/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/data/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/conf/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/logs/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/data/

创建7001的配置文件,并添加如下内容

[root@localhost redis-5.0.5]# vim /usr/local/redis/redis_cluster/7001/conf/redis.conf
# 绑定服务器域名或IP地址
bind redis-132
# 设置端口,区分集群中Redis的实例
port 7001
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-7001.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/7001/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/7001/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_7001.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

创建7002的配置文件,并添加如下内容

[root@localhost redis-5.0.5]# vim /usr/local/redis/redis_cluster/7002/conf/redis.conf
# 绑定服务器域名或IP地址
bind redis-132
# 设置端口,区分集群中Redis的实例
port 7002
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-7002.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/7002/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/7002/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_7002.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

第二台机器上操作:
分别创建两个7001和7002的配置文件目录conf,日志目录logs,数据存储目录data,如下命令

[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/conf/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/logs/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/data/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/conf/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/logs/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/data/

创建7001的配置文件,并添加如下内容

[root@localhost redis-5.0.5]# vim /usr/local/redis/redis_cluster/7001/conf/redis.conf
# 绑定服务器域名或IP地址
bind redis-133
# 设置端口,区分集群中Redis的实例
port 7001
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-7001.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/7001/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/7001/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_7001.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

创建7002的配置文件,并添加如下内容

[root@localhost redis-5.0.5]# vim /usr/local/redis/redis_cluster/7002/conf/redis.conf
# 绑定服务器域名或IP地址
bind redis-133
# 设置端口,区分集群中Redis的实例
port 7002
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-7002.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/7002/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/7002/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_7002.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

第三台机器上操作
分别创建两个7001和7002的配置文件目录conf,日志目录logs,数据存储目录data,如下命令

[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/conf/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/logs/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7001/data/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/conf/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/logs/
[root@localhost redis-5.0.5]# mkdir -p /usr/local/redis/redis_cluster/7002/data/

创建7001的配置文件,并添加如下内容

[root@localhost redis-5.0.5]# vim /usr/local/redis/redis_cluster/7001/conf/redis.conf
# 绑定服务器域名或IP地址
bind redis-137
# 设置端口,区分集群中Redis的实例
port 7001
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-7001.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/7001/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/7001/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_7001.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

创建7002的配置文件,并添加如下内容

[root@localhost redis-5.0.5]# vim /usr/local/redis/redis_cluster/7002/conf/redis.conf
# 绑定服务器域名或IP地址
bind redis-137
# 设置端口,区分集群中Redis的实例
port 7002
# 后台运行
daemonize yes
# pid进程文件名,以端口号命名
pidfile /var/run/redis-7002.pid
# 日志文件名称,以端口号为目录来区分
logfile /usr/local/redis/redis_cluster/7002/logs/redis.log
# 数据文件存放地址,以端口号为目录名来区分
dir /usr/local/redis/redis_cluster/7002/data
# 启用集群
cluster-enabled yes
# 配置每个节点的配置文件,同样以端口号为名称
cluster-config-file nodes_7002.conf
# 配置集群节点的超时时间
cluster-node-timeout 15000
# 启动AOF增量持久化策略
appendonly yes
# 发生改变,则记录日志
appendfsync always

第一台上操作
在保证上面132,133,137都配置完成后,开始启动132,133,137各节点

[root@localhost redis-5.0.5]# redis-server /usr/local/redis/redis_cluster/7001/conf/redis.conf 
[root@localhost redis-5.0.5]# redis-server /usr/local/redis/redis_cluster/7002/conf/redis.conf
[root@localhost redis-5.0.5]# ps -ef | grep redis
root      16461      1  0 14:28 ?        00:00:00 redis-server redis-132:7001 [cluster]
root      16466      1  0 14:28 ?        00:00:00 redis-server redis-132:7002 [cluster]
root      16474   2391  0 14:32 pts/1    00:00:00 grep --color=auto redis

第二台上操作

[root@localhost redis-5.0.5]# redis-server /usr/local/redis/redis_cluster/7001/conf/redis.conf 
[root@localhost redis-5.0.5]# redis-server /usr/local/redis/redis_cluster/7002/conf/redis.conf
[root@localhost redis-5.0.5]# ps -ef | grep redis
root      25632      1  0 14:30 ?        00:00:00 redis-server redis-133:7001 [cluster]
root      25637      1  0 14:30 ?        00:00:00 redis-server redis-133:7002 [cluster]
root      25643  11559  0 14:33 pts/1    00:00:00 grep --color=auto redis

第三台上操作

[root@localhost redis-5.0.5]# redis-server /usr/local/redis/redis_cluster/7001/conf/redis.conf 
[root@localhost redis-5.0.5]# redis-server /usr/local/redis/redis_cluster/7002/conf/redis.conf
[root@localhost redis-5.0.5]# ps -ef | grep redis
root      15607      1  0 14:31 ?        00:00:00 redis-server redis-137:7001 [cluster]
root      15612      1  0 14:31 ?        00:00:00 redis-server redis-137:7002 [cluster]
root      15618   1535  0 14:33 pts/0    00:00:00 grep --color=auto redis

在任意一台机器上使用 reids-cli 创建Redis集群 (注:这里必须使用IP,如果使用像redis-166这样的域名,则会报错)

[root@localhost redis-5.0.5]# redis-cli --cluster create 192.168.81.132:7001 192.168.81.133:7001 192.168.81.137:7001 192.168.81.132:7002 192.168.81.133:7002 192.168.81.137:7002 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.81.133:7002 to 192.168.81.132:7001
Adding replica 192.168.81.137:7002 to 192.168.81.133:7001
Adding replica 192.168.81.132:7002 to 192.168.81.137:7001
M: 639b7c706cc1e4dca8f93fe56469b4d55aac0fe4 192.168.81.132:7001
   slots:[0-5460] (5461 slots) master
M: 54f08d1ee804ac541fc6a320296f4331a2228ad7 192.168.81.133:7001
   slots:[5461-10922] (5462 slots) master
M: 125bbdc79c337779947839a3b43bd33f0def97d7 192.168.81.137:7001
   slots:[10923-16383] (5461 slots) master
S: e058d576025fbd4f826e41b071c412b4d5bd6e53 192.168.81.132:7002
   replicates 125bbdc79c337779947839a3b43bd33f0def97d7
S: 4ff9e3a9b8a4249b8d9ccb8a98d0405bda746a93 192.168.81.133:7002
   replicates 639b7c706cc1e4dca8f93fe56469b4d55aac0fe4
S: 9c46244c3f781da15157dec922ed221356ee90b5 192.168.81.137:7002
   replicates 54f08d1ee804ac541fc6a320296f4331a2228ad7
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.81.132:7001)
M: 639b7c706cc1e4dca8f93fe56469b4d55aac0fe4 192.168.81.132:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 4ff9e3a9b8a4249b8d9ccb8a98d0405bda746a93 192.168.81.133:7002
   slots: (0 slots) slave
   replicates 639b7c706cc1e4dca8f93fe56469b4d55aac0fe4
S: 9c46244c3f781da15157dec922ed221356ee90b5 192.168.81.137:7002
   slots: (0 slots) slave
   replicates 54f08d1ee804ac541fc6a320296f4331a2228ad7
M: 54f08d1ee804ac541fc6a320296f4331a2228ad7 192.168.81.133:7001
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 125bbdc79c337779947839a3b43bd33f0def97d7 192.168.81.137:7001
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: e058d576025fbd4f826e41b071c412b4d5bd6e53 192.168.81.132:7002
   slots: (0 slots) slave
   replicates 125bbdc79c337779947839a3b43bd33f0def97d7
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看我们刚创建集群的状态,如下命令:(在3台集群中的任意一台机器查看任意节点都一样,我在第一台机器上查看,会带出所有的节点信息)

[root@localhost redis-5.0.5]# redis-cli --cluster check 192.168.81.133:7001
192.168.81.133:7001 (54f08d1e...) -> 0 keys | 5462 slots | 1 slaves.
192.168.81.137:7001 (125bbdc7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.81.132:7001 (639b7c70...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.81.133:7001)
M: 54f08d1ee804ac541fc6a320296f4331a2228ad7 192.168.81.133:7001
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 9c46244c3f781da15157dec922ed221356ee90b5 192.168.81.137:7002
   slots: (0 slots) slave
   replicates 54f08d1ee804ac541fc6a320296f4331a2228ad7
S: e058d576025fbd4f826e41b071c412b4d5bd6e53 192.168.81.132:7002
   slots: (0 slots) slave
   replicates 125bbdc79c337779947839a3b43bd33f0def97d7
M: 125bbdc79c337779947839a3b43bd33f0def97d7 192.168.81.137:7001
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 4ff9e3a9b8a4249b8d9ccb8a98d0405bda746a93 192.168.81.133:7002
   slots: (0 slots) slave
   replicates 639b7c706cc1e4dca8f93fe56469b4d55aac0fe4
M: 639b7c706cc1e4dca8f93fe56469b4d55aac0fe4 192.168.81.132:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

测试集群是否正常:
在集群中的任意一台测试都可以,如我们可以在133上连接137上的7002节点并添加一个数据

[root@localhost redis-5.0.5]# redis-cli -c -h 192.168.81.133 -p 7002
192.168.81.133:7002> set key001 helloredis
-> Redirected to slot [12657] located at 192.168.81.137:7001
OK
192.168.81.137:7001> get key001
"helloredis"
[root@localhost redis-5.0.5]# redis-cli -c -h 192.168.81.132 -p 7001
192.168.81.132:7001> get key001
-> Redirected to slot [12657] located at 192.168.81.137:7001
"helloredis"
[root@localhost redis-5.0.5]# redis-cli -c -h 192.168.81.133 -p 7001
192.168.81.133:7001> get key001
-> Redirected to slot [12657] located at 192.168.81.137:7001
"helloredis"

redis三主三从集群搭建完毕!!!!!!!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值