一、原生命令方式和Ruby脚本方式区别

利用Ruby脚本部署和用原生命令部署,节点准备的步骤都是一样的,节点启动后的握手,以及主从、槽分配,利用Ruby脚本一步就能完成,利用原生命令需要一步一步地执行命令完成。

二、部署架构:3台服务器,互为主从,3主3从

三、准备6个节点配置文件

在172.28.18.75上操作

cd /etc/redis

vim redis-25701.conf

bind 172.28.18.75
port 25701
masterauth "Zaq1xsw@"
requirepass "Zaq1xsw@"
protected-mode yes
daemonize yes
dir "/etc/redis"
pidfile "/var/run/redis_25701.pid"
loglevel notice
logfile "redis-25701.log"
dbfilename "dump-25701.rdb" cluster-enabled yes
cluster-node-timeout 15000
cluster-config-file node-25701.conf
cluster-require-full-coverage no

替换端口号,并生成一个从节点配置文件

sed 's/25701/25702/g' redis-25701.conf > redis-25702.conf

复制这两个配置文件到172.28.18.103和172.28.18.104对应的目录下

scp -P25601 redis-25701.conf root@172.28.18.103:/etc/redis/

scp -P25601 redis-25702.conf root@172.28.18.103:/etc/redis/

scp -P25601 redis-25701.conf root@172.28.18.104:/etc/redis/

scp -P25601 redis-25702.conf root@172.28.18.104:/etc/redis/

四、启动6个节点

redis-server redis-25701.conf

查看redis-25701.log

集群模式运行成功,再启动其他5个节点,至此节点准备完毕。

五、安装Ruby环境

1、下载

wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz

2、解压

tar -zxvf  ruby-2.3.1.tar.gz

3、编译

cd ruby-2.3.1

./configure -prefix=/usr/local/ruby

make && make install

4、建立软连接

ln -s /usr/local/ruby/bin/ruby /usr/local/bin/ruby

ln -s /usr/local/ruby/bin/gem /usr/local/bin/gem

5、执行

ruby -v

六、安装Ruby的redis客户端 redis-3.3.0.gem

1、下载

cd /usr/local/src

wget http://rubygems.org/downloads/redis-3.3.0.gem

2、安装

gem install -l redis-3.3.0.gem

3、验证

gem list -- check redis gem

七、安装redis-trib.rb脚本

cp /usr/local/src/redis-4.0.2/src/redis-trib.rb /usr/local/bin/

八、利用redis-trib.rb脚本部署集群

1、首选确保各个节点的redis配置文件里,不能有

requirepass "xxxxxxxx"
protected-mode yes

两个设置项,

必须要有绑定IP设置 bind 172.28.18.XXX ,否则集群配置会连接不了节点而失败。

2、执行如下命令

redis-trib.rb create --replicas 1 172.28.18.75:25701 172.28.18.103:25701 172.28.18.104:25701 172.28.18.103:25702 172.28.18.104:25702 172.28.18.75:25702

redis-trib.rb create --replicas 1 主节点1 主节点2  主节点3 从节点1 从节点2 从节点3

继续yes

槽数据分配完毕,主从设置完毕,集群启动完毕

九、查看节点信息

在172.28.18.75上执行

redis-cli -h 172.28.18.75 -p 25701 cluster nodes

显示3主3从

十、查看集群信息

在172.28.18.75上执行

redis-cli -h 172.28.18.75 -p 25701 cluster info

分配了16384个槽,已知6个节点。

十一、客户端连接验证

redis-cli -c -h 172.28.18.75 -p 25701

-c 参数表示连接到集群

插入一个key,被分配到104节点上了,集群正常工作。

十二、java jedis连接集群

public class RedisClusterTest {
private static Logger logger=LoggerFactory.getLogger(RedisClusterTest.class); public static void main(String[] args) throws InterruptedException{
JedisCluster jedis;
//添加集群的服务节点Set集合
Set<HostAndPort> hostAndPortsSet =new HashSet<HostAndPort>();
//添加集群节点信息
hostAndPortsSet.add(new HostAndPort("172.28.18.75",25701));
hostAndPortsSet.add(new HostAndPort("172.28.18.103",25701));
hostAndPortsSet.add(new HostAndPort("172.28.18.104",25701)); //连接池配置
JedisPoolConfig config = new JedisPoolConfig();
//最大连接数, 默认8个
config.setMaxTotal(500);
//最大空闲连接数, 默认8个
config.setMaxIdle(100);
//最小空闲连接数, 默认0
config.setMinIdle(0);
//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
config.setMaxWaitMillis(2000); // 设置2秒
//对拿到的connection进行validateObject校验
config.setTestOnBorrow(true);
jedis=new JedisCluster(hostAndPortsSet,config);
System.out.println("===========增加数据===========");
System.out.println(jedis.set("key1","value1"));
System.out.println(jedis.set("key2","value2"));
System.out.println(jedis.set("key3", "value3"));
System.out.println("获取键key2:"+jedis.get("key2"));
System.out.println("获取key1的值:"+jedis.get("key1"));
System.out.println("key3的值:"+jedis.get("key3")); }
}

linux下redis4.0.2集群部署(利用Ruby脚本命令)的更多相关文章

  1. linux下redis4.0.2集群部署(利用原生命令)

    一.部署架构如下 每台服务器准备2个节点,一主一从,主节点为另外两台其中一台的主,从节点为另外两台其中一台的从. 二.准备6个节点配置文件 在172.28.18.75上操作 cd /etc/redis ...

  2. linux下redis4.0.2安装与部署

    一.redis的介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更 ...

  3. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  4. Linux下MySQL/MariaDB Galera集群搭建过程【转】

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

  5. Linux下Hadoop2.7.3集群环境的搭建

    Linux下Hadoop2.7.3集群环境的搭建 本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安 ...

  6. hbase-2.0.4集群部署

    hbase-2.0.4集群部署 1. 集群节点规划: rzx1 HMaster,HRegionServer rzx2 HRegionServer rzx3 HRegionServer 前提:搭建好ha ...

  7. redis4.0.1集群安装部署

    安装环境 序号 项目 值 1 OS版本 Red Hat Enterprise Linux Server release 7.1 (Maipo) 2 内核版本 3.10.0-229.el7.x86_64 ...

  8. Redis-4.0.11集群配置

    版本:redis-3.0.5 redis-3.2.0  redis-3.2.9  redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial. 集群 ...

  9. redis-5.0.5 集群部署

    之前写过一套基于redis-4.0.6版本的测试集群部署 https://www.cnblogs.com/mrice/p/10730309.html 最近生产环境需要部署一套redis-5.0.5版本 ...

随机推荐

  1. BZOJ - 3170: 松鼠聚会 (切比雪夫转曼哈顿距离)

    pro:  有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离.0&l ...

  2. RabbitMq入门以及使用教程

    祭出原帖:https://blog.csdn.net/lyhkmm/article/details/78772919 原文转载:http://blog.csdn.net/whycold/article ...

  3. 初识mysql数据库

    mysqld install :找到你的库 net start mysql ;启动mysql的服务端(server) mysql -uroot -p :启动mysql的客户端(Client) exit ...

  4. linux4.15.1编译init/mounts报错

    AR init/mounts.o arm-linux-ar: illegal option -- T Usage: arm-linux-ar [emulation options] [-]{dmpqr ...

  5. POI导出Execl文件,使JAVA虚拟机OOM

    由于在项目中使用POI导出execl,导致JAVA虚拟机OOM,采用以下方式解决问题: 原先方式: g_wb = new XSSFWorkbook(sourceFile.getInputStream( ...

  6. PythonStudy——流程控制 Process control

    1. 分支结构 -- if -- if...else...-- if...elif...else...-- if嵌套 ''' if 条件: 同缩进的代码块 ''' if age > 18: pr ...

  7. Session、Cookie、Cache、Token分别是什么及区别

    一.Session 1 )Session 解释 Session 是单用户的会话状态.当用户访问网站时,产生一个 sessionid.并存在于 cookies中.每次向服务器请求时,发送这个 cooki ...

  8. Linux内核分析第六次作业

    分析system_call中断处理过程 一.先在实验楼的虚拟机中MenuOs增加utsname和utsname-asm指令. 具体实现如下: 1.克隆最新新版本的menu,之后进入menu 2.进入t ...

  9. nginx屏蔽某段IP、某个国家的IP

    nginx中可通过写入配置文件的方法来达到一定的过滤IP作用,可使用deny来写. deny的使用方法可用于前端服务器无防护设备的时候过滤一些异常IP,过滤的client ip会被禁止再次访问,起到一 ...

  10. C# 数据库

    连接: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...