Redis集群安装

4版本需要ruby    5版本不需要ruby就能集群

1集群机器分布

192.168.1.133        redis1

192.168.1.134        redis2

192.168.1.135        redis3

2 免密登录

ssh-keygen

ssh-copy-id 192.168.1.133

ssh-copy-id 192.168.1.134

ssh-copy-id 192.168.1.135

3 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

4设置yum源

这里添加阿里源

cd /etc/yum.repos.d/

wget https://mirrors.aliyun.com/repo/Centos-7.repo

wget https://mirrors.aliyun.com/repo/epel-7.repo

5修改系统参数

vi /etc/security/limits.conf

*        soft             nofile         65535

*        hard           nofile         655350

*        soft             nproc        65535

*        hard           nproc        655350

安装依赖

yum install gcc make tcl –y

yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel make bzip2 autoconf automake libtool bison sqlite-devel iconv-devel

6 安装redis

mkdir /opt/haizhi/redis

mkdir -p /opt/haizhi/redis

cd /opt/haizhi/redis/

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

tar zxvf redis-4.0.6.tar.gz

cd redis-4.0.6/  #编译安装完成后会生成bin目录

make & make PREFIX=/opt/haizhi/redis install

cp -a /opt/haizhi/redis/redis-4.0.6/src/redis-trib.rb /opt/haizhi/redis/bin/

#上面是复制集群命令 到bin目录

注意:如果make出错 使用make MALLOC=libc

----------------------

5版本

----------------------

wget http://download.redis.io/releases/redis-5.0.2.tar.gz
tar xzf redis-5.0.2.tar.gz
cd redis-5.0.2
make & make install====================================

7 创建集群需要的目录和配置

创建3个实例目录

cd /opt/haizhi/redis/

mkdir -p cluster-6379/{conf,data,log,pid}

mkdir -p cluster-6380/{conf,data,log,pid}

mkdir -p cluster-6381/{conf,data,log,pid}

为每个实例创建配置文件(以6379为例)

[root@localhost redis]# cat cluster-6379/conf/redis_6379.conf

bind 0.0.0.0

protected-mode yes

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize yes

supervised no

pidfile /opt/haizhi/redis/cluster-6379/conf/redis_6379.pid

loglevel notice

logfile "/opt/haizhi/redis/cluster-6379/log/redis_6379.log"

databases 16

always-show-logo yes

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /opt/haizhi/redis/cluster-6379/data

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

lazyfree-lazy-eviction no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

slave-lazy-flush no

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble no

lua-time-limit 5000

cluster-enabled yes

cluster-config-file /opt/haizhi/redis/cluster-6379/conf/nodes-6379.conf

cluster-node-timeout 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

其他实例只需修改6379为6380 6381 即可使用

8 启动各实例

./redis-server /opt/haizhi/redis/cluster-6379/conf/redis_6379.conf

./redis-server /opt/haizhi/redis/cluster-6380/conf/redis_6380.conf

./redis-server /opt/haizhi/redis/cluster-6381/conf/redis_6381.conf

[root@localhost redis]# netstat -lnupt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      17736/./redis-serve

tcp        0      0 0.0.0.0:6380            0.0.0.0:*               LISTEN      17741/./redis-serve

tcp        0      0 0.0.0.0:6381            0.0.0.0:*               LISTEN      17746/./redis-serve

以上步骤 三个节点都要执行安装操作

安装启动后再选一台机器设置集群

9 设置集群(选一台机器安装)

redis官方4版本提供了redis-trib.rb工具,但是在使用之前需要安装ruby,以及redis和ruby连接

参考https://blog.csdn.net/woxingwosu0100/article/details/77840528

----------------------------------------------------------------------

5 版本集群管理工具redis-trib.rb已经被废弃,所以不用安装ruby环境,redis-trib.rb的功能,现在已经集成到了redis-cli中,并且可以在有认证的情况执行了,可以通过./redis-cli --cluster help查看使用方式。

----------------------------------------------------------------------

9.1安装工具依赖环境(前面安装过)

yum install -y gcc-c++ gcc* patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison sqlite-devel iconv-devel

9.2 安装rvm(ruby管理工具)

执行下面语句

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

或者

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

然后

执行  curl -L get.rvm.io | bash -s stable

#如果上面的连接失败,可以尝试:

curl -Lhttps://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer| bash -s stable

执行 source /usr/local/rvm/scripts/rvm

rvm install 2.3.3

[root@server bin]# ruby --version

ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]

最后执行  gem install redis  安装

10 创建集群

4版本命令

cd /opt/haizhi/redis/bin

./redis-trib.rb create --replicas 2 192.168.1.133:6379 192.168.1.133:6380 192.168.1.133:6381 192.168.1.134:6379 192.168.1.134:6380 192.168.1.134:6381 192.168.1.135:6379 192.168.1.135:6380 192.168.1.135:6381

[root@server bin]# ./redis-trib.rb create --replicas 2 192.168.1.133:6379 192.168.1.133:6380 192.168.1.133:6381 192.168.1.134:6379 192.168.1.134:6380 192.168.1.134:6381 192.168.1.135:6379 192.168.1.135:6380 192.168.1.135:6381
>>> Creating cluster
>>> Performing hash slots allocation on 9 nodes...
Using 3 masters:
192.168.1.133:6379
192.168.1.134:6379
192.168.1.135:6379
Adding replica 192.168.1.134:6380 to 192.168.1.133:6379
Adding replica 192.168.1.135:6380 to 192.168.1.133:6379
Adding replica 192.168.1.133:6380 to 192.168.1.134:6379
Adding replica 192.168.1.133:6381 to 192.168.1.134:6379
Adding replica 192.168.1.134:6381 to 192.168.1.135:6379
Adding replica 192.168.1.135:6381 to 192.168.1.135:6379
M: 19fd62cb41e794f6478eff3d209d7c9a8587f45e 192.168.1.133:6379slots:0-5460 (5461 slots) master
S: b5a28ba32c3f96bfad569d1a12fdc84068882bed 192.168.1.133:6380replicates 4f0f85289ad961682e995b3f9e547b16e3251268
S: 8fef8364429c82e7f5ddf2c6888a98651495a66f 192.168.1.133:6381replicates 4f0f85289ad961682e995b3f9e547b16e3251268
M: 4f0f85289ad961682e995b3f9e547b16e3251268 192.168.1.134:6379slots:5461-10922 (5462 slots) master
S: efc9d969a0c86ae8c30b1b1e555523234d9c4d61 192.168.1.134:6380replicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: 6ad292b2129ed62ec0d49c079f38e4697161da14 192.168.1.134:6381replicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
M: 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 192.168.1.135:6379slots:10923-16383 (5461 slots) master
S: 06e899228e65b2b6a16fb38968699d853b71c851 192.168.1.135:6380replicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: 7bf167e33b2060506f0945d0945d4e029ad95606 192.168.1.135:6381replicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
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.1.133:6379)
M: 19fd62cb41e794f6478eff3d209d7c9a8587f45e 192.168.1.133:6379slots:0-5460 (5461 slots) master2 additional replica(s)
S: 6ad292b2129ed62ec0d49c079f38e4697161da14 192.168.1.134:6381slots: (0 slots) slavereplicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
M: 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 192.168.1.135:6379slots:10923-16383 (5461 slots) master2 additional replica(s)
S: efc9d969a0c86ae8c30b1b1e555523234d9c4d61 192.168.1.134:6380slots: (0 slots) slavereplicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: b5a28ba32c3f96bfad569d1a12fdc84068882bed 192.168.1.133:6380slots: (0 slots) slavereplicates 4f0f85289ad961682e995b3f9e547b16e3251268
S: 7bf167e33b2060506f0945d0945d4e029ad95606 192.168.1.135:6381slots: (0 slots) slavereplicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
M: 4f0f85289ad961682e995b3f9e547b16e3251268 192.168.1.134:6379slots:5461-10922 (5462 slots) master2 additional replica(s)
S: 06e899228e65b2b6a16fb38968699d853b71c851 192.168.1.135:6380slots: (0 slots) slavereplicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: 8fef8364429c82e7f5ddf2c6888a98651495a66f 192.168.1.133:6381slots: (0 slots) slavereplicates 4f0f85289ad961682e995b3f9e547b16e3251268
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

------------------------------------------------

5版本创建集群命令

./src/redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1

./src/redis-cli --cluster create --replicas 2 192.168.1.133:6379 192.168.1.133:6380 192.168.1.133:6381 192.168.1.134:6379 192.168.1.134:6380 192.168.1.134:6381 192.168.1.135:6379 192.168.1.135:6380 192.168.1.135:6381

[root@localhost redis-5.0.2]# ./src/redis-cli -c -p 6380
127.0.0.1:6380> CLUSTER nodes
2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381@16381 master - 0 1555319145000 2 connected 5461-10922
b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380@16380 myself,master - 0 1555319143000 1 connected 0-5460
e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384@16384 slave 2abb1028cd21a4f8534f939e7656a292d4304eb1 0 1555319145518 5 connected
192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385@16385 slave eead61f9b5e2188b28d8f6c4339be0c5357377be 0 1555319145821 6 connected
4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383@16383 slave b4caf8de09a68f2ded00194fe1c6d526165d1b8f 0 1555319146325 4 connected
eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382@16382 master - 0 1555319145317 3 connected 10923-16383
127.0.0.1:6380>
127.0.0.1:6380> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:381
cluster_stats_messages_pong_sent:232
cluster_stats_messages_sent:613
cluster_stats_messages_ping_received:227
cluster_stats_messages_pong_received:381
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:613
127.0.0.1:6380>

------------------------------------------------

查看集群

[root@localhost bin]# ./redis-cli -c -p 6379

127.0.0.1:6379> CLUSTER nodes
4f0f85289ad961682e995b3f9e547b16e3251268 192.168.1.134:6379@16379 myself,master - 0 1534227574000 4 connected 5461-10922
7bf167e33b2060506f0945d0945d4e029ad95606 192.168.1.135:6381@16381 slave 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 0 1534227576097 9 connected
efc9d969a0c86ae8c30b1b1e555523234d9c4d61 192.168.1.134:6380@16380 slave 19fd62cb41e794f6478eff3d209d7c9a8587f45e 0 1534227575595 5 connected
6ad292b2129ed62ec0d49c079f38e4697161da14 192.168.1.134:6381@16381 slave 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 0 1534227575094 7 connected
06e899228e65b2b6a16fb38968699d853b71c851 192.168.1.135:6380@16380 slave 19fd62cb41e794f6478eff3d209d7c9a8587f45e 0 1534227575595 8 connected
8b3e3748a106b2bf0483dc5bfee5f378edc7f933 192.168.1.135:6379@16379 master - 0 1534227576000 7 connected 10923-16383
8fef8364429c82e7f5ddf2c6888a98651495a66f 192.168.1.133:6381@16381 slave 4f0f85289ad961682e995b3f9e547b16e3251268 0 1534227575000 4 connected
19fd62cb41e794f6478eff3d209d7c9a8587f45e 192.168.1.133:6379@16379 master - 0 1534227575000 1 connected 0-5460
b5a28ba32c3f96bfad569d1a12fdc84068882bed 192.168.1.133:6380@16380 slave 4f0f85289ad961682e995b3f9e547b16e3251268 0 1534227575595 4 connected
127.0.0.1:6379>

-------------------------------------------------------

5版本 集群节点的增加与删除

以单机器创建redis集群为例

./src/redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1

在本机器上新增节点

[root@localhost redis-5.0.2]# cd /usr/local/redis/redis-5.0.2
[root@localhost redis-5.0.2]# ll
总用量 252
-rw-rw-r--  1 root root 85327 11月 22 18:26 00-RELEASENOTES
drwxr-xr-x  2 root root   122 4月  15 17:03 6380
drwxr-xr-x  2 root root   122 4月  15 17:03 6381
drwxr-xr-x  2 root root   122 4月  15 17:03 6382
drwxr-xr-x  2 root root   122 4月  15 17:03 6383
drwxr-xr-x  2 root root   122 4月  15 17:03 6384
drwxr-xr-x  2 root root   122 4月  15 17:03 6385
-rw-r--r--  1 root root     0 4月  15 16:14 appendonly.aof
-rw-rw-r--  1 root root    53 11月 22 18:26 BUGS
-rw-rw-r--  1 root root  1894 11月 22 18:26 CONTRIBUTING
-rw-rw-r--  1 root root  1487 11月 22 18:26 COPYING
drwxrwxr-x  6 root root  4096 4月  15 15:18 deps
-rw-r--r--  1 root root    92 4月  15 16:14 dump.rdb
-rw-rw-r--  1 root root    11 11月 22 18:26 INSTALL
-rw-rw-r--  1 root root   151 11月 22 18:26 Makefile
-rw-rw-r--  1 root root  4223 11月 22 18:26 MANIFESTO
-rw-rw-r--  1 root root 20555 11月 22 18:26 README.md
-rw-rw-r--  1 root root 62143 4月  15 16:14 redis.conf
-rwxrwxr-x  1 root root   275 11月 22 18:26 runtest
-rwxrwxr-x  1 root root   280 11月 22 18:26 runtest-cluster
-rwxrwxr-x  1 root root   281 11月 22 18:26 runtest-sentinel
-rw-rw-r--  1 root root  9710 11月 22 18:26 sentinel.conf
drwxrwxr-x  3 root root  8192 4月  15 15:22 src
drwxrwxr-x 10 root root  4096 11月 22 18:26 tests
drwxrwxr-x  8 root root  4096 11月 22 18:26 utils
[root@localhost redis-5.0.2]#

cd /usr/local/redis/redis-5.0.2

mkdir 6386 6387  创建目录并调整配置

cp 6380/redis-6380.conf 6386/
 cp 6380/redis-6380.conf 6387/
 mv 6386/redis-6380.conf 6386/redis-6386.conf
 mv 6387/redis-6380.conf 6387/redis-6387.conf

sed -i 's/6380/6386/g' 6386/redis-6386.conf
sed -i 's/6380/6387/g' 6387/redis-6387.conf

启动服务

./src/redis-server 6386/redis-6386.conf
./src/redis-server 6387/redis-6387.conf

[root@localhost redis-5.0.2]# ps -ef |grep redis
root      11154      1  0 16:47 ?        00:00:07 ./src/redis-server 0.0.0.0:6380 [cluster]
root      11156      1  0 16:47 ?        00:00:05 ./src/redis-server 0.0.0.0:6381 [cluster]
root      11161      1  0 16:47 ?        00:00:05 ./src/redis-server 0.0.0.0:6382 [cluster]
root      11169      1  0 16:47 ?        00:00:05 ./src/redis-server 0.0.0.0:6383 [cluster]
root      11174      1  0 16:47 ?        00:00:05 ./src/redis-server 0.0.0.0:6384 [cluster]
root      11179      1  0 16:47 ?        00:00:06 ./src/redis-server 0.0.0.0:6385 [cluster]
root      12569      1  0 17:31 ?        00:00:00 ./src/redis-server 0.0.0.0:6386 [cluster]
root      12579      1  1 17:31 ?        00:00:00 ./src/redis-server 0.0.0.0:6387 [cluster]
root      12588   2865  0 17:31 pts/0    00:00:00 grep --color=auto redis

添加节点到集群 6386为主  6387为从

先添加主节点6386到集群中
./src/redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6381   
 ##redis-cli --cluster add-node  {新节点IP}:{新节点端口} {任意集群节点IP}:{对应端口} #如果添加集群中的主节点,则新添加的就是主节点,如果是从节点则是从节点

[root@localhost redis-5.0.2]# ./src/redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6381
>>> Adding node 127.0.0.1:6386 to cluster 127.0.0.1:6381
>>> Performing Cluster Check (using node 127.0.0.1:6381)
M: 2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381slots:[5461-10922] (5462 slots) master1 additional replica(s)
S: e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384slots: (0 slots) slavereplicates 2abb1028cd21a4f8534f939e7656a292d4304eb1
S: 192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385slots: (0 slots) slavereplicates eead61f9b5e2188b28d8f6c4339be0c5357377be
M: eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: 4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383slots: (0 slots) slavereplicates b4caf8de09a68f2ded00194fe1c6d526165d1b8f
M: b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380slots:[0-5460] (5461 slots) master1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:6386 to make it join the cluster.
[OK] New node added correctly.

然后我们为新节点手工分配hash槽
使用redis-cli命令为6386分配hash槽,找到集群中的任意一个主节点(6381),对其进行重新分片工作。

[root@localhost redis-5.0.2]# /usr/local/redis/redis-5.0.2/src/redis-cli --cluster reshard 127.0.0.1:6381
>>> Performing Cluster Check (using node 127.0.0.1:6381)
M: 2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384
   slots: (0 slots) slave
   replicates 2abb1028cd21a4f8534f939e7656a292d4304eb1
S: 192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385
   slots: (0 slots) slave
   replicates eead61f9b5e2188b28d8f6c4339be0c5357377be
M: eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 564673ea144dadd7b964395c74284f057e4ea6d7 127.0.0.1:6386
   slots: (0 slots) master
S: 4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383
   slots: (0 slots) slave
   replicates b4caf8de09a68f2ded00194fe1c6d526165d1b8f
M: b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 3000
##分配3000个slots给下面的ID

What is the receiving node ID? 564673ea144dadd7b964395c74284f057e4ea6d7

##红色的集群ID号就是6386的ID号

然后有两种方式,一种是all,以将所有节点用作散列槽的源节点,一种是done,这种是你自己选择从哪个节点上拿出来节点分给8007

Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.Source node #1:

all是随机的,比如说我们要分出1000个,则3个主节点分别拿出333个,333个,334个节点分给6386,这里我们选择all,从6380 6381 6382总共拿出3000个slots给6386

How many slots do you want to move (from 1 to 16384)? 3000
What is the receiving node ID? 564673ea144dadd7b964395c74284f057e4ea6d7
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: all 选择所有的主机器

完成后再查看节点  发现已经分配了slot

[root@localhost redis-5.0.2]# ./src/redis-cli -c -p 6380
127.0.0.1:6380> CLUSTER nodes
2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381@16381 master - 0 1555322875361 2 connected 6462-10922
b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380@16380 myself,master - 0 1555322872000 1 connected 999-5460
564673ea144dadd7b964395c74284f057e4ea6d7 127.0.0.1:6386@16386 master - 0 1555322875000 7 connected 0-998 5461-6461 10923-11921
e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384@16384 slave 2abb1028cd21a4f8534f939e7656a292d4304eb1 0 1555322874000 5 connected
192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385@16385 slave eead61f9b5e2188b28d8f6c4339be0c5357377be 0 1555322874554 6 connected
4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383@16383 slave b4caf8de09a68f2ded00194fe1c6d526165d1b8f 0 1555322873341 4 connected
eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382@16382 master - 0 1555322874351 3 connected 11922-16383
127.0.0.1:6380>

添加从节点6387到集群中去并查看集群状态

/usr/local/redis/redis-5.0.2/src/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6386

[root@localhost redis-5.0.2]# /usr/local/redis/redis-5.0.2/src/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6386
>>> Adding node 127.0.0.1:6387 to cluster 127.0.0.1:6386
>>> Performing Cluster Check (using node 127.0.0.1:6386)
M: 564673ea144dadd7b964395c74284f057e4ea6d7 127.0.0.1:6386slots:[0-998],[5461-6461],[10923-11921] (2999 slots) master
M: eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382slots:[11922-16383] (4462 slots) master1 additional replica(s)
M: 2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381slots:[6462-10922] (4461 slots) master1 additional replica(s)
S: e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384slots: (0 slots) slavereplicates 2abb1028cd21a4f8534f939e7656a292d4304eb1
S: 4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383slots: (0 slots) slavereplicates b4caf8de09a68f2ded00194fe1c6d526165d1b8f
M: b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380slots:[999-5460] (4462 slots) master1 additional replica(s)
S: 192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385slots: (0 slots) slavereplicates eead61f9b5e2188b28d8f6c4339be0c5357377be
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:6387 to make it join the cluster.
[OK] New node added correctly.
[root@localhost redis-5.0.2]# ./src/redis-cli -c -p 6380
127.0.0.1:6380> CLUSTER nodes
2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381@16381 master - 0 1555323610107 2 connected 6462-10922
b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380@16380 myself,master - 0 1555323608000 1 connected 999-5460
564673ea144dadd7b964395c74284f057e4ea6d7 127.0.0.1:6386@16386 master - 0 1555323609501 7 connected 0-998 5461-6461 10923-11921
e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384@16384 slave 2abb1028cd21a4f8534f939e7656a292d4304eb1 0 1555323609000 5 connected
192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385@16385 slave eead61f9b5e2188b28d8f6c4339be0c5357377be 0 1555323609000 6 connected
2998c800138fa6bc0611c75b19f60aafad025724 127.0.0.1:6387@16387 master - 0 1555323610208 0 connected
4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383@16383 slave b4caf8de09a68f2ded00194fe1c6d526165d1b8f 0 1555323609000 4 connected
eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382@16382 master - 0 1555323609400 3 connected 11922-16383
127.0.0.1:6380>

此时6387是一个master节点,没有被分配任何的hash槽。
我们需要执行replicate命令来指定当前节点(从节点)的主节点id为哪个,首先需要连接新加的6387节点的客户端,

然后使用集群命令进行操作,把当前的6387(slave)节点指定到一个主节点下

命令示例
CLUSTER REPLICATE 564673ea144dadd7b964395c74284f057e4ea6d7   ##指向到master节点6386的ID
[root@localhost redis-5.0.2]# ./src/redis-cli -c -p 6387
127.0.0.1:6387> CLUSTER nodes
192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385@16385 slave eead61f9b5e2188b28d8f6c4339be0c5357377be 0 1555323889761 3 connected
4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383@16383 slave b4caf8de09a68f2ded00194fe1c6d526165d1b8f 0 1555323889561 1 connected
b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380@16380 master - 0 1555323890773 1 connected 999-5460
2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381@16381 master - 0 1555323890571 2 connected 6462-10922
eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382@16382 master - 0 1555323890000 3 connected 11922-16383
2998c800138fa6bc0611c75b19f60aafad025724 127.0.0.1:6387@16387 myself,master - 0 1555323888000 0 connected
564673ea144dadd7b964395c74284f057e4ea6d7 127.0.0.1:6386@16386 master - 0 1555323889257 7 connected 0-998 5461-6461 10923-11921
e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384@16384 slave 2abb1028cd21a4f8534f939e7656a292d4304eb1 0 1555323889000 2 connected
127.0.0.1:6387> CLUSTER REPLICATE 564673ea144dadd7b964395c74284f057e4ea6d7   ##指向到master节点ID
OK
127.0.0.1:6387> CLUSTER nodes
192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385@16385 slave eead61f9b5e2188b28d8f6c4339be0c5357377be 0 1555323925000 3 connected
4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383@16383 slave b4caf8de09a68f2ded00194fe1c6d526165d1b8f 0 1555323926102 1 connected
b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380@16380 master - 0 1555323926102 1 connected 999-5460
2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381@16381 master - 0 1555323926103 2 connected 6462-10922
eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382@16382 master - 0 1555323926000 3 connected 11922-16383
2998c800138fa6bc0611c75b19f60aafad025724 127.0.0.1:6387@16387 myself,slave 564673ea144dadd7b964395c74284f057e4ea6d7 0 1555323924000 0 connected
564673ea144dadd7b964395c74284f057e4ea6d7 127.0.0.1:6386@16386 master - 0 1555323926506 7 connected 0-998 5461-6461 10923-11921
e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384@16384 slave 2abb1028cd21a4f8534f939e7656a292d4304eb1 0 1555323926102 2 connected
127.0.0.1:6387>

删除从节点

[root@localhost redis-5.0.2]# /usr/local/redis/redis-5.0.2/src/redis-cli --cluster del-node 127.0.0.1:6387 2998c800138fa6bc0611c75b19f60aafad025724
>>> Removing node 2998c800138fa6bc0611c75b19f60aafad025724 from cluster 127.0.0.1:6387
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

[root@localhost redis-5.0.2]# ./src/redis-cli -c -p 6387
Could not connect to Redis at 127.0.0.1:6387: Connection refused
not connected>

删除主节点 3686(因为刚才删除的从节点就是6386的从节点)
1)如果主节点有从节点,将从节点转移到其他主节点
2)如果主节点有slot,去掉分配的slot,然后在删除主节点

#./redis-cli --cluster  reshard 127.0.0.1:6386 //取消分配的slot
How many slots do you want to move (from 1 to 16384)? 3000//被删除master的所有slot数量  
What is the receiving node ID? 2abb1028cd21a4f8534f939e7656a292d4304eb1  //接收slot的master节点6381

Please enter all the source node IDs.  
 Type 'all' to use all the nodes as source nodes for the hash slots.  
 Type 'done' once you entered all the source nodes IDs.  
Source node #1:564673ea144dadd7b964395c74284f057e4ea6d7  //被删除master的node-id  
Source node #2:done   
 
Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot

[root@localhost redis-5.0.2]# ./src/redis-cli -c -p 6381

127.0.0.1:6381> CLUSTER nodes
2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381@16381 myself,master - 0 1555325338000 8 connected 0-998 5461-11921
e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384@16384 slave 2abb1028cd21a4f8534f939e7656a292d4304eb1 0 1555325342000 8 connected
192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385@16385 slave eead61f9b5e2188b28d8f6c4339be0c5357377be 0 1555325344348 6 connected
eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382@16382 master - 0 1555325343341 3 connected 11922-16383
564673ea144dadd7b964395c74284f057e4ea6d7 127.0.0.1:6386@16386 master - 0 1555325342000 7 connected
4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383@16383 slave b4caf8de09a68f2ded00194fe1c6d526165d1b8f 0 1555325342000 4 connected
b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380@16380 master - 0 1555325342333 1 connected 999-5460
127.0.0.1:6381> cluster info

[root@localhost redis-5.0.2]# /usr/local/redis/redis-5.0.2/src/redis-cli --cluster del-node 127.0.0.1:6386 564673ea144dadd7b964395c74284f057e4ea6d7

>>> Removing node 564673ea144dadd7b964395c74284f057e4ea6d7 from cluster 127.0.0.1:6386
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@localhost redis-5.0.2]# ./src/redis-cli -c -p 6381
127.0.0.1:6381> CLUSTER nodes
2abb1028cd21a4f8534f939e7656a292d4304eb1 127.0.0.1:6381@16381 myself,master - 0 1555325387000 8 connected 0-998 5461-11921
e7aee0ee4cdcac44526bf4bd28096801e178f6dc 127.0.0.1:6384@16384 slave 2abb1028cd21a4f8534f939e7656a292d4304eb1 0 1555325387768 8 connected
192c60ed7b583696d1b99e6ead634b97f1abb56b 127.0.0.1:6385@16385 slave eead61f9b5e2188b28d8f6c4339be0c5357377be 0 1555325385000 6 connected
eead61f9b5e2188b28d8f6c4339be0c5357377be 127.0.0.1:6382@16382 master - 0 1555325387000 3 connected 11922-16383
4518d97ad24ebd6e7127f6c89a58b9654202decf 127.0.0.1:6383@16383 slave b4caf8de09a68f2ded00194fe1c6d526165d1b8f 0 1555325388776 4 connected
b4caf8de09a68f2ded00194fe1c6d526165d1b8f 127.0.0.1:6380@16380 master - 0 1555325386758 1 connected 999-5460
127.0.0.1:6381>

增加删除节点可以参考下面文章

https://www.jianshu.com/p/6355d0827aea

https://cloud.tencent.com/developer/article/1412672

https://www.cnblogs.com/zy-303/p/10273167.html

集群原理

https://www.cnblogs.com/huangjuncong/p/8494295.html

转载于:https://blog.51cto.com/superleedo/2311126

redis4.0.6集群部署(5.0.2版本更新补充)相关推荐

  1. redis 3.0的集群部署

    2019独角兽企业重金招聘Python工程师标准>>> redis 3.0的集群部署 博客分类: 缓存 文章转载自:http://hot66hot.iteye.com/blog/20 ...

  2. redis-5.0.4集群部署

    redis-5.0.4 集群搭建 redis-cluster介绍 ​ 1:redis是一个开源的key value存储系统,受到了广大互联网公司的青睐. ​ 2:redis集群采用P2P模式,是完全去 ...

  3. Elasticsearch集群部署1.0

    此文档基于1.0版本. Elasticsearch集群部署 配置文件 Elasticsearch有三个配置文件: elasticsearch.yml 用于配置Elasticsearch jvm.opt ...

  4. CAT3.0的集群部署

    转载 https://www.jianshu.com/p/13d9de1f7fe5 CAT安装环境 CentOS 6.5Java 6,7,8,服务端推荐是用jdk7的版本,客户端jdk6.7.8都支持 ...

  5. redis3.0 java spring_Redis-3.0.6 集群部署集成SpringJava工程-----环境搭建

    注:本文所有操作都使用管理员权限 su root 输入密码 1.打开对应的端口- 既所有集群的端口号全部都打开 / 安装Jdk----暂时使用openJDK可行 /sbin/iptables -I I ...

  6. kubesphere v3.1.0 离线集群部署

    目录 一.简介 二.部署环境 2.1.系统要求 2.2.镜像仓库 三.安装部署 3.1.安装包下载: 3.2.安装步骤: 3.2.1.上传解压: 3.2.3.初始化环境: 3.2.4.导入镜像: 3. ...

  7. DolphinScheduler 3.1.0 海豚集群部署配置

    文章目录 DolphinScheduler 3.1.0 部署过程 1. JDK1.8环境准备 2. 下载安装包 3. 上传安装包并解压 4. Dolphinscheduler用户要sudo权限,免密配 ...

  8. redis-3.0.2集群部署

    Redis 集群安装 集群搭建步骤 1.创建多个节点. 2.为每个节点指派槽,并将多个节点连接起来,组成一个集群. 3.当集群数据库的16384个槽都有节点在处理时,集群进入上线状态. 要求:搭建一个 ...

  9. kafka2.3.1+zookeeper3.5.6+kafka-manager2.0.0.2集群部署(centos7.7)

    一.准备三台服务器,配置好主机名和ip地址 二.服务器初始化:包括安装常用命令工具,修改系统时区,校对系统时间,关闭selinux,关闭firewalld,修改主机名,修改系统文件描述符,优化内核参数 ...

最新文章

  1. java菜单动态加载功能_Javascript实现动态菜单添加
  2. OpenGL 有时候纹理映射的部分问题
  3. linux桌面天气,Ubuntu桌面美化:添加Gmail +天气预报插件[图文]
  4. ADO学习(二).udl文件
  5. 一步步编写操作系统 48 加载内核1
  6. 【福利】囚犯抓绿豆,谁生谁死?
  7. 遇见未来 | MongoDB增强事务支持,向NewSQL的方向迈进
  8. Linux学习(3)Linux文件的基本属性、文件内容查看
  9. php语言 电商网站,如何做多国家,多语言电商网站的设计
  10. 做数据迁移差点累死的程序员有话要说----数据迁移经验分享
  11. Pycharm处理 E501 line too long 警告
  12. mysql auto_increment 原理_MySQL auto_increment间隙问题
  13. 杭州公司java开发工程师常见面试问题
  14. 魔性计时器html6,最近抖音很火的6首BGM,太有魔性了!
  15. 如何云储存服务实现视频存储
  16. 压缩软件如何删除压缩包密码(zip、rar、7-zip),忘记密码如何删除密码?
  17. a++与++a同a--与--a代码拆分
  18. c语言fopen错误指针,fopen出错的原因
  19. 使用VM安装Centos7虚拟机
  20. python中fp是什么意思_详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)...

热门文章

  1. Debain 7.2安装配置
  2. Linux环境编程--编辑器基本操作
  3. 将Session值储存于SQL Server中
  4. Google Test(GTest)使用方法和源码解析——概况
  5. 如何定制一款12306抢票浏览器——构架
  6. C++中nothrow的介绍及使用
  7. 利用cvMinAreaRect2求取轮廓最小外接矩形
  8. 【Qt】Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题
  9. 【FFmpeg】ffmpeg工具源码分析(三):分配过滤器内存(宏GROW_ARRAY)详解
  10. 【AI】caffe源码分析(一)