redis集群的搭建

########环境#########
centos 7.2 , 
gcch 环境
ruby 2.0.0 redis
3.2.8 redis-3.3.3gem

 

公司要求搭建redis集群, 本来觉得挺好搞的,没想到弄到现在....

1, 环境准备

gcc , ruby 等环境准备

yum -y install gcc ruby ruby-devel rubygems rpm-build zlib

redis-ruby接口安装, 我直接yum安装的,

gem install redis

你也可以下载 redis.3.3.3.gem 然后执行命令

 

gem install redis-3.3.3.gem

2, 再说下单机redis的搭建方法

1, 下载redis 3.2.8 的安装包: 

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

2, 解压

tar -zxvf redis-3.2.8

3, 进入解压目录下

make

然后安装

make install PREFIX=/opt/wenbronk_soft/redis/redis1

安装完成后, 可在redis1 目录下看到一个bin目录, 对, 就是他了.

 

4, 此时已经可以访问了, 但需要更改下配置文件, 才可以使用外部ip访问

redis.conf 在redis的解压目录下

cp /opt/wenbronk_soft/redis/redis-3.2.8/redis.conf /opt/wenbronk_soft/redis/redis1/bin

vim 

bind 192.168.xx.202       (当前主机的ip)

5, 启动

./redis-server ./redis.conf

现在已经可以通过本地的 ./redis-cli -h localhost -p 6379 或者通过外部ip进行访问了.

3, 接下来是集群的安装

安装集群之前, 首先要保证单个的redis是空的, 也就是没有dump.rb文件没有密码设置, 就是 redis.conf中 masterauth        masterauth         没有设置

 

这儿搭建一个台机器上的伪集群, 分布式集群搭建和这个类似, 只是使用ruby创建集群时ip:port有所区别

注意:     至少需要 3  master+ 2  slave, 官方建议是 3 + 3 , 这儿使用 3  mater + 3 slave

 

1, 修改 redis.conf

添加守护进程: daemonize

port  7000                                        //端口7000,7001,7002,7003,7004,7005,7005
bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行, 
# pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志 

2, 复制解压目录下的  redis-trib.rb 到 安装 目录下 (/opt/wenbronk_soft/redis/redis/bin) 

cp /opt/wenbronk_soft/redis/redis-3.2.8/src/redis-trib.rb /opt/wenbronk_soft/redis/redis/bin

此时bin下目录结构为: 

 

3, 复制bin为另外6个实例

4, 进入到每个目录下更改 port设置

从 7000 - 7005

5, 使用启动脚本启动6个实例

cd bin
./redis-server ./redis.conf
cd ..
cd bin1
./redis-server ./redis.conf
cd ..
cd bin2
./redis-server ./redis.conf
cd ..
cd bin3
./redis-server ./redis.conf
cd ..
cd bin4
./redis-server ./redis.conf
cd ..
cd bin5
./redis-server ./redis.conf
cd ..

修改脚本权限

chmod u+x start.sh

6, 查看redis实例额运行状态

ps -ef | grep redis

netstat -tnlp | grep redis

 

 7, 创建集群 

./redis-trib.rb  create  --replicas  1 192.168.50.202:7000 192.168.50.202:7001 192.168.50.202:7002 192.168.50.202:7003 192.168.50.202:7004 192.168.50.202:7005

 

 

[wenbronk@localhost bin]$ ./redis-trib.rb  create  --replicas  1 192.168.50.202:7000 192.168.50.202:7001 192
.168.50.202:7002 192.168.50.202:7003 192.168.50.202:7004 192.168.50.202:7005>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.50.202:7000
192.168.50.202:7001
192.168.50.202:7002
Adding replica 192.168.50.202:7003 to 192.168.50.202:7000
Adding replica 192.168.50.202:7004 to 192.168.50.202:7001
Adding replica 192.168.50.202:7005 to 192.168.50.202:7002
M: b06c9670ad6e16cf41c9eeefb8260ad29dbb52e8 192.168.50.202:7000slots:0-5460 (5461 slots) master
M: 048291cbc8e9ccf81de57f02150447340d310fe0 192.168.50.202:7001slots:5461-10922 (5462 slots) master
M: 740557eca4a8fa31d67fe6a7f6b34814f3f96094 192.168.50.202:7002slots:10923-16383 (5461 slots) master
S: 63a9d243b8da03169dee24ec9403e50f36ab7cb0 192.168.50.202:7003replicates b06c9670ad6e16cf41c9eeefb8260ad29dbb52e8
S: 824b5d23e012cd7082701e3737ce8ea21eb8abe3 192.168.50.202:7004replicates 048291cbc8e9ccf81de57f02150447340d310fe0
S: f00948f8f9df4c10cba340cab3f0767d98f00b77 192.168.50.202:7005replicates 740557eca4a8fa31d67fe6a7f6b34814f3f96094
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.50.202:7000)
M: b06c9670ad6e16cf41c9eeefb8260ad29dbb52e8 192.168.50.202:7000slots:0-5460 (5461 slots) master1 additional replica(s)
M: 740557eca4a8fa31d67fe6a7f6b34814f3f96094 192.168.50.202:7002slots:10923-16383 (5461 slots) master1 additional replica(s)
S: 824b5d23e012cd7082701e3737ce8ea21eb8abe3 192.168.50.202:7004slots: (0 slots) slavereplicates 048291cbc8e9ccf81de57f02150447340d310fe0
S: f00948f8f9df4c10cba340cab3f0767d98f00b77 192.168.50.202:7005slots: (0 slots) slavereplicates 740557eca4a8fa31d67fe6a7f6b34814f3f96094
M: 048291cbc8e9ccf81de57f02150447340d310fe0 192.168.50.202:7001slots:5461-10922 (5462 slots) master1 additional replica(s)
S: 63a9d243b8da03169dee24ec9403e50f36ab7cb0 192.168.50.202:7003slots: (0 slots) slavereplicates b06c9670ad6e16cf41c9eeefb8260ad29dbb52e8
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

ok, 集群搭建完成

 深坑, redis 集群之间的通讯端口为basePort + 1w

4 链接集群

1, redis客户端连接

 -c 连接集群

-p 如果bind 绑定的是本机地址, 那么必须加

./redis-cli -h 192.168.50.202 -p 7006 -c

2, 简单测试

set abc 1234
get abc

 

3, java连接

Jedis Cluster 会自动去发现集群中的节点,所以JedisClusterNodes只需要 add一个实例

ps -ef | grep redis | awk '{print $2}' | xargs kill -9

 

明天单独写吧.. 东西很多..

 

原创地址, http://www.cnblogs.com/wenbronk/p/6864390.html  转载请注明出处, 谢谢

转载于:https://www.cnblogs.com/wenbronk/p/6864390.html

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

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

相关文章

2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结

2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结 找出全书你认为最重要的一章,深入重新学习一下,要求(期末占10分): 完成这一章所有习题详细总结本章要点给你的结对学习搭档讲解你的总结并获取反馈我选…

进程间五种通信方式

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机…

电子书下载:Silverlight 5 in Action

下载:http://www.ctdisk.com/file/8447319

git 的使用方法

git 的使用有3个主要步骤: 1.1 工作区域操作: 在自己的git账号下构建一个工作目录, 并往工作目录里添加文件内容(cp /root/data/VIP_Amount_prediction/* ./)。 cd 当前工作目录, git init, 初始…

Codeforces 898E Squares and not squares

题目大意 给定 $n$($n$ 是偶数,$2\le n\le 2\times 10^{5}$)个非负整数 $a_1,\dots, a_n$($a_i\le 10^9$)。 要求将其中 $n/2$ 个数变成平方数,另外 $n/2$ 个数变成非平方数,变化后的数必须仍是…

UTC时间

每个地区都有自己的本地时间,在网上以及无线电通信中时间转换的问题就显得格外突出。我自己就经常混淆于此,特地研究了一下,记录在此以备忘。 整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合&#xff…

Virtualbox桥接网卡设置

正常情况下,像设置virtualbox虚拟机的桥接网卡非常简单,只需要点配置,然后在配置界面点击网络,然后在右边的网络里选择桥接网络即可。但是如果这么简单就好了,今天要说的就是在不正常的情况下是怎么设置的。 工具/原料…

利用CSS、JavaScript及Ajax实现图片预加载的三大方法

预加载图片是提高用户体验的一个很好方法。图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度。这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速、无缝地发布,也可帮助用户在…

ThinkJS前端搭配vue时的Nginx配置

Thinkjs 作为奇舞团开源的nodejs mvc框架之一,引起了很多NodeJS程序员的亲赖。但是其关于静态文件处理部分支持不够完善,主要是体现在SPA单页应用,之前在ThinkJS 2.*版本时写过一个关于处理单页应用静态资源的middleware think-resource-spa,…

SQL疑难杂症【4 】大量数据查询的时候避免子查询

前几天发现系统变得很慢,在Profiler里面发现有的SQL执行了几十秒才返回结果,当时的SQL如下: 可以看得出来,在652行用了子查询,恰巧目标表(QS_WIP)中的记录数为100000000,通过如下SQL可以得到: S…

2020-11-27

总结各种RGB转YUV的转换公式 如果数据位宽都以8位来说.ITU709:允许 0~255之间所有数据 ITU601:只允许 16~235之间数据, 601是SDTV的数据结构; 656是SDTV的interface 709是HDTV的数据结构 ;1120是HDTV的interface 最近在学习视频的颜色空间转换&#x…

python学习笔记1-基础语法

1 在3版本中print需要加上括号2 多行语句:用\连接 1 item_one1 2 item_two2 3 item_three3 4 total item_one \ 5 item_two \ 6 item_three 7 print (total) 3 引号   字符串通常在引号中 不管是单引号 双引号还是三引号   必须保证前后一致…

『原创』一个基于Win CE 5.0的Txt文件阅读器

最近,拿到一台亲戚送的GPS导航仪,其系统是基于WinCE5.0的,所以我觉得可以写点小程序上去,上网一搜,还附带破解方法,把GPS破解后就变成一台屏幕超大的PDA了,于是我想用它看电子书,无奈…

ARM Cortex-A系列(A53、A57、A73等)处理器性能分类与对比

在如今这个电子产品泛滥的年代,仅仅靠品牌或是外观已经不足以辨别产品的优劣,其内置的处理器自然也就成为了分辨产品是否高端的标准之一。那么我们今天就不妨好好了解一下近几年来电子产品中较为主流的RAM处理器。 在这之前让我们先简单认识一下处理器的…

批量创建10个系统帐号tianda01-tianda10并设置密码

#1、添加用户 useradd tianda01#2、非交互式给密码 echo "pass"|passwd --stdin tianda#3、01-10 加0思路 (1)echo {00..10}(2)seq -w 10#随机密码6种方法 (1)echo $RANDOM | md5sum | cut -c 1-8(2)yum -y install expect mkpasswd -l 12 -d 5 #expect随机mkpasswd …

DIV常用属性大全自己整理

一、属性列表 代码如下:color : #999999 文字颜色 font-family : 宋体 文字字型 font-size : 10pt 文字大小 font-style:itelic 文字斜体育 font-variant:small-caps 小字体 letter-spacing : 1pt 文字间距 line-height : 200% 设定行高 font-weight:bold 文字粗体 vertical-a…

.NET 3.5 - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除

步步为营VS 2008 .NET 3.5(8) - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除作者&#xff1a;webabcd介绍以Northwind为示例数据库&#xff0c;DLINQ(LINQ to SQL)之完全面向对象的添加操作、查询操作、更新操作和删除操作示例Sample.aspx <% Page Language&quo…

ARM处理器的分类

对于ARM处理器而言&#xff0c;其目前有Classic系列、Cortex-M系列、Cortex-R系列、Cortex-A系列和Cortex-A50系列5个大类。 Classic系列 该系列处理器由三个子系列组成&#xff1a; ARM7系列&#xff1a;基于ARMv3或ARMv4架构 ARM9系列&#xff1a;基于ARMv5架构 ARM11系列…

Poj 1019

传送门&#xff1a;http://poj.org/problem?id1019 主要是找数学规律 然后用好pow和log函数&#xff0c;由于数组过大&#xff0c;数组的类型用unsigned 1 #include<iostream>2 #include<cmath>3 using namespace std;4 5 int t;6 int k;7 int n;8 unsigned a[312…

ARM版本系列及家族成员梳理

ARM公司简介 ARM是Advanced RISC Machines的缩写&#xff0c;它是一家微处理器行业的知名企业&#xff0c;该企业设计了大量高性能、廉价、耗能低的RISC &#xff08;精简指令集&#xff09;处理器。 1985年第一个ARM原型在英国剑桥诞生。 公司的特点是只设计芯片&#xff0c…