Redis【第二篇】集群搭建

第一步:准备

1.安装包

ruby-2.4.0.tar.gz

rubygems-2.6.10.tgz

zlib-1.2.11.tar.gz

redis-3.3.2.gem

2. 架构:

名称IP端口节点属性
redisA192.168.6.1286379主节点
redisB192.168.6.1289379从节点
redisC192.168.6.1296379主节点
redisD192.168.6.1299379从节点
redisE192.168.6.1306379主节点
redisF192.168.6.1309379从节点

2. 实例 redis 安装

参照 Redis【第一篇】安装 来安装架构中的实例。

第二步:安装Ruby

1. 版本

ruby-2.4.0

2. 安装

# tar zxvf ruby-2.4.0.tar.gz
# cd ruby-2.4.0
# ./configure prefix=/usr/local/ruby
# make
# make install

3. 设置环境变量

# echo 'export PATH="$PATH:/usr/local/ruby/bin"' >> /etc/profile
# source /etc/profile

4. 测试

# ruby -v

第三步:安装 rubygems

1. 版本

rubygems-2.6.10

2. 安装

# tar zxvf rubygems-2.6.10.tgz
# cd rubygems-2.6.10
# ruby setup.rb

3. 测试

# gem -v

第四步:安装zlib

1. 版本

zlib-1.2.11.tar.gz

2. 安装

# tar zxvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11
# ./configure --prefix=/usr/local/zlib
# make
# make install

第五步:安装 ruby-zlib

1. 版本

为 ruby-2.4.0 包中的文件。

2. 安装

# cd ruby-2.4.0/ext/zlib
# ruby ./extconf.rb --with-zlib-dir=/usr/local/zlib
# make
# make install

返回信息:

第六步:安装 redis-3.3.2.gem

1. 版本

redis-3.3.2.gem

2. 安装

gem install -l redis-3.3.2.gem

返回信息:

第七步:启动

1. 分别修改各个 redis 的配置文件

# cp redis.conf redis-cluster.conf
# vi redis-cluster.conf

编辑配置文件:

1)更改的内容:

daemonize no 更改为 daemonize yes
logfile "" 更改为 logfile "/root/redisA/logs/redis.log"    # 需要创建 logs 目录
dir ./ 更改为 dir /root/redisA/data    #需要创建 data 目录
appendonly no 更改为 appendonly yes

2)去掉注释的内容

# cluster-enabled yes
# cluster-config-file nodes-6379.conf
# cluster-node-timeout 15000
# cluster-slave-validity-factor 10
# cluster-migration-barrier 1
# cluster-require-full-coverage yes

2. 分别启动各个 redis 服务

# ./src/redis-server redis-cluster.conf

第八步:测试

1. 查看进程

# ps -ef|grep redis|grep -v grep

2. 查看日志

第九步:建立集群

1. 执行命令

# ./src/redis-trib.rb create --replicas 1 192.168.6.128:6379 192.168.6.128:9379 192.168.6.129:6379 192.168.6.129:9379 192.168.6.130:6379 192.168.6.130:9379

--replicas 1 表示每个主节点下有一个从节点。

默认是前三个为主节点,后三个为从节点。

默认情况下不能从 slaves 读取数据,但建立连接后,执行一次命令 READONLY,该 slaves 即可读取数据。

2. 返回信息

>>> Creating cluster
Connecting to node 192.168.6.128:6379: OK
Connecting to node 192.168.6.128:9379: OK
Connecting to node 192.168.6.129:6379: OK
Connecting to node 192.168.6.129:9379: OK
Connecting to node 192.168.6.130:6379: OK
Connecting to node 192.168.6.130:9379: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.6.128:6379
192.168.6.129:6379
192.168.6.130:6379
Adding replica 192.168.6.129:9379 to 192.168.6.128:6379
Adding replica 192.168.6.128:9379 to 192.168.6.129:6379
Adding replica 192.168.6.130:9379 to 192.168.6.130:6379
M: 31f6b90cfe190d94f39bef42449bdb7efe1b85b0 192.168.6.128:6379slots:0-5460 (5461 slots) master
S: 02c6f0321ebbaf52fe42dd372e5daf179ca77853 192.168.6.128:9379replicates 90fec8236d68d9e89262a1ae101056fa1da6df25
M: 90fec8236d68d9e89262a1ae101056fa1da6df25 192.168.6.129:6379slots:5461-10922 (5462 slots) master
S: 5cf4bd75f93514e1895f8bb5bb7042ae23f277e7 192.168.6.129:9379replicates 31f6b90cfe190d94f39bef42449bdb7efe1b85b0
M: 82889edd96156daa109e84868ceda24a0272ee82 192.168.6.130:6379slots:10923-16383 (5461 slots) master
S: 9e238a85863ea02fc534fc870db4f47fd79b9ef6 192.168.6.130:9379replicates 82889edd96156daa109e84868ceda24a0272ee82
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.6.128:6379)
M: 31f6b90cfe190d94f39bef42449bdb7efe1b85b0 192.168.6.128:6379slots:0-5460 (5461 slots) master1 additional replica(s)
M: 90fec8236d68d9e89262a1ae101056fa1da6df25 192.168.6.129:6379slots:5461-10922 (5462 slots) master1 additional replica(s)
S: 5cf4bd75f93514e1895f8bb5bb7042ae23f277e7 192.168.6.129:9379slots: (0 slots) slavereplicates 31f6b90cfe190d94f39bef42449bdb7efe1b85b0
S: 9e238a85863ea02fc534fc870db4f47fd79b9ef6 192.168.6.130:9379slots: (0 slots) slavereplicates 82889edd96156daa109e84868ceda24a0272ee82
M: 82889edd96156daa109e84868ceda24a0272ee82 192.168.6.130:6379slots:10923-16383 (5461 slots) master1 additional replica(s)
S: 02c6f0321ebbaf52fe42dd372e5daf179ca77853 192.168.6.128:9379slots: (0 slots) slavereplicates 90fec8236d68d9e89262a1ae101056fa1da6df25
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

集群创建成功!

第十步:测试

1. 客户端连接

# ./src/redis-cli -c -h 192.168.6.128 -p 6379

连接成功则返回:

2. 存取数据

1)连接192.168.6.128的6379端口,并存入数据

2)连接192.168.6.130的9379端口,并读取数据

此时,redis 的三主三从集群已搭建成功!

转载于:https://www.cnblogs.com/RUReady/p/6439763.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode之Ransom Note

1、题目 Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false. Each letter in th…

(转)java中对集合对象list的几种循环访问总结

Java集合的Stack、Queue、Map的遍历在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack、Queue、Map类型的遍历,还是有一些讲究的。最近看了一些代码,在便利Map时…

NET框架下如何使用PaddleOCRSharp

打开VSIDE,新建Windows窗体应用(.NETFramework)类型的项目,选择一个.NET框架,如.NETFramework 4.0,右键点击项目,选择属性》生成,目标平台设置成X64.菜单》工具》选项,Nuget包管理器》程序包管理&#xff0…

Android在全球的市场份额跃居全球第一

Android在全球的市场份额跃居全球第一2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%. 有兴趣的,可加…

LeetCode之Add Digits

1、题目 Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. For example: Given num 38, the process is like: 3 8 11, 1 1 2. Since 2 has only one digit, return it. 2、代码实现 public class Solution {publi…

Redis主从复制(Master-Slave Replication)

案例测试&#xff1a;1. Master新增网卡&#xff0c;修改server端配置IP : 192.168.40.128/24注释&#xff1a; bind&#xff0c;支持网络连接2. 新建虚机slave&#xff0c;配置网络&#xff0c;修改redis配置#slaveof <masterip> <masterport>slaveof 192.168.40.…

[原]TCP/UDP使用细节备忘

[原]TCP/UDP使用细节备忘首先&#xff0c;TCP和UDP的基本区别是TCP提供可靠的面向连接的流传输&#xff1b;UDP提供不可靠的基于数据包的传输&#xff1b;所谓可靠就是说发送端调用send后&#xff0c;数据就一定会发送给接收端。虽然这当中可能会消耗很长的时间&#xff0c;或者…

java程序员遇到的问题_JAVA程序员最常遇见的10个异常

程序员最不想遇到黑心老板外&#xff0c;异常也是难以不遇&#xff0c;现在列出10个最遇到的异常&#xff0c;大家可以参考一下。NO.1 java.lang.NullPointerException这个异常大家肯定都经常遇到&#xff0c;异常的解释是 "程序遇上了空指针 "&#xff0c;简单地说…

如何对一组 IP 地址 进行排序?

咨询区 Cracker我有一组如下IP地址。192.168.1.5 69.52.220.44 10.152.16.23 192.168.3.10 192.168.1.4 192.168.2.1我在寻找一个方法将他们排序成如下顺序。10.152.16.23 69.52.220.44 192.168.1.4 192.168.1.5 192.168.2.1回答区 Alex Aza对 ip 地址进行排序&#xff0c;大概…

LeetCode之Intersection of Two Arrays

1、题目 Given two arrays, write a function to compute their intersection. Example: Given nums1 [1, 2, 2, 1], nums2 [2, 2], return [2]. Note: Each element in the result must be unique.The result can be in any order.Subscribe to see which companies asked t…

如何为APK签名?

1.用来生成应用签名的文件①默认: debug.keystore > debug签名的应用程序不能在Android Market上架销售&#xff0c;它会强制你使用自己的签名。> 不同电脑使用此文件生成的签名不一样。那就意味着如果你换了机器进行apk版本升级&#xff0c;那么将会出现上面那种程序不能…

shell 杂记一(笨鸟)

查找子串cat /tmp/debug.log | perl -e while(<>) { if ($_ ~ /hd_uid(\d)/) { print "$1\n"; } } 匹配每行"hd_uid"后面的数字if [ ... ]then ...fiexit numcase $i in1) echo 1111;;2) echo 2222;;*) echo other;;esacbasename 返回…

基于 Azure 的认知服务将文本合成语音

基于 Azure 的认知服务将文本合成语音Intro前几天发了一个 .NET 20 周年祝福视频&#xff0c;语音是通过 Azure 的认知服务合成的&#xff0c;下面就来介绍一下如何将使用 Azure 的认识服务实现将文本合成为语音Prepare你可以在 Azure Portal 上创建一个免费的语音服务&#xf…

sql查询结果集根据指定条件排序的方法

oracle认为 null 最大。 升序排列&#xff0c;默认情况下&#xff0c;null值排后面。 降序排序&#xff0c;默认情况下&#xff0c;null值排前面。 有几种办法改变这种情况&#xff1a; &#xff08;1&#xff09;用 nvl 函数或decode 函数 将null转换为一特定值 &#xff08;2…

mysql怎么改字体编码_mysql怎么改字符编码?

mysql命令行修改字符编码1、修改数据库字符编码mysql> alter database mydb character set utf8 ;2、创建数据库时&#xff0c;指定数据库的字符编码mysql> create database mydb character set utf8 ;3、查看mysql数据库的字符编码mysql> show variables like charac…

LeetCode之Move Zeroes

1、题目 Given an array nums, write a function to move all 0s to the end of it while maintaining the relative order of the non-zero elements. For example, given nums [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]. Note: You …

七种RAID技术

想把好多硬盘组在一起使用的基本方式为&#xff1a;连接所有硬盘&#xff0c;先向第一个硬盘中写数据&#xff0c;满了之后&#xff0c;再向第二个硬盘上写数据&#xff0c;如此只是简单的连通了多个硬盘。 再此基础上发展了RAID技术&#xff1a;由独立磁盘组成的具有冗余特性的…

如何编译 dotnet/runtime 源代码

前言最近&#xff0c;准备为 dotnet/runtime 修改 issue&#xff0c;但是在 clone 代码后&#xff0c;发现要编译成功&#xff0c;远没有想象中那么容易。因此&#xff0c;将整个过程进行记录&#xff0c;以供大家参考。以下操作都是在 Windows 10 下完成。0.环境准备详见官方文…

网站高可用方案

前端&#xff1a;vanish squid等代理缓存动态数据缓存&#xff1a;对于不是经常变化的用memcached 如果跟微博差不多的场景可以用redis数据库&#xff1a;为了备份和恢复&#xff1a;可以用主从 对于主-》从-》从 有个参数log_slave_update参数决定后面两个从是否写日志一主多从…

Android:源码环境编译自定义的APP到ROM(System Image)中

有时候我们需要在源码环境中增加自己的应用或模块&#xff0c;随ROM一起发布。 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计&#xff08;如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考另一篇文章&#xff0c;直接在Eclipse中调试系统级应用源代码&…