经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Redis » 查看文章
一台服务器上部署 Redis 伪集群
来源:cnblogs  作者:咸鱼Linux运维  时间:2023/8/29 14:47:31  对本文有异议

哈喽大家好,我是咸鱼

今天这篇文章介绍如何在一台服务器(以 CentOS 7.9 为例)上通过 redis-trib.rb 工具搭建 Redis cluster (三主三从)

redis-trib.rb 是一个基于 Ruby 编写的脚本,其功能涵盖了创建、管理以及维护 Redis 集群的各个方面

值得注意的是,随着时间的推移,一些较新版本的 Redis 已经将 redis-trib.rb 标记为不推荐使用的工具

鉴于此,文章所采用的 Redis 版本为较老的 4.0.9 版本

对于较新版本的 Redis,咸鱼建议采用 redis-cli 工具来进行集群的操作与管理,以确保与 Redis 的最新特性保持一致

我们先把架构画出来,这样后面部署的时候就很方便了
image

  1. # 三个 Master
  2. 192.168.149.131:6379
  3. 192.168.149.131:6380
  4. 192.168.149.131:6381
  5. # 三个 Slave
  6. 192.168.149.131:26379
  7. 192.168.149.131:26380
  8. 192.168.149.131:26381

需要注意的是,Redis Cluster 中,节点之间通过建立 TCP 连接,使用 gossip 协议来传播集群的信息,节点内部通信端口是服务端口 + 10000

举个例子,启动 Redis 服务之后会有一个 6379 端口(对外端口)和一个 16379 端口(对内通信端口)

开始部署

部署前准备

首先创建 Redis 存储目录,用来存放 rdb 文件等,接着创建 pid 文件和日志文件存放目录

  1. mkdir -pv /var/data/{6379,6380,6381,26379,26380,26381}
  2. mkdir /usr/local/redis-4.0.9/{pid,log} -pv

安装 Redis 以及相关依赖工具

我们先来安装 redis 以及相关依赖(需要能够访问到互联网)

  1. # 安装相关依赖
  2. yum install -y wget gcc gcc-c++ make tar openssl openssl-devel cmake
  3. # 安装到 /usr/local 下
  4. cd /usr/local/ && wget https://download.redis.io/releases/redis-4.0.9.tar.gz
  5. # 解压缩
  6. tar -xvf redis-4.0.9.tar.gz

解压缩完毕之后我们进入目录开始编译安装

  1. cd redis-4.0.9/ && make && make install

配置并开启 Redis 服务

首先我们先来配置六个 Redis 服务的配置文件

  1. ll /usr/local/redis-4.0.9/
  2. -rwxr-xr-x 1 root root 1524 Aug 24 17:21 redis-26379.conf
  3. -rwxr-xr-x 1 root root 1524 Aug 24 17:18 redis-26380.conf
  4. -rwxr-xr-x 1 root root 1524 Aug 24 17:18 redis-26381.conf
  5. -rwxr-xr-x 1 root root 1519 Aug 24 17:21 redis-6379.conf
  6. -rwxr-xr-x 1 root root 1519 Aug 24 17:17 redis-6380.conf
  7. -rwxr-xr-x 1 root root 1519 Aug 24 17:17 redis-6381.conf

配置文件中需要改动的配置项是下面几个,其他的不变

  1. # 需要改动的地方
  2. ...
  3. port 6379
  4. ...
  5. pidfile /usr/local/redis-4.0.9/pid/redis-6379.pid
  6. ...
  7. logfile /usr/local/redis-4.0.9/log/redis-6379.log
  8. ...
  9. dir /var/data/6379
  10. ...
  11. cluster-config-file nodes-6379.conf
  12. ...

配置好之后,六个 Redis 服务依次启动

  1. /usr/local/redis-4.0.9/src/redis-server redis-6379.conf && /usr/local/redis-4.0.9/src/redis-server redis-26379.conf
  2. /usr/local/redis-4.0.9/src/redis-server redis-6380.conf && /usr/local/redis-4.0.9/src/redis-server redis-26380.conf
  3. /usr/local/redis-4.0.9/src/redis-server redis-6381.conf && /usr/local/redis-4.0.9/src/redis-server redis-26381.conf

搭建 Ruby 环境

redis-trib.rb 是一个 Ruby 脚本,用于创建、管理和维护 Redis 集群

它提供了一种命令行界面来执行各种集群操作,如添加节点、删除节点、平衡数据分布等

如果要使用 redis-trib.rb 这个 Ruby 脚本来管理 Redis Cluster,就需要安装 Ruby 解释器

先下载 rvm 工具(网络问题多试几次)

  1. #1.下载密钥
  2. curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
  3. curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
  1. #2.下载安装包(网络问题多试几次)
  2. curl -L get.rvm.io | bash -s stable

image

  1. # 验证是否安装成功
  2. [root@localhost]# find / -name rvm
  3. /usr/local/rvm
  4. /usr/local/rvm/src/rvm
  5. /usr/local/rvm/src/rvm/bin/rvm
  6. /usr/local/rvm/src/rvm/lib/rvm
  7. /usr/local/rvm/src/rvm/scripts/rvm
  8. /usr/local/rvm/bin/rvm
  9. /usr/local/rvm/lib/rvm
  10. /usr/local/rvm/scripts/rvm
  11. # 启用 RVM 的环境变量
  12. source /etc/profile.d/rvm.sh
  1. #查看依赖
  2. rvm requirements
  3. #验证 rvm 版本
  4. rvm -v
  1. # 安装 ruby
  2. /usr/local/rvm/bin/rvm install ruby-3.0.0
  3. # 验证 ruby 版本
  4. ruby -v

PS:如果安装 ruby 之后使用 redis-trib.rb 工具发现报错

  1. /usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- redis (LoadError)
  2. from /usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
  3. from ./redis-trib.rb:25:in `<main>'

根据提示可以知道 redis-trib.rb 脚本无法找到 redis 模块,导致加载失败,这通常是因为系统中缺少了所需的 Ruby Redis 模块或模块的版本问题

运行以下命令安装 Redis Gem 模块:

  1. # 安装 redis 模块,是 redis-trib.rb 脚本所需的依赖
  2. gem install redis

创建 Redis 集群

创建集群(--replicas 1 表示指定每个 master 有一个 slave)

  1. cd /usr/local/redis-4.0.9/ && ./src/redis-trib.rb create --replicas 1 192.168.149.131:6379 192.168.149.131:26379 192.168.149.131:6380 192.168.149.131:26380 192.168.149.131:6381 192.168.149.131:26381

image
由上图可以看到

  1. master 1 192.168.149.131:6379 slave 1192.168.149.131:26380
  2. master 2 192.168.149.131:26381slave 2192.168.149.131:6380
  3. master 3 192.168.149.131:26379slave 3192.168.149.131:6381
  1. # 查看集群信息
  2. cd /usr/local/redis-4.0.9/ && ./src/redis-trib.rb info 192.168.149.131:6379
  3. cd /usr/local/redis-4.0.9/ && ./src/redis-trib.rb check 127.0.0.1:6379

验证

创建集群之后我们简单验证一下:写入一个数据,可以看到数据重定向到了 master 3

  1. [root@localhost /usr/local/redis-4.0.9]# redis-cli -c -p 6379
  2. 127.0.0.1:6379> set name Edison
  3. -> Redirected to slot [5798] located at 192.168.149.131:26379
  4. OK

然后我们在 slave 3 上查看有没有这个数据,是否同步完毕

  1. [root@localhost /usr/local/redis-4.0.9]# redis-cli -c -p 26379
  2. 127.0.0.1:26379> get name
  3. "Edison"

原文链接:https://www.cnblogs.com/edisonfish/p/17664750.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号