redisNoSQL数据库

搭建部署Redis高可用集群

2023-03-09  本文已影响0人  技术老男孩

一、环境准备:

角色 Ip地址 主机名 端口
客户端 host50 192.168.88.50
Redis服务器 host51 192.168.88.51 6379
Redis服务器 host52 192.168.88.52 6379
Redis服务器 Host53 192.168.88.53 6379
Redis服务器 Host54 192.168.88.54 6379
Redis服务器 Host55 192.168.88.55 6379
Redis服务器 Host56 192.168.88.56 6379
管理主机 Mgm57 192.168.88.57
Redis集群拓扑.png

环境准备注意事项:

二、搭建思路:

  1. Redis数据库服务器配置
  2. 启用Redis的集群功能
  3. 配置管理主机并创建集群
  4. 测试集群

三、实操搭建:

第一步:Redis数据库服务器配置

# 配置服务器192.168.88.51 
[root@host51 ~]# yum -y install gcc 
[root@host51 ~]# tar -xf redis-4.0.8.tar.gz 
[root@host51 ~]# cd redis-4.0.8/
[root@host51 ~]# make && make install
[root@host51 ~]# ./utils/install_server.sh  遇到提示就回车
# 配置服务器192.168.88.52
...
# 配置服务器192.168.88.53
...
# 配置服务器192.168.88.54
...
# 配置服务器192.168.88.55
...
# 配置服务器192.168.88.56
...

第二步:启用Redis的集群功能

# 启用host51主机集群功能
[root@host51 ~]# /etc/init.d/redis_6379  stop
# 打开配置文件修改以下行
[root@host51 ~]# vim /etc/redis/6379.conf 
bind 192.168.88.51 # 本机ip(每台不一样)
port 6379 # redis端口
cluster-enabled yes #启用集群功能
cluster-config-file nodes-6379.conf # 保存集群信息的配置文件
cluster-node-timeout 5000  # 集群中主机的连接超时时间
[root@host51 ~]# /etc/init.d/redis_6379  start
[root@host51 ~]# netstat  -utnlp  | grep redis-server
tcp    0   0 192.168.88.51:16379      0.0.0.0:*    LISTEN      4249/redis-server 1 
tcp  0   0 192.168.88.51:6379      0.0.0.0:*  LISTEN      4249/redis-server 1 
# 启用host52主机集群功能
...
# 启用host53主机集群功能
...
# 启用host54主机集群功能
...
# 启用host55主机集群功能
...
# 启用host56主机集群功能
...

第三步:配置管理主机并创建集群

# 准备ruby脚本的运行环境 
[root@mgm57 ~]# yum  -y  install   rubygems   ruby 
]# gem  install  redis-3.2.1.gem

# 创建脚本
[root@mgm57 ~]# mkdir  /root/bin     //创建命令检索目录
[root@mgm57 ~]# tar -xf redis-4.0.8.tar.gz
[root@mgm57 ~]# cp  redis-4.0.8/src/redis-trib.rb   /root/bin/      
# 设置执行权限
[root@mgm57 ~]# chmod  +x   /root/bin/redis-trib.rb  
# 查看脚本帮助信息
[root@mgm57 ~]# redis-trib.rb help(能看到帮助信息为成功)
# replicas 1:指的是每一个主所需要的从的数量
[root@mgm57 ~]# redis-trib.rb create --replicas 1 
192.168.88.51:6379 192.168.88.52:6379 
192.168.88.53:6379 192.168.88.54:6379 
192.168.88.55:6379 192.168.88.56:6379
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.88.51:6379
192.168.88.52:6379
192.168.88.53:6379
Adding replica 192.168.88.55:6379 to 192.168.88.51:6379
Adding replica 192.168.88.56:6379 to 192.168.88.52:6379
Adding replica 192.168.88.54:6379 to 192.168.88.53:6379
M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
   slots:0-5460 (5461 slots) master
M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
   slots:5461-10922 (5462 slots) master
M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
   slots:10923-16383 (5461 slots) master
S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
   replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
   replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
   replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
Can I set the above configuration? (type 'yes' to accept): yes 同意 
....
....
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.  创建成功的提示
  1. 检查7台主机的防火墙和selinux服务是否关闭了
  2. 在6台Redis服务器 分别执行如下操作:
    停止Redis服务
    清空数据库目录 rm –rf /var/lib/redis/6379/*
    启动Redis服务
  3. 管理主机重新创建集群
# info 查看集群简单信息,IP和端口可以是集群中的任意一台的
[root@mgm57 ~]# redis-trib.rb info  192.168.4.51:6379
192.168.88.53:6379 (f2c1bdb7...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.51:6379 (0eb3b7aa...) -> 0 keys | 5461 slots | 1 slaves.
192.168.88.52:6379 (a9cb8ccd...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
            
# check 查看集群详细信息,IP和端口可以是集群中的任意一台的
[root@mgm57 ~]# redis-trib.rb check  192.168.88.51:6379
>>> Performing Cluster Check (using node 192.168.88.51:6379)
M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
   slots: (0 slots) slave
   replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
   slots: (0 slots) slave
   replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
   slots: (0 slots) slave
   replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

第四步:测试集群

# 集群中的任意一台服务器都可以查询数据和存储数据
# 向集群中的主机存储数据一次只能存储一个变量集群算法每次只有一个计算结果

# 在客户端连接集群中的主机
[root@host51 ~]# redis-cli -c  -h 192.168.88.51
192.168.88.51:6379> keys *
(empty list or set)
# 在redis51上存储数据,发现数据存储到了52
192.168.88.51:6379> set name plj
-> Redirected to slot [5798] located at 192.168.88.52:6379
OK

# 在redis52上查看数据
192.168.88.52:6379> keys *
1) "name"

# 在redis52上存储数,发现数据到了51上
192.168.88.52:6379> set age 19 
-> Redirected to slot [741] located at 192.168.88.51:6379
OK

# 在redis51上查看数据
192.168.88.51:6379> keys *
1) "age"
# 连接slave角色服务器可以查看到和master角色服务器一样的数据
root@host51 ~]# redis-cli -c  -h 192.168.88.54
>keys  *
root@host51 ~]# redis-cli -c  -h 192.168.88.55
>keys  *
root@host51 ~]# redis-cli -c  -h 192.168.88.56
>keys  *
# 停止master角色主机的redis服务
root@host53 ~]# redis-cli -h 192.168.88.53  -p  6379  shutdown
# 在管理主机查看集群信息
发现mater角色主机的ip发生了变化
[root@mgm57 ~]# redis-trib.rb info  192.168.88.51:6379
上一篇下一篇

猜你喜欢

热点阅读