0x00--在单台PC服务器上部署Redis集群,通过不同的TCP端口启动多实例,模拟多台独立PC组成集群。
0x01--环境描述:
1 Centos版本:CentOS Linux release 7.4.1708 (Core) 2 Redis版本:Redis 4.0.10 (00000000/0) 64 bit 3 安装方式:源码安装
0x02--编辑Redis实例配置文件
在根目录下新建/redis_cluster目录,用于存放多实例配置文件,这里使用6个TCP端口,编写6029--6034共计6个配置文件,使用折6个配置文件启动实例,并搭建Redis集群。
1 port 6029 ##端口号,用于模拟不同主机不同实例,6029,6030,6031,6032,6033,6034 2 bind 10.118.128.223 ##实例IP地址,默认为127.0.0.1,根据实际情况修改,集群节点间需要保证IP地址能相互通讯,网络层面需要放开相应端口的访问权限 3 daemonize yes ##允许Redis后台运行 4 pidfile /redis_cluster/redis_6029.pid ##pidfile 文件,每个实例一个,分别对应6029.6030.6031,6032,6033,6034 5 cluster-enabled yes ##开启集群cluster 6 cluster-config-file nodes_6029.conf ##集群配置文件 7 cluster-node-timeout 15000 ##请求超时时长,默认15秒,可依据网络情况自行修改配置
0x03--启动多个Redis实例
1 [root@centos7 6030]# redis-server /redis_cluster/6029/redis.conf 2 21267:C 29 Jun 16:45:41.271 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3 21267:C 29 Jun 16:45:41.271 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=21267, just started 4 21267:C 29 Jun 16:45:41.271 # Configuration loaded 5 [root@centos7 6030]# redis-server /redis_cluster/6030/redis.conf 6 21272:C 29 Jun 16:45:47.325 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 7 21272:C 29 Jun 16:45:47.325 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=21272, just started 8 21272:C 29 Jun 16:45:47.325 # Configuration loaded 9 [root@centos7 6030]# redis-server /redis_cluster/6031/redis.conf 10 21277:C 29 Jun 16:45:50.637 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 11 21277:C 29 Jun 16:45:50.637 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=21277, just started 12 21277:C 29 Jun 16:45:50.637 # Configuration loaded 13 [root@centos7 6030]# redis-server /redis_cluster/6032/redis.conf 14 21282:C 29 Jun 16:45:53.938 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 15 21282:C 29 Jun 16:45:53.939 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=21282, just started 16 21282:C 29 Jun 16:45:53.939 # Configuration loaded 17 [root@centos7 6030]# redis-server /redis_cluster/6033/redis.conf 18 21287:C 29 Jun 16:45:57.490 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 19 21287:C 29 Jun 16:45:57.490 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=21287, just started 20 21287:C 29 Jun 16:45:57.490 # Configuration loaded 21 [root@centos7 6030]# redis-server /redis_cluster/6034/redis.conf 22 21292:C 29 Jun 16:46:00.787 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 23 21292:C 29 Jun 16:46:00.788 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=21292, just started 24 21292:C 29 Jun 16:46:00.788 # Configuration loaded
查看进程,可看到已经有6个Redis实例启动,且端口号也可以明显看到
1 [root@centos7 src]# ps -ef|grep redis|grep cluster 2 root 21268 1 0 16:45 ? 00:00:03 redis-server 10.118.128.223:6029 [cluster] 3 root 21273 1 0 16:45 ? 00:00:03 redis-server 10.118.128.223:6030 [cluster] 4 root 21278 1 0 16:45 ? 00:00:03 redis-server 10.118.128.223:6031 [cluster] 5 root 21283 1 0 16:45 ? 00:00:03 redis-server 10.118.128.223:6032 [cluster] 6 root 21288 1 0 16:45 ? 00:00:03 redis-server 10.118.128.223:6033 [cluster] 7 root 21293 1 0 16:45 ? 00:00:03 redis-server 10.118.128.223:6034 [cluster]
0x04--配置Ruby环境-redis-trib.rb脚本
Redis3.0以后开始支持集群功能,官方推出了一个管理redis集群的工具--一个ruby脚本:redis-trib.rb
该脚本集成在redis的源码SRC目录下,所以,需要系统安装配置ruby环境,才能使用该脚本进行Redis集群的创建、配置和管理。
以下是该脚本的内容,仅供学习参考,redis版本为4.0.10
trib.rb脚本使用帮助:
1 [root@centos7 src]# ./redis-trib.rb help 2 Usage: redis-trib <command> <options> <arguments ...> 3 4 create host1:port1 ... hostN:portN ##创建集群 5 --replicas <arg> ##replicas参数指定当前创建的redis集群有几个Slave节点 6 check host:port ##检查集群,验证节点可用性 7 info host:port ##查看集群信息,节点信息 8 fix host:port ##修复集群 9 --timeout <arg> 10 reshard host:port ##在线迁移集群,from A to B 11 --from <arg> 12 --to <arg> 13 --slots <arg> 14 --yes 15 --timeout <arg> 16 --pipeline <arg> 17 rebalance host:port ##平衡集群节点slot数量 18 --weight <arg> 19 --auto-weights 20 --use-empty-masters 21 --timeout <arg> 22 --simulate 23 --pipeline <arg> 24 --threshold <arg> 25 add-node new_host:new_port existing_host:existing_port ##在线添加新的集群节点 26 --slave 27 --master-id <arg> 28 del-node host:port node_id ##在线删除集群节点 29 set-timeout host:port milliseconds ##redis集群节点心跳超时参数设置,默认15秒 30 call host:port command arg arg .. arg ##使命令在所有节点一起执行,慎用该参数 31 import host:port ##将外部Redis节点数据导入集群 32 --from <arg> 33 --copy 34 --replace 35 help (show this help) ##显示脚本使用帮助 36 37 For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster. 38 [root@centos7 src]#
0x05--配置Ruby环境-安装Ruby
注意:redis-trib.rb的运行需要的ruby包,Ruby版本至少需要2.2,否则在安装时会出现如下报错,可以自行下载2.2.2版本以上的Ruby进行安装,也可以参照码上青天的博文进行在线升级
1 [root@centos7 6030]# gem install redis 2 Fetching: redis-4.0.1.gem (100%) 3 ERROR: Error installing redis: 4 redis requires Ruby version >= 2.2.2.
[root@centos7 6030]# yum install -y ruby ruby-devel rubygems rpm-build Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 percona-release-noarch | 2.9 kB 00:00:00 percona-release-x86_64 | 2.9 kB 00:00:00 (1/3): extras/7/x86_64/primary_db | 149 kB 00:00:00 (2/3): percona-release-noarch/7/primary_db | 15 kB 00:00:01 (3/3): percona-release-x86_64/7/x86_64/primary_db | 784 kB 00:00:02 Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package rpm-build.x86_64 0:4.11.3-32.el7 will be installed --> Processing Dependency: rpm = 4.11.3-32.el7 for package: rpm-build-4.11.3-32.el7.x86_64 --> Processing Dependency: patch >= 2.5 for package: rpm-build-4.11.3-32.el7.x86_64 --> Processing Dependency: system-rpm-config for package: rpm-build-4.11.3-32.el7.x86_64 --> Processing Dependency: perl(Thread::Queue) for package: rpm-build-4.11.3-32.el7.x86_64 ---> Package ruby.x86_64 0:2.0.0.648-33.el7_4 will be installed --> Processing Dependency: ruby-libs(x86-64) = 2.0.0.648-33.el7_4 for package: ruby-2.0.0.648-33.el7_4.x86_64 --> Processing Dependency: rubygem(bigdecimal) >= 1.2.0 for package: ruby-2.0.0.648-33.el7_4.x86_64 --> Processing Dependency: libruby.so.2.0()(64bit) for package: ruby-2.0.0.648-33.el7_4.x86_64 ---> Package ruby-devel.x86_64 0:2.0.0.648-33.el7_4 will be installed ---> Package rubygems.noarch 0:2.0.14.1-33.el7_4 will be installed --> Processing Dependency: rubygem(rdoc) >= 4.0.0 for package: rubygems-2.0.14.1-33.el7_4.noarch --> Processing Dependency: rubygem(psych) >= 2.0.0 for package: rubygems-2.0.14.1-33.el7_4.noarch --> Processing Dependency: rubygem(io-console) >= 0.4.2 for package: rubygems-2.0.14.1-33.el7_4.noarch --> Running transaction check ---> Package patch.x86_64 0:2.7.1-10.el7_5 will be installed ---> Package perl-Thread-Queue.noarch 0:3.02-2.el7 will be installed ---> Package redhat-rpm-config.noarch 0:9.1.0-80.el7.centos will be installed --> Processing Dependency: dwz >= 0.4 for package: redhat-rpm-config-9.1.0-80.el7.centos.noarch --> Processing Dependency: perl-srpm-macros for package: redhat-rpm-config-9.1.0-80.el7.centos.noarch ---> Package rpm.x86_64 0:4.11.3-25.el7 will be updated --> Processing Dependency: rpm = 4.11.3-25.el7 for package: rpm-libs-4.11.3-25.el7.x86_64 --> Processing Dependency: rpm = 4.11.3-25.el7 for package: rpm-python-4.11.3-25.el7.x86_64 ---> Package rpm.x86_64 0:4.11.3-32.el7 will be an update ---> Package ruby-libs.x86_64 0:2.0.0.648-33.el7_4 will be installed ---> Package rubygem-bigdecimal.x86_64 0:1.2.0-33.el7_4 will be installed ---> Package rubygem-io-console.x86_64 0:0.4.2-33.el7_4 will be installed ---> Package rubygem-psych.x86_64 0:2.0.0-33.el7_4 will be installed --> Processing Dependency: libyaml-0.so.2()(64bit) for package: rubygem-psych-2.0.0-33.el7_4.x86_64 ---> Package rubygem-rdoc.noarch 0:4.0.0-33.el7_4 will be installed --> Processing Dependency: ruby(irb) = 2.0.0.648 for package: rubygem-rdoc-4.0.0-33.el7_4.noarch --> Processing Dependency: rubygem(json) >= 1.7.7 for package: rubygem-rdoc-4.0.0-33.el7_4.noarch --> Running transaction check ---> Package dwz.x86_64 0:0.11-3.el7 will be installed ---> Package libyaml.x86_64 0:0.1.4-11.el7_0 will be installed ---> Package perl-srpm-macros.noarch 0:1-8.el7 will be installed ---> Package rpm-libs.x86_64 0:4.11.3-25.el7 will be updated --> Processing Dependency: rpm-libs(x86-64) = 4.11.3-25.el7 for package: rpm-build-libs-4.11.3-25.el7.x86_64 ---> Package rpm-libs.x86_64 0:4.11.3-32.el7 will be an update ---> Package rpm-python.x86_64 0:4.11.3-25.el7 will be updated ---> Package rpm-python.x86_64 0:4.11.3-32.el7 will be an update ---> Package ruby-irb.noarch 0:2.0.0.648-33.el7_4 will be installed ---> Package rubygem-json.x86_64 0:1.7.7-33.el7_4 will be installed --> Running transaction check ---> Package rpm-build-libs.x86_64 0:4.11.3-25.el7 will be updated ---> Package rpm-build-libs.x86_64 0:4.11.3-32.el7 will be an update --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================= Package Arch Version Repository Size ======================================================================================================================= Installing: rpm-build x86_64 4.11.3-32.el7 base 147 k ruby x86_64 2.0.0.648-33.el7_4 base 71 k ruby-devel x86_64 2.0.0.648-33.el7_4 base 131 k rubygems noarch 2.0.14.1-33.el7_4 base 219 k Installing for dependencies: dwz x86_64 0.11-3.el7 base 99 k libyaml x86_64 0.1.4-11.el7_0 base 55 k patch x86_64 2.7.1-10.el7_5 updates 110 k perl-Thread-Queue noarch 3.02-2.el7 base 17 k perl-srpm-macros noarch 1-8.el7 base 4.6 k redhat-rpm-config noarch 9.1.0-80.el7.centos base 79 k ruby-irb noarch 2.0.0.648-33.el7_4 base 92 k ruby-libs x86_64 2.0.0.648-33.el7_4 base 2.8 M rubygem-bigdecimal x86_64 1.2.0-33.el7_4 base 83 k rubygem-io-console x86_64 0.4.2-33.el7_4 base 54 k rubygem-json x86_64 1.7.7-33.el7_4 base 79 k rubygem-psych x86_64 2.0.0-33.el7_4 base 82 k rubygem-rdoc noarch 4.0.0-33.el7_4 base 322 k Updating for dependencies: rpm x86_64 4.11.3-32.el7 base 1.2 M rpm-build-libs x86_64 4.11.3-32.el7 base 105 k rpm-libs x86_64 4.11.3-32.el7 base 276 k rpm-python x86_64 4.11.3-32.el7 base 82 k Transaction Summary ======================================================================================================================= Install 4 Packages (+13 Dependent packages) Upgrade ( 4 Dependent packages) Total download size: 6.0 M Downloading packages: No Presto metadata available for base (1/21): dwz-0.11-3.el7.x86_64.rpm | 99 kB 00:00:00 (2/21): patch-2.7.1-10.el7_5.x86_64.rpm | 110 kB 00:00:00 (3/21): libyaml-0.1.4-11.el7_0.x86_64.rpm | 55 kB 00:00:00 (4/21): perl-Thread-Queue-3.02-2.el7.noarch.rpm | 17 kB 00:00:00 (5/21): perl-srpm-macros-1-8.el7.noarch.rpm | 4.6 kB 00:00:00 (6/21): redhat-rpm-config-9.1.0-80.el7.centos.noarch.rpm | 79 kB 00:00:00 (7/21): rpm-build-4.11.3-32.el7.x86_64.rpm | 147 kB 00:00:00 (8/21): rpm-build-libs-4.11.3-32.el7.x86_64.rpm | 105 kB 00:00:00 (9/21): rpm-libs-4.11.3-32.el7.x86_64.rpm | 276 kB 00:00:00 (10/21): rpm-python-4.11.3-32.el7.x86_64.rpm | 82 kB 00:00:00 (11/21): ruby-2.0.0.648-33.el7_4.x86_64.rpm | 71 kB 00:00:00 (12/21): rpm-4.11.3-32.el7.x86_64.rpm | 1.2 MB 00:00:00 (13/21): ruby-irb-2.0.0.648-33.el7_4.noarch.rpm | 92 kB 00:00:00 (14/21): ruby-libs-2.0.0.648-33.el7_4.x86_64.rpm | 2.8 MB 00:00:00 (15/21): rubygem-bigdecimal-1.2.0-33.el7_4.x86_64.rpm | 83 kB 00:00:00 (16/21): rubygem-io-console-0.4.2-33.el7_4.x86_64.rpm | 54 kB 00:00:00 (17/21): rubygem-json-1.7.7-33.el7_4.x86_64.rpm | 79 kB 00:00:00 (18/21): rubygem-psych-2.0.0-33.el7_4.x86_64.rpm | 82 kB 00:00:00 (19/21): rubygem-rdoc-4.0.0-33.el7_4.noarch.rpm | 322 kB 00:00:00 (20/21): rubygems-2.0.14.1-33.el7_4.noarch.rpm | 219 kB 00:00:00 (21/21): ruby-devel-2.0.0.648-33.el7_4.x86_64.rpm | 131 kB 00:00:09 ----------------------------------------------------------------------------------------------------------------------- Total 566 kB/s | 6.0 MB 00:00:10 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : ruby-libs-2.0.0.648-33.el7_4.x86_64 1/25 Updating : rpm-4.11.3-32.el7.x86_64 2/25 Updating : rpm-libs-4.11.3-32.el7.x86_64 3/25 Updating : rpm-build-libs-4.11.3-32.el7.x86_64 4/25 Installing : dwz-0.11-3.el7.x86_64 5/25 Installing : patch-2.7.1-10.el7_5.x86_64 6/25 Installing : libyaml-0.1.4-11.el7_0.x86_64 7/25 Installing : rubygem-io-console-0.4.2-33.el7_4.x86_64 8/25 Installing : rubygem-bigdecimal-1.2.0-33.el7_4.x86_64 9/25 Installing : rubygem-json-1.7.7-33.el7_4.x86_64 10/25 Installing : rubygem-psych-2.0.0-33.el7_4.x86_64 11/25 Installing : ruby-2.0.0.648-33.el7_4.x86_64 12/25 Installing : ruby-irb-2.0.0.648-33.el7_4.noarch 13/25 Installing : rubygems-2.0.14.1-33.el7_4.noarch 14/25 Installing : rubygem-rdoc-4.0.0-33.el7_4.noarch 15/25 Installing : perl-Thread-Queue-3.02-2.el7.noarch 16/25 Installing : perl-srpm-macros-1-8.el7.noarch 17/25 Installing : redhat-rpm-config-9.1.0-80.el7.centos.noarch 18/25 Installing : rpm-build-4.11.3-32.el7.x86_64 19/25 Installing : ruby-devel-2.0.0.648-33.el7_4.x86_64 20/25 Updating : rpm-python-4.11.3-32.el7.x86_64 21/25 Cleanup : rpm-python-4.11.3-25.el7.x86_64 22/25 Cleanup : rpm-build-libs-4.11.3-25.el7.x86_64 23/25 Cleanup : rpm-libs-4.11.3-25.el7.x86_64 24/25 Cleanup : rpm-4.11.3-25.el7.x86_64 25/25 Verifying : ruby-libs-2.0.0.648-33.el7_4.x86_64 1/25 Verifying : rubygem-rdoc-4.0.0-33.el7_4.noarch 2/25 Verifying : rubygem-io-console-0.4.2-33.el7_4.x86_64 3/25 Verifying : rubygem-bigdecimal-1.2.0-33.el7_4.x86_64 4/25 Verifying : perl-srpm-macros-1-8.el7.noarch 5/25 Verifying : perl-Thread-Queue-3.02-2.el7.noarch 6/25 Verifying : redhat-rpm-config-9.1.0-80.el7.centos.noarch 7/25 Verifying : ruby-devel-2.0.0.648-33.el7_4.x86_64 8/25 Verifying : libyaml-0.1.4-11.el7_0.x86_64 9/25 Verifying : rpm-build-4.11.3-32.el7.x86_64 10/25 Verifying : rubygem-json-1.7.7-33.el7_4.x86_64 11/25 Verifying : patch-2.7.1-10.el7_5.x86_64 12/25 Verifying : rubygem-psych-2.0.0-33.el7_4.x86_64 13/25 Verifying : ruby-2.0.0.648-33.el7_4.x86_64 14/25 Verifying : rpm-python-4.11.3-32.el7.x86_64 15/25 Verifying : rubygems-2.0.14.1-33.el7_4.noarch 16/25 Verifying : rpm-build-libs-4.11.3-32.el7.x86_64 17/25 Verifying : dwz-0.11-3.el7.x86_64 18/25 Verifying : rpm-libs-4.11.3-32.el7.x86_64 19/25 Verifying : ruby-irb-2.0.0.648-33.el7_4.noarch 20/25 Verifying : rpm-4.11.3-32.el7.x86_64 21/25 Verifying : rpm-4.11.3-25.el7.x86_64 22/25 Verifying : rpm-python-4.11.3-25.el7.x86_64 23/25 Verifying : rpm-build-libs-4.11.3-25.el7.x86_64 24/25 Verifying : rpm-libs-4.11.3-25.el7.x86_64 25/25 Installed: rpm-build.x86_64 0:4.11.3-32.el7 ruby.x86_64 0:2.0.0.648-33.el7_4 ruby-devel.x86_64 0:2.0.0.648-33.el7_4 rubygems.noarch 0:2.0.14.1-33.el7_4 Dependency Installed: dwz.x86_64 0:0.11-3.el7 libyaml.x86_64 0:0.1.4-11.el7_0 patch.x86_64 0:2.7.1-10.el7_5 perl-Thread-Queue.noarch 0:3.02-2.el7 perl-srpm-macros.noarch 0:1-8.el7 redhat-rpm-config.noarch 0:9.1.0-80.el7.centos ruby-irb.noarch 0:2.0.0.648-33.el7_4 ruby-libs.x86_64 0:2.0.0.648-33.el7_4 rubygem-bigdecimal.x86_64 0:1.2.0-33.el7_4 rubygem-io-console.x86_64 0:0.4.2-33.el7_4 rubygem-json.x86_64 0:1.7.7-33.el7_4 rubygem-psych.x86_64 0:2.0.0-33.el7_4 rubygem-rdoc.noarch 0:4.0.0-33.el7_4 Dependency Updated: rpm.x86_64 0:4.11.3-32.el7 rpm-build-libs.x86_64 0:4.11.3-32.el7 rpm-libs.x86_64 0:4.11.3-32.el7 rpm-python.x86_64 0:4.11.3-32.el7 Complete!
0x06--安装Ruby 2.4.1
1 [root@centos7 6030]# rvm install 2.4.1 2 Searching for binary rubies, this might take some time. 3 Found remote file https://rvm_io.global.ssl.fastly.net/binaries/centos/7/x86_64/ruby-2.4.1.tar.bz2 4 Checking requirements for centos. 5 Installing requirements for centos. 6 Installing required packages: autoconf, automake, bison, libffi-devel, libtool, readline-devel, sqlite-devel, zlib-devel, libyaml-devel, openssl-devel............................... 7 Requirements installation successful. 8 ruby-2.4.1 - #configure 9 ruby-2.4.1 - #download 10 % Total % Received % Xferd Average Speed Time Time Time Current 11 Dload Upload Total Spent Left Speed 12 100 14.1M 100 14.1M 0 0 94302 0 0:02:36 0:02:36 --:--:-- 75988 13 No checksum for downloaded archive, recording checksum in user configuration. 14 ruby-2.4.1 - #validate archive 15 ruby-2.4.1 - #extract 16 ruby-2.4.1 - #validate binary 17 ruby-2.4.1 - #setup 18 ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1@global 19 ruby-2.4.1 - #importing gemset /usr/local/rvm/gemsets/global.gems.............................. 20 ruby-2.4.1 - #generating global wrappers........ 21 ruby-2.4.1 - #gemset created /usr/local/rvm/gems/ruby-2.4.1 22 ruby-2.4.1 - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list 23 ruby-2.4.1 - #generating default wrappers........
##查看安装结果
1 [root@centos7 6030]# rvm use 2.4.1 2 Using /usr/local/rvm/gems/ruby-2.4.1 3 [root@centos7 6030]# rvm remove 1.8.7 4 ruby-1.8.7-head - #already gone 5 Using /usr/local/rvm/gems/ruby-2.4.1 6 [root@centos7 6030]# ruby --version 7 ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
0x07--gem redis接口安装
1 [root@centos7 6030]# gem install redis 2 Fetching: redis-4.0.1.gem (100%) 3 Successfully installed redis-4.0.1 4 Parsing documentation for redis-4.0.1 5 Installing ri documentation for redis-4.0.1 6 Done installing documentation for redis after 4 seconds 7 1 gem installed
0x08--rubygems 安装
1 [root@centos7 6030]# yum install -y rubygems 2 Loaded plugins: fastestmirror, langpacks 3 Loading mirror speeds from cached hostfile 4 Package rubygems-2.0.14.1-33.el7_4.noarch already installed and latest version 5 Nothing to do
0x09--创建Redis集群
这里需要注意:需要将redis_home/src/redis-trib.rb 脚本复制到/usr/local/bin目录下,否则创建集群时,会报错:
1 -bash: redis-trib.rb: command not found
完整无报错创建Redis集群过程:
1 [root@centos7 src]# cp redis-trib.rb /usr/local/bin 2 [root@centos7 src]# redis-trib.rb create --replicas 1 10.118.128.223:6029 10.118.128.223:6030 10.118.128.223:6031 10.118.128.223:6032 10.118.128.223:6033 10.118.128.223:6034 3 >>> Creating cluster 4 >>> Performing hash slots allocation on 6 nodes... 5 Using 3 masters: 6 10.118.128.223:6029 7 10.118.128.223:6030 8 10.118.128.223:6031 9 Adding replica 10.118.128.223:6033 to 10.118.128.223:6029 10 Adding replica 10.118.128.223:6034 to 10.118.128.223:6030 11 Adding replica 10.118.128.223:6032 to 10.118.128.223:6031 12 >>> Trying to optimize slaves allocation for anti-affinity 13 [WARNING] Some slaves are in the same host as their master 14 M: 99f1b18c2895889884796e06a2f4384f5b110da0 10.118.128.223:6029 15 slots:0-5460 (5461 slots) master 16 M: f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 10.118.128.223:6030 17 slots:5461-10922 (5462 slots) master 18 M: bef79294b4cb57fe72eb3871f853745437da7c79 10.118.128.223:6031 19 slots:10923-16383 (5461 slots) master 20 S: b008404edf2dbaef9b5ba94e85478025f99da9b3 10.118.128.223:6032 21 replicates 99f1b18c2895889884796e06a2f4384f5b110da0 22 S: ec354db61687d8b8fd03a6c353c4d27ebe82a24b 10.118.128.223:6033 23 replicates f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 24 S: 73d4ee24ccc7685f33609ccc5862ef86b73e75d5 10.118.128.223:6034 25 replicates bef79294b4cb57fe72eb3871f853745437da7c79 26 Can I set the above configuration? (type 'yes' to accept): yes 27 >>> Nodes configuration updated 28 >>> Assign a different config epoch to each node 29 >>> Sending CLUSTER MEET messages to join the cluster 30 Waiting for the cluster to join....... 31 >>> Performing Cluster Check (using node 10.118.128.223:6029) 32 M: 99f1b18c2895889884796e06a2f4384f5b110da0 10.118.128.223:6029 33 slots:0-5460 (5461 slots) master 34 1 additional replica(s) 35 S: b008404edf2dbaef9b5ba94e85478025f99da9b3 10.118.128.223:6032 36 slots: (0 slots) slave 37 replicates 99f1b18c2895889884796e06a2f4384f5b110da0 38 M: f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 10.118.128.223:6030 39 slots:5461-10922 (5462 slots) master 40 1 additional replica(s) 41 S: 73d4ee24ccc7685f33609ccc5862ef86b73e75d5 10.118.128.223:6034 42 slots: (0 slots) slave 43 replicates bef79294b4cb57fe72eb3871f853745437da7c79 44 S: ec354db61687d8b8fd03a6c353c4d27ebe82a24b 10.118.128.223:6033 45 slots: (0 slots) slave 46 replicates f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 47 M: bef79294b4cb57fe72eb3871f853745437da7c79 10.118.128.223:6031 48 slots:10923-16383 (5461 slots) master 49 1 additional replica(s) 50 [OK] All nodes agree about slots configuration. 51 >>> Check for open slots... 52 >>> Check slots coverage... 53 [OK] All 16384 slots covered.
0x0A--Redis集群验证
redis-cli -h 10.118.128.223 -c -p 6029
说明:-h+host –p+端口号 –c 连接集群,连接Redis集群必须要加该参数
1 [root@centos7 src]# redis-cli -h 10.118.128.223 -c -p 6029 2 10.118.128.223:6029> cluster info 3 cluster_state:ok 4 cluster_slots_assigned:16384 5 cluster_slots_ok:16384 6 cluster_slots_pfail:0 7 cluster_slots_fail:0 8 cluster_known_nodes:6 9 cluster_size:3 10 cluster_current_epoch:6 11 cluster_my_epoch:1 12 cluster_stats_messages_ping_sent:69 13 cluster_stats_messages_pong_sent:78 14 cluster_stats_messages_sent:147 15 cluster_stats_messages_ping_received:73 16 cluster_stats_messages_pong_received:69 17 cluster_stats_messages_meet_received:5 18 cluster_stats_messages_received:147 19 10.118.128.223:6029> cluster nodes 20 b008404edf2dbaef9b5ba94e85478025f99da9b3 10.118.128.223:6032@16032 slave 99f1b18c2895889884796e06a2f4384f5b110da0 0 1530263318688 4 connected 21 f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 10.118.128.223:6030@16030 master - 0 1530263320705 2 connected 5461-10922 22 99f1b18c2895889884796e06a2f4384f5b110da0 10.118.128.223:6029@16029 myself,master - 0 1530263320000 1 connected 0-5460 23 73d4ee24ccc7685f33609ccc5862ef86b73e75d5 10.118.128.223:6034@16034 slave bef79294b4cb57fe72eb3871f853745437da7c79 0 1530263317678 6 connected 24 ec354db61687d8b8fd03a6c353c4d27ebe82a24b 10.118.128.223:6033@16033 slave f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 0 1530263318000 5 connected 25 bef79294b4cb57fe72eb3871f853745437da7c79 10.118.128.223:6031@16031 master - 0 1530263319697 3 connected 10923-16383 26 10.118.128.223:6029> cluster nodes 27 b008404edf2dbaef9b5ba94e85478025f99da9b3 10.118.128.223:6032@16032 slave 99f1b18c2895889884796e06a2f4384f5b110da0 0 1530263324000 4 connected 28 f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 10.118.128.223:6030@16030 master - 0 1530263324000 2 connected 5461-10922 29 99f1b18c2895889884796e06a2f4384f5b110da0 10.118.128.223:6029@16029 myself,master - 0 1530263323000 1 connected 0-5460 30 73d4ee24ccc7685f33609ccc5862ef86b73e75d5 10.118.128.223:6034@16034 slave bef79294b4cb57fe72eb3871f853745437da7c79 0 1530263325750 6 connected 31 ec354db61687d8b8fd03a6c353c4d27ebe82a24b 10.118.128.223:6033@16033 slave f202f30bcd2eabaa92a085a848b7e6bcfb5496c5 0 1530263324736 5 connected 32 bef79294b4cb57fe72eb3871f853745437da7c79 10.118.128.223:6031@16031 master - 0 1530263326764 3 connected 10923-16383