1、环境配置:

服务器名称

ip地址

实例6379

实例6380

实例6381

实例6381

实例6381

实例6381

controller-node1

172.16.1.90

2、reids集群介绍:

(1)redis集群是一个可以在多个reid节点之间进行数据共享的设置;

(2)redis集群不支持那些需要同时处理多个键的redis命令,因为执行这些命令需要在多个redis节点之间移动

数据,并且在高负载的情况下,这些命令将会降低redis集群的性能,并导致不可预测的行为;

(3)redis集群通过分区来提供一定程度的可用性,即使集群中有一部分节点失效或者无法进行通讯,集群也可以

继续处理命令请求;

(4)redis集群有将数据自动切分到多个节点的能力;

(5)当集群中的一部分节点失效或者无法进行通讯时,仍然有可以继续处理命令请求的能力;

(6)redis集群使用分片而非一致性哈希来实现,一个redis集群包含16384个哈希槽,数据库中的每个键都属于这

16384个哈希槽的其中一个,集群使用公式crc16(key)%16384来计算键key属于哪个槽,其中crc16(key)语句用于

计算键key的crc16效验和;

(7)节点所占槽举例说明:

1)节点A负责处理0号至5500号哈希槽;

2)节点B负责处理5501号到11000号哈希槽;

3)节点C负责处理11001号至16384号哈希槽;

(8)集群的复制:

1)为了是得集群在一部分节点下线或者无法与集权的大多数节点进行通讯的情况下,仍然可以正常运作,redis集群对

节点使用了主从复制功能,集群中国的每个节点都有一个值n个复制品,其中一个复制品为主节点,而其余的n-1个复制

品为从节点;

2)在之前列举的节点A、B、C、的例子中,如果节点B下线了,name集权将无法正常运行,因为集群找不到节点来处

理5501号至11000号的哈希槽;

3)假如在创建集群的时候(或者至少在节点B下线之前),我们为主节点B添加了从节点B1,那么当主节点B下线的时候,

集群就会将B1设置为新的主节点,并让它代替下线的主节点B,继续处理5501号至11000号的哈希槽,这样集群就不会

因为主节点B的下线而无法正常工作了;

4)如果节点B和B1都下线的话,redis集群还是会停止运作;

(9)集群示例图:

(10)运行机制:

1)所有的redis节点彼此互联(PING-PONG机制),内部使用二级制协议优化传输速度和带宽;

2)节点的fail是通过集群中超过半数的master节点检测失效时才生效;

3)客户端与redis节点直连,不需要中间proxy层,客户端不需要连接集群所有节点,连接集群

中任何一个可用的节点即可;

4)把所有的物理节点映射到[0-16383]slot上,集群负责维护node<->slot<->key;

(11)redis集群所能使用

单实例每秒110000请求;工作中控制在50000需要扩容,70000是极限;30000最佳;

3、安装集群所需要的依赖包:

(1)yum install ruby rubygems -y

(2)gem install redis

1)如果gem卡住不动,使用国内镜像:

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

#更换源;

gem sources -l

#查看源是否更新成功;

2)如果报"redis requires Ruby version >= 2.2.2."错误:

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

\curl -sSL https://get.rvm.io | bash -s stable

source /etc/profile.d/rvm.sh

#配置rvm环境;

rvm list known

#查看可用的ruby版本列表;

rvm install 2.5

#安装ruby 2.5版本;

ruby -v

#查看ruby升级是否成功;

4、配置参数:

(1)分别修改redis 6379—6384实例的"redis.conf"文件参数如下:

requirepass root

masterauth root

appendonly yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

(2)启动redis 6379—6384实例:

for nu in 79 80 81 82 83 84;do /data/63$nu/redis.sh start;done

[root@controller-node1 ~]# netstat -tunlp | grep 63

tcp 0 0 172.16.1.90:16380 0.0.0.0:* LISTEN 1941/redis-server 1

tcp 0 0 172.16.1.90:16381 0.0.0.0:* LISTEN 1954/redis-server 1

tcp 0 0 172.16.1.90:16382 0.0.0.0:* LISTEN 1967/redis-server 1

tcp 0 0 172.16.1.90:16383 0.0.0.0:* LISTEN 1980/redis-server 1

tcp 0 0 172.16.1.90:16384 0.0.0.0:* LISTEN 1993/redis-server 1

tcp 0 0 172.16.1.90:6379 0.0.0.0:* LISTEN 1928/redis-server 1

tcp 0 0 172.16.1.90:6380 0.0.0.0:* LISTEN 1941/redis-server 1

tcp 0 0 172.16.1.90:6381 0.0.0.0:* LISTEN 1954/redis-server 1

tcp 0 0 172.16.1.90:6382 0.0.0.0:* LISTEN 1967/redis-server 1

tcp 0 0 172.16.1.90:6383 0.0.0.0:* LISTEN 1980/redis-server 1

tcp 0 0 172.16.1.90:6384 0.0.0.0:* LISTEN 1993/redis-server 1

tcp 0 0 172.16.1.90:16379 0.0.0.0:* LISTEN 1928/redis-server 1

5、创建集群:

(1)创建:

redis-cli -a root --cluster create \

172.16.1.90:6379 172.16.1.90:6380 \

172.16.1.90:6381 172.16.1.90:6382 \

172.16.1.90:6383 172.16.1.90:6384 \

--cluster-replicas 1

…………………………………………………………

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

(2)参数说明:

redis-cli --cluster cretae:表示创建一个新的集群;

-a root:表示集群的密码;

172.16.90:6379~6384:表示reids实例列表,用这些实例来创建新的集群;

--cluster-replicas=1:表示为集群中的每个主节点创建一个从节点;

6、登录集群:

(1)数据存取验证:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6380

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

172.16.1.90:6380> keys *

(empty list or set)

172.16.1.90:6380> set lc1 1

OK

172.16.1.90:6380> set lc2 2

OK

172.16.1.90:6380> set lc3 3

-> Redirected to slot [13891] located at 172.16.1.90:6381

OK

172.16.1.90:6381> set lc4 4

-> Redirected to slot [1700] located at 172.16.1.90:6383

OK

172.16.1.90:6383> set lc5 5

-> Redirected to slot [5765] located at 172.16.1.90:6380

OK

172.16.1.90:6380> get lc2

"2"

172.16.1.90:6380> get lc3

-> Redirected to slot [13891] located at 172.16.1.90:6381

"3"

172.16.1.90:6381> get lc4

-> Redirected to slot [1700] located at 172.16.1.90:6383

"4"

172.16.1.90:6383> get lc5

-> Redirected to slot [5765] located at 172.16.1.90:6380

"5"

(2)从上面的例子可以看出,数据在redis集群中是共享的,数据被分片存放在不同的redis实例上的,取数据的

时候从不同的redis实例上再取出数据;

7、redis集群常用的命令:

(1)集群:

1)cluster info:打印集群的信息

2)cluster nodes:列出集群当前已知的所有节点,以及这些节点的相关信息;

(2)节点:

1)cluster meet <ip> <port>:将ip和port所指定的节点添加到集群当中,让它成为集群的一份子;

2)cluster forget <node_id>:从集群中移除node_id指定的节点;

3)cluster replicate <node_id>:将当前节点设置为node_id指定的节点的从节点;

4)cluster saveconfig:将节点的配置文件保存到硬盘里面;

(3)slot(槽):

1)cluster addslots <slot> [slot ...]:将一个或多个槽(slot)指派(assign)给当前节点;

2)cluster delslots <slot> [slot ...]:移除一个或多个槽对当前节点的指派;

3)cluster flushslots:移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点;

4)cluster setslot <slot> node <node_id>:将槽slot指派给node_id指定的节点,如果槽已经指派给另一个节点,那么先在另一个节点删除该槽,然后再进行指派;

5)cluster setslot <slot> migrating <node_id>:将本节点的槽slot迁移到node_id指定的节点中;

6)cluster setslot <slot> importing <node_id>:从node_id指定的节点中导入槽slot到本节点;

7)cluster setslot <slot> stable:取消对槽slot的导入(import)或者迁移(migrate);

(4)键:

1)cluster keyslot <key>:计算键key应该被放置在哪个槽上;

2)cluster countkeysinslot <slot>:返回槽slot目前包含的键值对数量;

3)cluster getkeysinslot <slot> <count>:返回count个slot槽中的键;

8、集群说明:

(1)集群节点列表:

1)查看集群节点列表:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6380 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 myself,master - 0 1558241503000 2 connected 5461-10922

#redis 6380实例是主节点;

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558241503000 7 connected 0-5460

#redis 6383实例是主节点;

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558241503000 7 connected

#redis 6379实例是redis 6383的从节点;

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 slave 90fab512096937945b2b46ad5aaaf7fba591cc15 0 1558241503547 6 connected

#redis 6384实例是redis 6380的从节点;

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558241503850 3 connected 10923-16383

#redis 6381实例是主节点;

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558241503346 4 connected

#redis 6382实例是redis 6381的从节点;

2)每个redis实例都在其实例目录都存放着一个nodes.conf集群列表文件,由集群自己生成和维护,所以当集群全部宕机启动后也能恢复;

(2)当redis集群中主节点宕机,对应的从节点会自动顶替主节点:

1)停止redis 6380实例:

/data/6380/redis.sh stop

STOP REDIS_6380 [ 确定 ]

2)查看集群列表变化:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6381 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558242602208 7 connected 0-5460

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 myself,master - 0 1558242602000 3 connected 10923-16383

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558242601098 4 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558242602000 8 connected 5461-10922

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558242603223 7 connected

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 master,fail - 1558242496586 1558242494471 2 disconnected

从上面redis集群列表可以看出,master节点redis 6380实例处于下线的状态,而作为它的从节点的redis 6384实例处于master状态;

(3)修复宕机的主节点后:

1)启动redis 6380实例:

/data/6380/redis.sh start

START REDIS_6380 [ 确定 ]

2)查看集群列表变化:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6381 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558243489166 3 connected 10923-16383

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 myself,slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558243488000 1 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558243488660 8 connected 5461-10922

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558243488000 8 connected

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558243488050 7 connected 0-5460

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558243488151 4 connected

从上面redis集群列表可以看出,redis 6384实例成为了master节点,而redis 6380实例变为了它的从节点;

9、将集群加入到开机自启动:

chmod +x /etc/rc.d/rc.local

echo 'for nu in 79 80 81 82 83 84;do /data/63$nu/redis.sh start;done' >>/etc/rc.d/rc.local

10、redis集群扩容:

(1)新建redis 6385 6386实例:

mkdir -p /data/{6385,6386}

for nu in 85 86;do cp -a /data/6379/redis.conf /data/63$nu/;done

for nu in 85 86;do cp -a /data/6379/redis.sh /data/63$nu/;done

(2)修改redis.conf、redis.sh文件的参数为对应实例的端口号和路径:

确保redis.conf如以下的参数:

requirepass root

masterauth root

appendonly yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

(3)启动实例:

[root@controller-node1 6385]# for nu in 85 86;do /data/63$nu/redis.sh start;done

[root@controller-node1 6385]# netstat -tunlp | grep 63

tcp 0 0 172.16.1.90:16380 0.0.0.0:* LISTEN 38431/redis-server

tcp 0 0 172.16.1.90:16381 0.0.0.0:* LISTEN 33971/redis-server

tcp 0 0 172.16.1.90:16382 0.0.0.0:* LISTEN 33985/redis-server

tcp 0 0 172.16.1.90:16383 0.0.0.0:* LISTEN 34003/redis-server

tcp 0 0 172.16.1.90:16384 0.0.0.0:* LISTEN 34019/redis-server

tcp 0 0 172.16.1.90:16385 0.0.0.0:* LISTEN 42092/redis-server

tcp 0 0 172.16.1.90:16386 0.0.0.0:* LISTEN 42105/redis-server

tcp 0 0 172.16.1.90:6379 0.0.0.0:* LISTEN 33944/redis-server

tcp 0 0 172.16.1.90:6380 0.0.0.0:* LISTEN 38431/redis-server

tcp 0 0 172.16.1.90:6381 0.0.0.0:* LISTEN 33971/redis-server

tcp 0 0 172.16.1.90:6382 0.0.0.0:* LISTEN 33985/redis-server

tcp 0 0 172.16.1.90:6383 0.0.0.0:* LISTEN 34003/redis-server

tcp 0 0 172.16.1.90:6384 0.0.0.0:* LISTEN 34019/redis-server

tcp 0 0 172.16.1.90:6385 0.0.0.0:* LISTEN 42092/redis-server

tcp 0 0 172.16.1.90:6386 0.0.0.0:* LISTEN 42105/redis-server

tcp 0 0 172.16.1.90:16379 0.0.0.0:* LISTEN 33944/redis-server

此时redis 6385和redis 6386实例并没有加入到cluster集群中;

(4)将redis 6385实例和redis 6386实例加入到集群中:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6380

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

172.16.1.90:6380> cluster meet 172.16.1.90 6385

OK

172.16.1.90:6380> cluster meet 172.16.1.90 6386

OK

172.16.1.90:6380> cluster nodes

18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385@16385 master - 0 1558247814971 9 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558247813962 8 connected 5461-10922

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558247814569 4 connected

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 myself,slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558247813000 2 connected

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558247814000 3 connected 10923-16383

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558247813000 7 connected 0-5460

9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386@16386 master - 0 1558247813000 0 connected

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558247813000 7 connected

(5)将redis 6386实例作为redis 6385的从:

需要登录到集群的redis 6386实例上进行操作;

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6386

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

172.16.1.90:6386> cluster replicate 18c95ad88e3d813aa3169b19753497f66eed271b

OK

172.16.1.90:6386> cluster nodes

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558248849421 8 connected

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558248848414 3 connected 10923-16383

9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386@16386 myself,slave 18c95ad88e3d813aa3169b19753497f66eed271b 0 1558248849000 0 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558248849000 8 connected 5461-10922

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558248849520 3 connected

18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385@16385 master - 0 1558248848000 9 connected

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558248849520 7 connected 0-5460

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558248848000 7 connected

(6)为redis 6385实例分配槽位:

[root@controller-node1 6385]# redis-cli -a root --cluster reshard 172.16.1.90:6379

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

>>> Performing Cluster Check (using node 172.16.1.90:6379)

S: 34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379

slots: (0 slots) slave

replicates d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7

M: 6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381

slots:[10923-16383] (5461 slots) master

1 additional replica(s)

S: 9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386

slots: (0 slots) slave

replicates 18c95ad88e3d813aa3169b19753497f66eed271b

M: 6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384

slots:[5461-10922] (5462 slots) master

1 additional replica(s)

S: 90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380

slots: (0 slots) slave

replicates 6aee047cf63ffbc6d787a807f4f956db0f1a3184

M: 18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385

slots: (0 slots) master

1 additional replica(s)

M: d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383

slots:[0-5460] (5461 slots) master

1 additional replica(s)

S: 0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382

slots: (0 slots) slave

replicates 6c5373b5181e022b7859b9e699bc15873258be61

[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)? 4000 #表示在集群总的16384个槽位中迁移出4000个槽位;

What is the receiving node ID? 18c95ad88e3d813aa3169b19753497f66eed271b #表示接受取出槽位的主节点的id号,这里填写的是redis 6385实例的id;

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 #表示从从哪些节点迁移槽位,输入要迁移的主节点id号即可,输入all表示当前的3个主节点平均分;

Ready to move 4000 slots.

Source nodes:

M: 6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381

slots:[10923-16383] (5461 slots) master

1 additional replica(s)

M: 6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384

slots:[5461-10922] (5462 slots) master

1 additional replica(s)

M: d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383

slots:[0-5460] (5461 slots) master

1 additional replica(s)

Destination node:

M: 18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385

slots: (0 slots) master

1 additional replica(s)

Resharding plan:

Moving slot 5461 from 6aee047cf63ffbc6d787a807f4f956db0f1a3184

……………略

Do you want to proceed with the proposed reshard plan (yes/no)? yes

Moving slot 5461 from 172.16.1.90:6384 to 172.16.1.90:6385:

……………略

(7)查看redis集群扩展情况:

[root@controller-node1 6385]# redis-cli -h 172.16.1.90 -a root -c -p 6379 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558252435000 3 connected 12256-16383

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 myself,slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558252433000 1 connected

9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386@16386 slave 18c95ad88e3d813aa3169b19753497f66eed271b 0 1558252434585 9 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558252435090 8 connected 6795-10922

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558252434081 8 connected

18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385@16385 master - 0 1558252435090 9 connected 0-1332 5461-6794 10923-12255

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558252434000 7 connected 1333-5460

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558252434081 4 connected

由上面可得redis集群主节点6385实例的槽位数为:(0-1332)+(5461-6794)+(10923-12255)=1333+1334+1333=4000,说明集群扩展成功;

(8)将扩展的redis 实例加入到开机自启动中即可:

echo 'for nu in 85 86;do /data/63$nu/redis.sh start;done' >>/etc/rc.d/rc.local

11、小结:

(1)集群有密码验证的情况下每个redis实例必须要有的参数:

requirepass root

#redis安全保护模式认证密码设置为root;

masterauth root

#设置主从同步主库的密码;

(2)无论是redis主从同步sentinel集群,还是redis共享集群都是在维护着一张表:

1)sentinel主从同步集群:redis.conf、sentinel.conf;

2)redis 共享集群:nodes.conf

(3)无论是连上sentinel主从同步集群还是连上redis共享集群,连接到集群中的任意一个实例都能管理集群,但是默认只能在

主节点上进行写操作(也可以打开从节点的写,但是不建议这么做,可能会导致主从数据的不一致性);

(4)redis sentinel集群和redis 共享集群的高可用度都很高,可以放到开机自启动中,如果是keeplived这种就不可,容易发生脑裂;

14.6、redis集群的更多相关文章

  1. redis入门(14)redis集群下的数据分区存储

    redis入门(10)redis集群下的数据分区存储

  2. redis集群在线迁移第二篇(redis迁移后调整主从关系,停掉14机器上的所有从节点)-实战二

    变更需求为: 1.调整主从关系,所有节点都调整到10.129.51.30机器上 2.停掉10.128.51.14上的所有redis,14机器关机 14机器下线迁移至新机房,这段时间将不能提供服务. 当 ...

  3. Redis集群搭建与简单使用

    介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 CentOS ,一台 ...

  4. [个人翻译]Redis 集群教程(中)

    上一篇:http://www.cnblogs.com/li-peng/p/6143709.html 官方原文地址:https://redis.io/topics/cluster-tutorial  水 ...

  5. Redis集群(九):Redis Sharding集群Redis节点主从切换后客户端自动重新连接

    上文介绍了Redis Sharding集群的使用,点击阅读 本文介绍当某个Redis节点的Master节点发生问题,发生主从切换时,Jedis怎样自动重连新的Master节点 ​一.步骤如下: 1.配 ...

  6. Redis集群(八):Redis Sharding集群

    一.Redis目前的集群方案主要有两种:Redis Sharding和Redis Cluster 1.Redis Sharding:3.0以前基本上使用分片实现集群,目前主流方案,客户端实现 2.Re ...

  7. Redis集群研究和实践(基于redis 3.0.5)

    前言 redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.现在的2.x的稳定版本是2.8.19,也是我们项目中普遍用到的版本. redis在年初发布了3.0. ...

  8. redis 集群配置实战

    文章转载自:http://hot66hot.iteye.com/blog/2050676 最近研究Redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到redis3 rele ...

  9. 就publish/subscribe功能看redis集群模式下的队列技术(一)

    Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中 ...

随机推荐

  1. [DB] 大数据集群安装

    学习要点 体系架构.原理 多做练习.试验 装虚拟机 网络模式:仅主机模式 software selection:development tools, GUI network & host na ...

  2. [Python] 爬虫系统与数据处理实战 Part.1 静态网页

    爬虫技术基础 HTTP/HTTPS(7层):应用层,浏览器 SSL:加密层,传输层.应用层之间 TCP/IP(4层):传输层 数据在传输过程中是加密的,浏览器显示的是解密后的数据,对爬虫没有影响 中间 ...

  3. 【转载】Linux查看PCIe版本及速率【方法】PCIE的X4X8X16 查看 数量 怎么看

    Linux查看PCIe版本及速率   PCIE有四种不同的规格,通过下图来了解下PCIE的其中2种规格   查看主板上的PCI插槽 # dmidecode | grep --color "P ...

  4. Java 关键字详解

    Java 关键字是 Java 语言中被赋予特殊意义的一些单词(每个关键字都代表着不同场景下的不同含义),不可以把它当作标识符来使用(不能用作变量名.方法名.类名.包名和参数名等).Java 中的关键字 ...

  5. centos 7编译32位软件的问题

    centos 7默认安装的gcc 为64位,所以在编译32位软件时需要用到32位的gcc库,于是可以增加glibc 32位库: sudo yum -y install glibc-bevel.i386

  6. 《Matlab实用案例》系列Matlab从入门到精通实用100例案例教程目录(持续更新)

    目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之<Matlab使用案例> 3. 专栏目录 [MATLAB统计分析与应用1 ...

  7. [ Java面试题 ]Java 开发岗面试知识点解析

    如背景中介绍,作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向. 在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Jav ...

  8. nginx 的访问日志切割

    1. 高级用法–使用 nginx 本身来实现 当 nginx 在容器里,把 nginx 日志挂载出来的时候,我们发现就不适合再使用 kill -USR1 的方式去分割日志这时候当然就需要从 nginx ...

  9. 旷视MegEngine网络搭建

    旷视MegEngine网络搭建 在 基本概念 中,介绍了计算图.张量和算子,神经网络可以看成一个计算图.在 MegEngine 中,按照计算图的拓扑结构,将张量和算子连接起来,即可完成对网络的搭建.M ...

  10. Nsight Compute Profilier 分析

    profiler报告包含每次内核启动分析期间收集的所有信息.在用户界面中,它包含一个包含常规信息的标题,以及用于在报告页面或单个收集的启动之间切换的控件.默认情况下,报告以选定的详细信息页面开始. 页 ...