手把手教你部署 Redis Cluster
环境准备
阿里云申请3台ECS,如下:
| 序号 | 内网IP | OS |
|---|---|---|
| A | 172.16.190.78 | CentOS 7.6 |
| B | 172.16.242.36 | CentOS 7.6 |
| C | 172.16.190.77 | CentOS 7.6 |
节点规划
采用三主三从:
| 主节点 | 从节点 |
|---|---|
| 172.16.190.78:7000 | 172.16.242.36:7001 |
| 172.16.242.36:7000 | 172.16.190.77:7001 |
| 172.16.190.77:7000 | 172.16.190.78:7001 |
部署Redis
安装
在每台服务器上执行以下操作
$ cd ~/software
# 下载redis安装包
$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
$ tar -xf redis-4.0.11.tar.gz #编译
$ cd redis-4.0.11
$ make # 创建redis安装目录,并将可执行文件拷贝到bin下
$ mkdir -pv ~/redis/conf ~/redis/bin ~/redis/log ~/redis/data/7000 ~/redis/data/7001
$ cd ~/redis
$ cp ../software/redis-4.0.11/src/redis-* bin/
$ rm bin/*.c *.o
配置
在每台机器上创建redis实例的配置,如在A节点上
# 配置7000端口实例
$ vim ~/redis/conf/redis7000.conf
bind 172.16.190.78 port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
timeout 3600
daemonize yes pidfile /home/dolphin/redis/pid/redis7000.pid
logfile "/home/dolphin/redis/log/redis7000.log"
dir "/home/dolphin/redis/data/7000" rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS "" # 配置7001端口实例
$ vim ~/redis/conf/redis7000.conf
bind 172.16.190.78 port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
timeout 3600
daemonize yes pidfile /home/dolphin/redis/pid/redis7001.pid
logfile "/home/dolphin/redis/log/redis7001.log"
dir "/home/dolphin/redis/data/7001" rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""
其他两个节点类似。
启动实例
$ cd ~/redis
$ bin/redis-server conf/redis7000.conf
$ bin/redis-server conf/redis7001.conf
创建集群
如果是redis 5,可以直接用redis-cli工具来创建集群。对于Redis 4或3,需要另一个工具 redis-trib.rb来帮忙。对于 redis-trib.rb,需要安装redis gem。
$ gem install redis
Fetching redis-4.1.4.gem
Successfully installed redis-4.1.4
Parsing documentation for redis-4.1.4
Installing ri documentation for redis-4.1.4
Done installing documentation for redis after 1 seconds
1 gem installed
若报错误如下,需要升级ruby的版本,参考附录部分。
Fetching: redis-4.1.4.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.
然后通过 redis-trib.rb 创建redis集群
$ redis-trib.rb create --replicas 1 172.16.190.78:7000 172.16.242.36:7000 172.16.190.79:7000 172.16.190.78:7001 172.16.242.36:7001 172.16.190.79:7001
在弹出的确认中输入yes,一切顺利的话最终会出现如下提示
[OK] All 16384 slots covered
此时代表 redis cluster已经部署成功。
验证
登陆任意节点
$ redis-cli -h 72.16.190.78 -p 7000 -c
172.16.190.78:7000> cluster nodes
4a1b49cd77dbd18eba677663777f211be6f68dae 172.16.242.36:7001@17001 slave 2c75029ab638a48537a4c02ed0ca77a19fc4106b 0 1591274265000 5 connected
d0381ef4aad364c42e08bf1c2d78168f4901bd90 172.16.190.78:7001@17001 slave 08a5e808d2e6f6b231d73519bd4f05f74614c2a2 0 1591274265000 4 connected
08a5e808d2e6f6b231d73519bd4f05f74614c2a2 172.16.190.77:7000@17000 master - 0 1591274266097 3 connected 10923-16383
e5c154dcf02526b807c67bebf0a63b4c98118ffe 172.16.190.77:7001@17001 slave 50884e234c5f1ccf03f5a6d1cc4e6e6dc4779752 0 1591274266197 6 connected
2c75029ab638a48537a4c02ed0ca77a19fc4106b 172.16.190.78:7000@17000 myself,master - 0 1591274264000 1 connected 0-5460
50884e234c5f1ccf03f5a6d1cc4e6e6dc4779752 172.16.242.36:7000@17000 master - 0 1591274265193 2 connected 5461-10922
172.16.190.78:7000>
第一列为节点id,可以看到节点172.16.190.78:7000为master,且分配的slot为0-5460,而172.16.242.36:7001为它的slave节点。
附录:升级rvm安装ruby
升级rvm的版本
$ curl -sSL https://get.rvm.io | bash -s stable
root用户rvm下载的路径为/usr/local/rvm
#解压rvm压缩包
$ cd /usr/local/rvm/archives
$ tar -xf rvm-1.29.10.tgz
另起一个窗口
$ cd /usr/local/rvm/archives/rvm-1.29.10/scripts
$ source rvm
# 修改rvm的ruby安装源,修改 RVM 的 Ruby 安装源到 Ruby China 的 Ruby 镜像服务器,这样能提高安装速度
$ echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > /usr/local/rvm/user/db
查看ruby的版本,并安装
$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.9]
[ruby-]2.5[.7]
[ruby-]2.6[.5]
[ruby-]2.7[.0]
ruby-head $ rvm install 2.4.9
安装成功后,默认使用的还是ruby老版本,需要指定使用新的版本。
$ rvm use 2.4.9
验证当前ruby的版本
$ ruby -version
ruby 2.4.9p362 (2019-10-02 revision 67824) [x86_64-linux]
升级成功。
更多分享, http://mustone.cn/
手把手教你部署 Redis Cluster的更多相关文章
- 手把手教你用redis实现一个简单的mq消息队列(java)
众所周知,消息队列是应用系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有 ActiveMQ,RabbitMQ,Zero ...
- 部署Redis Cluster 6.0 集群并开启密码认证 和 Redis-cluster-proxy负载
部署Redis Cluster集群并开启密码认证 如果只想简单的搭建Redis Cluster,不需要设置密码和公网访问,可以参考官方文档. 节点介绍 Cluster模式推荐最少有6个节点,本次实验搭 ...
- K8S部署Redis Cluster集群
kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...
- K8S部署Redis Cluster集群(三主三从模式) - 部署笔记
一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...
- 在 K8S 中快速部署 Redis Cluster & Redisinsight
Redis Cluster 部署 使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster . helm repo add bitnami h ...
- 如何用docker部署redis cluster
前言 由于本人是个docker控,不喜欢安装各种环境,而且安装redis-trib也有点繁琐,索性用docker来做redis cluster. 本文用的是伪集群,真正的集群放到不同的机器即可.端口是 ...
- 分布式锁没那么难,手把手教你实现 Redis 分布锁!|保姆级教程
书接上文 上篇文章「MySQL 可重复读,差点就让我背上了一个 P0 事故!」发布之后,收到很多小伙伴们的留言,从中又学习到很多,总结一下. 上篇文章可能举得例子有点不恰当,导致有些小伙伴没看懂为什么 ...
- 美女 Committer 手把手教你部署 Apache DolphinScheduler 单机版
还在为如何部署Apache DolphinScheduler 发愁么?自上篇<美女 Committer 手把手教你使用海豚调度>的视频发布后,受到社区伙伴们的热烈欢迎.但个别小伙伴在部署这 ...
- 理解 Redis(2) - 手把手教你理清 Redis 安装全过程
Redis 官网 https://redis.io/ 之前学习 Redis 学了好多次, 下载安装也都按照教程或官网文档弄过, 但是对于安装过程一直有点迷糊, 感觉稀里糊涂地就好了, 就可以用了. 这 ...
随机推荐
- Java实现洛谷 P1616 疯狂的采药
题目背景 此题为NOIP2005普及组第三题的疯狂版. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他 ...
- Java实现 蓝桥杯VIP 算法训练 整数平均值
题目描述 编写函数,求包含n个元素的整数数组中元素的平均值.要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值. (样例说明:5为输入数据的个数,3 4 0 0 2 是以空格隔 ...
- Java实现蓝桥杯日志统计
标题:日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在ts时刻编号id的帖子收到一个"赞" ...
- Java实现LeetCode_0001_Two Sum
import java.util.Arrays; import java.util.Scanner; public class TwoSum_1 { public static void main(S ...
- OV2640读ID全是FF问题
最近刚好在Cyclone IV上通过LVDS把一个7寸的屏点亮,赶着热度,淘宝买了OV2640这个摄像头模块,初始化因为用Vrilog比C复杂得多,易调试性不如C,所以使用STM32初始化,模块有F3 ...
- 解读三组容易混淆的Dockerfile指令
长话短说,今天分享三组容易混淆的Dockerfile指令, 帮助大家编写更优雅的Dockfile文件.构建更纯净的Docker镜像. COPY vs ADD COPY.ADD主体功能类似:从指定位置拷 ...
- java作品集:企业信息门户webtap
作品背景 随着企业应用的软件越来越多,并且信息软件基本以B/S为主了,很多时候各种软件的地址,让大家记的头昏脑胀,并且一堆密码要记,而且大部分系统之间无法互通,虽然市面上有各种集成方案,但无法做到简单 ...
- 聊聊依赖注入注解@Resource和@Autowired
1. 前言 @Resource和@Autowired注解都可以在Spring Framework应用中进行声明式的依赖注入.而且面试中经常涉及到这两个注解的知识点.今天我们来总结一下它们. 2. @R ...
- 宝塔面板搭载yii2.0项目关于open_basedir报错解决办法
昨天配置完宝塔的lamp后,然后把原本的yii项目放上去,发现出现三个报错,就是大概 require openssl之类的三个错误 然后去宝塔的界面里去配置了一个端口,然后再去阿里云上开放这个端口 ...
- cb16a_c++_顺序容器的选用_排序_二分查找
/*cb16a_c++_顺序容器的选用_排序_二分查找顺序容器: 1.vector的优点与缺点 vector优点:排序利用下标,快速排序,做二分查找非常快 2.list的优点与缺点 list优点:插入 ...
