linux下redis4.0.2集群部署(利用Ruby脚本命令)

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

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

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

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

linux下redis4.0.2集群部署(利用Ruby脚本命令)第1张

三、准备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

linux下redis4.0.2集群部署(利用Ruby脚本命令)第2张

集群模式运行成功,再启动其他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、编译

cdruby-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

linux下redis4.0.2集群部署(利用Ruby脚本命令)第3张

六、安装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

linux下redis4.0.2集群部署(利用Ruby脚本命令)第4张

3、验证

gem list -- check redis gem

linux下redis4.0.2集群部署(利用Ruby脚本命令)第5张

七、安装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

linux下redis4.0.2集群部署(利用Ruby脚本命令)第6张

继续yes

linux下redis4.0.2集群部署(利用Ruby脚本命令)第7张

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

九、查看节点信息

在172.28.18.75上执行

redis-cli -h 172.28.18.75 -p 25701 cluster nodes

linux下redis4.0.2集群部署(利用Ruby脚本命令)第8张

显示3主3从

十、查看集群信息

在172.28.18.75上执行

redis-cli -h 172.28.18.75 -p 25701 cluster info

linux下redis4.0.2集群部署(利用Ruby脚本命令)第9张

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

十一、客户端连接验证

redis-cli -c -h 172.28.18.75 -p 25701

-c 参数表示连接到集群

linux下redis4.0.2集群部署(利用Ruby脚本命令)第10张

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

十二、java jedis连接集群

public classRedisClusterTest {
    private static Logger logger=LoggerFactory.getLogger(RedisClusterTest.class);
    
    public static void main(String[] args) throwsInterruptedException{
        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 = newJedisPoolConfig();
        //最大连接数, 默认8个
        config.setMaxTotal(500);
        //最大空闲连接数, 默认8个
        config.setMaxIdle(100);
        //最小空闲连接数, 默认0
        config.setMinIdle(0);
        //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
        config.setMaxWaitMillis(2000); //设置2秒
        //对拿到的connection进行validateObject校验
        config.setTestOnBorrow(true);
        jedis=newJedisCluster(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脚本命令)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mongodb到mysql数据库的数据迁移(Java,Windows)css 锚点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Docker 搭建 etcd 集群

阅读目录: 主机安装 集群搭建 API 操作 API 说明和 etcdctl 命令说明 etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很强大),实现了分布式键值存储和服务发现,etcd 和 ZooKeeper/Consul 非常相似,都提供了类似的功能,以及 REST API 的访问操作,...

SecureCRT连接linux设置vim显示颜色

只需要两个步骤: 1) 选项 --> 会话选项 --> 终端 --> 仿真 --> 勾选“ANSI 颜色”。 2) 在.bashrc中添加:export TERM=xterm 可用如下命令: [root@host1 conf]# echo "export TERM=xterm" >> ~/.bashrc [root@...

Linux安装TeamViewer

  1、下载teamview centos版本 官网只有rpm版本,附件中即为官网下载的teamview最新版本 (下载tar包方式,我这里打不开teamviewer的界面,所以这里不推荐)  官方下载地址:  https://www.teamviewer.com/zhCN/download/linux/ 2、下载rpm版本后,cd切换到下载目录下,执行...

PYMOTW: CONFIGPARSER

感谢PyMOTW中文翻译小组,这是一个很棒的技术文摘,类似于cookbook。  模块: ConfigParser 目的: 读取/写入配置文件,类似于Windows的INI文件 python版本: 1.5+ 1.1 描述       ConfigParser模块可以为你的应用程序创建用户可编辑的配置文件. 这个配置文件由一个个节组成,每个节可以包含配置数...

linux编译安装时常见错误解决办法

linux编译安装时常见错误解决办法 This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html configure: error: xslt-config not found. Please reinstall t...

CentOS7 复制文件夹和移动文件夹

CentOS7 复制文件夹和移动文件夹 linux下文件的复制、移动与删除命令为:cp,mv,rm一、文件复制命令cp 命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [option] source1 source2 source3 ... directory 参数说明:-a:是指archive的...