需要三台虚拟机(生产环境是 3 个物理机), 分配静态 IP.cluster 中共 6 个节点. 3 主 3 从. 本文中每个虚拟机上的 Redis 端口: 6379 6380.
需要注意的两点:
3 个主节点分别位于 3 台虚拟机上, 已保证某个虚拟机挂掉, 集群仍然可以正常工作.
同一对主从节点(存储的是相同的数据), 也不能分配到一台虚拟机上, 防止某台虚拟机挂掉, 应用无法访问这对 Redis 存储的数据.
Redis 源码 tar 包路径: /usr/local/Redis-3.0.6.tar.gz
Redis 解压后源码安装包路径: /usr/local/Redis-3.0.6
Redis 安装位置: /usr/local/Redis
Redis 的启动配置文件放在路径: /etc/Redis 文件夹下
Redis 集群配置配置文件 (自动生成) 放在路径 /etc/Redis/clusterconf 文件夹下
Redis 数据放在路径: /data/Redis 文件夹下
Redis 日志放在路径: /logs/Redis 文件夹下
1, 安装依赖
- wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
- sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
- cd /usr/local/tcl8.6.1/unix/
- sudo ./configure
- sudo make
- sudo make install
2, 安装 Redis
解压展开源码包
# tar xf Redis-3.0.6.tar.gz
进入解压后的源码目录
# cd Redis-3.0.6
编译安装 Redis
# make PREFIX=/usr/local/Redis install
安装完成, 进行安装是否成功的测试
# make test
如果显示 "All tests passed without errors!" 表示安装成功. 如果安装测试提示失败, 请重新解压覆盖. 说明: 根据操作系统环境不同, 依赖的软件也不同, 编译安装 Redis 时如果有提示软件依赖问题, 根据错误提示安装相应软件即可.
说明: 3 个虚拟机上相同操作
3, 配置 Redis
建立目录如下, 存放 Redis 启动配置文件(可以放多个, 例如 Redis-6379.conf,Redis-6380.conf)
# mkdir /etc/Redis
建立目录如下, 存放 Redis 集群节点配置文件, 启动时自动生成.
# mkdir /etc/Redis/clusterconf
建立目录如下, 存放持久化文件(例如 dump-6379.rdb,dump-6380.rdb)
# mkdir /usr/local/Redis/data
拷贝 2 步中 Redis 解压目录里的配置文件 Redis.conf
# cp Redis.conf /etc/Redis/Redis-6379.conf
编辑 / etc/Redis/Redis-6379.conf, 以下配置的具体内容均为示例, 需要根据注释进行实际配置.
- # VIM /etc/Redis/Redis-6379.conf
- daemonize yes // 以守护进程方式运行
- Redis pidfile /var/run/Redis-6379.pid // pid 文件位置
- port 6379 //Redis 服务监听端口号
- logfile "/logs/redis/6379.log" //Redis 日志文件
- dbfilename dump-6379.rdb
- dir /data/Redis
- save 900 1 //900 秒内有一次更新, 则写入磁盘操作
- save 300 10 //300 秒内有 10 次操作, 则刷一次磁盘
- save 60 30 //60 秒 内有 30 次操作的, 则刷一次磁盘
- appendonly no
- appendfilename "appendonly-6379.aof"
- # 以下是集群相关配置
- cluster-enabled yes
- cluster-config-file /etc/Redis/clusterconf/nodes-<ip>-6379.conf
- cluster-node-timeout 5000
创建 Redis-6380.conf 配置文件
# cp /etc/Redis/Redis-6379.conf /etc/Redis/Redis-6380.conf
把 Redis-6380.conf 配置文件中的所有 6379 修改成 6380
说明: 3 个虚拟机上相同操作
4, 集群依赖
3 台虚拟机上任选一台安装 Ruby
- yum install Ruby RubyGems -y
- Gem install Redis
说明: 目前 yum 安装的 Ruby 版本是 2.0.0, 在执行 Gem install Redis 时, 会报错:
- ERROR: Error installing Redis
- Redis requires Ruby version>= 2.2.2.
解决方法访问下面链接
https://www.cnblogs.com/PatrickLiu/p/8454579.html
5, 制作 sh 脚本, 启动 6 个 Redis
- #!/bin/sh
- cd /usr/local/Redis/bin
- ./Redis-server /etc/Redis/Redis-6379.conf
- echo "redis 6379 is starting"
- ./Redis-server /etc/Redis/Redis-6380.conf
- echo "redis 6380 is starting"
6, 制作 sh 脚本, 在安装 Ruby 的虚拟机上执行
- #!/bin/sh
- /usr/local/Redis-3.0.6/src
- ./Redis-trib.rb create --replicas 1 192.168.233.103:6379 192.168.233.104:6379 192.168.233.105:6379 192.168.233.103:6380 192.168.233.104:6380 192.168.233.105:6380(这行的顺序不要变, 前三个是 master, 后三个是 slave)
7, 通过命令可以查询 cluster info cluster nodes
8, 思考
两个 master 不能在一台机器上
一对主从 (数据相同) 不能在一台机器上
来源: http://www.bubuko.com/infodetail-2853621.html