1. 搭建多台哨兵
  2. 完成spring管理多台哨兵
  3. 学习redis如何数据持久化如何管理内存
  4. Redis集群搭建
  5. 集群测试
  6. Spring管理集群

搭建多台哨兵

2.1 搭建步骤

2.1.1 修改6379哨兵配置

说明:该信息唯一标识哨兵,这个信息是哨兵启动后,由哨兵自动写入的

2.配置哨兵数

说明:如果由哨兵自动的选择主从结构,则下边的master会根据哨兵的选举自动的变化. 2表示由多个哨兵 最终有2台决定推选结果. 一般的哨兵为奇数个.

2.1.2 构建6380哨兵

说明:配置多台哨兵时有2种方式.

  1. 直接复制已经配置好的哨兵配置文件,进行修改

a) 必须修改myid否则哨兵不起作用

b) 修改哨兵端口 26380

2.1.3 修改6381哨兵

说明:采用全新的配置文件进行哨兵的配置

  1. 关闭保护模式

说明:只有关闭保护模式,哨兵与哨兵之间才能相互通信

  1. 修改端口
  1. 配置主机 端口 推选数
  1. 修改推选时间

说明:修改推选时间为了测试方便.否则等待时间较长.一般采用默认的时间,无需修改.

说明:10秒没有检测到主机,则进行推选.

2.2 哨兵测试

2.2.1 多个哨兵启动

说明:

当多个哨兵启动后,哨兵与哨兵之间能够形成通信.并且相互通知.

当主机宕机后,哨兵进入推选状态.图中表述推选的结果.

2.2.2 哨兵搭建注意事项

  1. 测试单台哨兵是否有效.

a) 检测防火墙是否关闭

b) 远程保护是否关闭

  1. 修改端口
  2. 修改Myid
  3. 在配置之前 首先将全部哨兵关闭.如果配置完成之后重启
  4. 采用复制全新的哨兵文件单独配(注意主机是谁)

2.3 哨兵Jedis入门案例

2.3.1 通过哨兵如何操作redis

知识回顾:

  1. 采用redis分片技术时,每个分片其实就是真实的redis节点.操作分片其实能直接进行redis的set和get操作
  2. 分片的缺点:不能实现高可用

哨兵技术:

  1. 可以动态的实现主机的自动切换.
  2. 哨兵只负责主节点的检测工作.不能写哨兵和读哨兵.响应的操作都应该在redis节点中进行.
  3. 当采用哨兵机制时,可以通过哨兵自动发现谁是master主机.当用户通过哨兵进行set操作时,内部哨兵将set操作交给redis节点中的master进行执行.哨兵起到一个中转作用.

2.3.2 哨兵jedis测试

@Test

public void test03(){

//2.定义哨兵set集合

Set<String> sets = new HashSet<String>();

//3.向集合中加入哨兵节点

sets.add(new HostAndPort("192.168.126.142",26379).toString());

sets.add(new HostAndPort("192.168.126.142",26380).toString());

sets.add(new HostAndPort("192.168.126.142",26381).toString());

//1.定义哨兵连接池   参数编辑哨兵名称

JedisSentinelPool sentinelPool =

new JedisSentinelPool("mymaster", sets);

//4.插入数据

Jedis jedis = sentinelPool.getResource();

jedis.set("1709", "哨兵测试");

//5输出结果

System.out.println(jedis.get("1709"));

}

2.4 Sping整合哨兵

2.4.1 编辑哨兵配置文件

说明:将哨兵的配置文件放入项目中spring文件夹下.

注意将由于分片的配置文件删除或者修改名称.

<!--定义连接池  -->

<bean id="jedisSentinelPool" class="redis.clients.jedis.JedisSentinelPool">

<constructor-arg index="0" value="${redis.sentinel.masterName}"/>

<constructor-arg index="1">

<set>

<value>${redis.sentinel.host1}</value>

<value>${redis.sentinel.host2}</value>

<value>${redis.sentinel.host3}</value>

</set>

</constructor-arg>

</bean>

2.4.2 编辑properties文件

2.4.3 将properties交给spring管理

<bean id="propertyPlaceholder"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="locations">

<list>

<value>classpath:/property/jdbc.properties</value>

<!--添加redis的配置文件  -->

<value>classpath:/property/redis.properties</value>

</list>

</property>

</bean>

Redis中持久化技术

3.1 Redis默认持久化方式RDB

3.1.1 RDB说明:

说明:RBD模式是redis中默认采用的模式,该模式会在一定的时间范围内进行redis实例的自动数据备份.(内存中的数据定时持久化到磁盘中),

1.当redis节点因为断电或者关机.这是内存释放,数据丢失.

2.当redis再次启动时首先会根据配置文件查找当前节点的rdb文件,自动的读取rdb文件中的内容.自动的实现数据恢复.

3.1.2 RDB的写盘操作

说明: rdb文件中一般默认会15分钟写盘一次,该写盘操作是自动的,redis当进行写盘操作时,会自动的创建一个线程.该线程不与主线程冲突.(读和写都是通过主线程完成).

当该线程执行时用户没有感觉.如果想主动的进行写盘操作则在客户端执行save命令

命令:

  1. Save

a) 弊端:当主动执行save命令时,这时会对主线程造成阻塞.该命令一般使用

  1. Bgsave

a) 通过bgsave持久化数据时,产生的线程不会与主线程冲突,采用后台技术完成.不会产出阻塞,.但是不能保证马上执行.

Background saving started

3.1.3 RDB文件的持久化策略

  1. pid存储路径:
  1. 默认的持久化策略

A.save 900 1

B.save 300 10

C.save 60 10000

说明:

  1. 当redis节点进行set操作时,900秒内执行一个set操作时,才自动备份.
  2. 当redis节点进行set操作时,300秒内执行10次时,进行自动数据备份.
  3. 当redis节点进行set操作时,60秒内,执行了10000次操作时进行数据备份.

3.1.4 RDB的优点

说明:redis中的默认的备份采用RDB的形式,该形式有定时备份的特定.其消耗的资源较少.

缺点:

如果对数据的完整性有特别的要求,则采用rdb方式可能会造成数据的丢失.

3.2 Redis持久化AOF

3.2.1 AOF说明

说明:

如果对于数据的完整性有特殊的要求,才使用AOF的方式进行.

该方式,在一定程度上不如rdb效率高.

3.2.2 AOF的持久化策略

说明:redis的默认持久化策略采用RDB形式,如果想使用AOF形式,需要进行额外的配置

说明:如果将appendonly 改为yes.则redis的持久化策略发生改变.

则采用AOF的形式进行数据备份.

说明:

Everysec  每秒数据备份一次 效率相对于RDB接近效率

Always     只要执行set操作,则redis就会备份,该操作的效率很低

No         将备份的策略交个操作系统完成(30分钟备份一次) 一般很少使用

appendfsync everysec 默认采用每秒备份一次.

 

总结:

当redis数据备份没有做特殊的处理appendOnly为no时,采用rdb.当改为yes时,则启动redis节点时,会自动的加载AOF持久化文件.如果采用AOF数据备份,一般采用每秒数据备份一次,.可以有效的保存当先的节点信息.

 

3.3 Redis的内存策略

3.3.1 Redis的内存策略

说明:redis是基于内存的,但是内存资源相对比较珍贵.如果redis中的数据很多,内存占满,这时如果set一条新的数据,则没有地方存储该数据.

策略:

Redis在内存中有自由的优化策略,保证数据不会出现存不下的现象.

说明:

如果想改变内存的大小,只需将注释去掉,设定最大内存.

maxmemory 10M   表示内存10兆

3.3.2 内存优化的方式

说明:在redis内存中有lru算法,能够查找最近不使用数据

  1. volatile-lru

a) 说明:在已经设定了超时时间的数据中,查找最近不用的数据删除.

  1. allkeys-lru

a) 说明:在所有的key中,查找最近不常使用的数据进行删除

  1. volatile-random

a) 在设定了超时时间的key中 随机删除数据

  1. allkeys-random

a) 在所有的key中,随机的删除数据

  1. volatile-ttl

a) 在所有设定了超时时间的key中,找将要超时的数据进行删除.

  1. 算法中将按照超时时间进行排序,将马上要超时的数据提前删除
  2. noeviction

说明:redis默认使用的就是最后一种.redis将内存的维护交给操作系统.当redis的内存需要更新时.由操作系统从数据库中随意选取5个数据进行删除.

Redis集群

建目录

[root@localhost redis-3.2.8]# mkdir 7000 7001 7002 7003 7004 7005 7006 7007 7008

复制配置文件

[root@localhost redis-3.2.8]# cp redis.conf 7000/redis-7000.conf

3.修改配置文件参数(redis-7000.conf)

1.注销绑定的端口号

2.关闭保护模式

  1. 修改端口号
  1. 后台运行开启
  1. 通过绝对路径指明文件存放的位置(指定pid文件的路径)
  1. 如果不修改dump文件那么每次的日志文件都是公用的,修改dump日志文件路径
  1. 启用二进制日志
  1. 启用集群

9.将端口号改为7000,打开集群超时时间

  1. 将主从挂载删除获取是注释,如果挂载了主从关系 需要删除

执行以下命令可以先将文件中的全部7000修改为7001

:%s/7000/7001/g

11.将配置文件分别拷贝到7001-7008中,需要修改端口号即可

12.分别将7002-7008的配置文件进行修改

分区

复制配置文件(将redis-7000.conf到其他文件夹)

[root@localhost redis-3.2.8]# cd 7000

[root@localhost 7000]# cp redis-7000.conf ../7001/redis-7001.conf

[root@localhost 7000]# cp redis-7000.conf ../7002/redis-7002.conf

[root@localhost 7000]#  cp redis-7000.conf ../7003/redis-7003.conf

[root@localhost 7000]# cp redis-7000.conf ../7004/redis-7004.conf

[root@localhost 7000]#  cp redis-7000.conf ../7005/redis-7005.conf

[root@localhost 7000]# cp redis-7000.conf ../7006/redis-7006.conf

[root@localhost 7000]# cp redis-7000.conf ../7007/redis-7007.conf

[root@localhost 7000]# cp redis-7000.conf ../7008/redis-7008.conf

[root@localhost 7000]# cd ../

[root@localhost redis-3.2.8]# cd 7001

[root@localhost 7001]# vim redis-7001.conf

修改配置文件中的字段7000到7001

:%s/7000/7001/g

[root@localhost 7001]# cd ../7002

[root@localhost 7002]# vim redis-7002.conf

[root@localhost 7002]# cd ../7003

[root@localhost 7003]# vim redis-7003.conf

:%s/7000/7002/g

[root@localhost 7003]# cd ../7004

[root@localhost 7004]# vim redis-7004.conf

:%s/7000/7004/g

[root@localhost 7004]# cd ../7005

[root@localhost 7005]# vim redis

[root@localhost 7005]# vim redis-7005.conf

:%s/7000/7005/g

[root@localhost 7005]# cd ../7006

[root@localhost 7006]# vim redis-7006.conf

:%s/7000/7006/g

[root@localhost 7006]# cd ../7007

[root@localhost 7007]# vim redis-7007.conf

:%s/7000/7007/g

[root@localhost 7007]# cd ../7008

[root@localhost 7008]# vim redis-7008.conf

:%s/7000/7008/g

[root@localhost 7008]# pwd

/usr/local/src/redis-3.2.8/7008

建立start.sh

[root@localhost redis-3.2.8]# touch start.sh

配置start.sh

[root@localhost redis-3.2.8]# vim start.sh

#!/bin/sh

redis-server 7000/redis-7000.conf &

redis-server 7001/redis-7001.conf &

redis-server 7002/redis-7002.conf &

redis-server 7003/redis-7003.conf &

redis-server 7004/redis-7004.conf &

redis-server 7005/redis-7005.conf &

redis-server 7006/redis-7006.conf &

redis-server 7007/redis-7007.conf &

redis-server 7008/redis-7008.conf &

启动start.sh

[root@localhost redis-3.2.8]# sh start.sh

[root@localhost redis-3.2.8]# ps -ef | grep redis

root      5324     1  0 02:44 ?        00:00:00 redis-server *:7008 [cluster]

root      5325     1  0 02:44 ?        00:00:00 redis-server *:7007 [cluster]

root      5326     1  0 02:44 ?        00:00:00 redis-server *:7004 [cluster]

root      5327     1  0 02:44 ?        00:00:00 redis-server *:7000 [cluster]

root      5328     1  0 02:44 ?        00:00:00 redis-server *:7003 [cluster]

root      5329     1  0 02:44 ?        00:00:00 redis-server *:7002 [cluster]

root      5330     1  0 02:44 ?        00:00:00 redis-server *:7005 [cluster]

root      5331     1  0 02:44 ?        00:00:00 redis-server *:7001 [cluster]

root      5332     1  0 02:44 ?        00:00:00 redis-server *:7006 [cluster]

root      5395  5288  0 02:52 pts/4    00:00:00 grep redis

关闭防火墙

[root@localhost redis-3.2.8]# service iptables stop

[root@localhost redis-3.2.8]# redis-cli -p 7008

127.0.0.1:7008> info replication

# Replication

role:master

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

127.0.0.1:7008> exit

命令执行配置1主2从结构

./src/redis-trib.rb create --replicas 2 192.168.161.138:7000 192.168.161.138:7001 192.168.161.138:7002 192.168.161.138:7003 192.168.161.138:7004 192.168.161.138:7005 192.168.161.138:7006 192.168.161.138:7007 192.168.161.138:7008

回车

[root@localhost redis-3.2.8]# ./src/redis-trib.rb create --replicas 2 192.168.161.138:7000 192.168.161.138:7001

>>> Creating cluster

*** ERROR: Invalid configuration for cluster creation.

*** Redis Cluster requires at least 3 master nodes.

*** This is not possible with 2 nodes and 2 replicas per node.

*** At least 9 nodes are required.

[root@localhost redis-3.2.8]#

[root@localhost redis-3.2.8]# 192.168.161.138:7002 192.168.161.138:7003 192.168.161.138:7004 192.168.161.138:7005

-bash: 192.168.161.138:7002: command not found

[root@localhost redis-3.2.8]#

[root@localhost redis-3.2.8]# 192.168.161.138:7006 192.168.161.138:7007 192.168.161.138:7008;

-bash: 192.168.161.138:7006: command not found

[root@localhost redis-3.2.8]# ./src/redis-trib.rb create --replicas 2 192.168.161.138:7000 192.168.161.138:7001 192.168.161.138:7002 192.168.161.138:7003 192.168.161.138:7004 192.168.161.138:7005 192.168.161.138:7006 192.168.161.138:7007 192.168.161.138:7008;

>>> Creating cluster

>>> Performing hash slots allocation on 9 nodes...

Using 3 masters:

192.168.161.138:7000

192.168.161.138:7001

192.168.161.138:7002

Adding replica 192.168.161.138:7003 to 192.168.161.138:7000

Adding replica 192.168.161.138:7004 to 192.168.161.138:7000

Adding replica 192.168.161.138:7005 to 192.168.161.138:7001

Adding replica 192.168.161.138:7006 to 192.168.161.138:7001

Adding replica 192.168.161.138:7007 to 192.168.161.138:7002

Adding replica 192.168.161.138:7008 to 192.168.161.138:7002

表示挂载成功

M表示主节点 S表示从节点信息

M: 5ca606ca99750ae6088eceb068c88b62cfae8d4b 192.168.161.138:7000

slots:0-5460 (5461 slots) master

M: 0ea8af6dc724408e19e89e3d2933335b28715237 192.168.161.138:7001

slots:5461-10922 (5462 slots) master

M: cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 192.168.161.138:7002

slots:10923-16383 (5461 slots) master

S: 6a8c898758f8b14a6cda477b36f02879e67cc975 192.168.161.138:7003

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: 12d455b893fa251118fa16ccf37817b5ccd5746d 192.168.161.138:7004

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: 7faeed2a9f6f377b852e1079b0ad79a219e479e6 192.168.161.138:7005

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: e6806de7d5fce3f3dcfbfe661370c05d6ce94a5f 192.168.161.138:7006

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: 81384ae1bbab3e9ebe33509150c870820da3bc47 192.168.161.138:7007

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

S: d607ca8480fb4889f40a7ed7f8bcaca25253a903 192.168.161.138:7008

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

Can I set the above configuration? (type 'yes' to accept): yes

表示是否确定挂载:输入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.161.138:7000)

M: 5ca606ca99750ae6088eceb068c88b62cfae8d4b 192.168.161.138:7000

slots:0-5460 (5461 slots) master

2 additional replica(s)

S: 81384ae1bbab3e9ebe33509150c870820da3bc47 192.168.161.138:7007

slots: (0 slots) slave

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

S: 6a8c898758f8b14a6cda477b36f02879e67cc975 192.168.161.138:7003

slots: (0 slots) slave

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: 12d455b893fa251118fa16ccf37817b5ccd5746d 192.168.161.138:7004

slots: (0 slots) slave

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: e6806de7d5fce3f3dcfbfe661370c05d6ce94a5f 192.168.161.138:7006

slots: (0 slots) slave

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: 7faeed2a9f6f377b852e1079b0ad79a219e479e6 192.168.161.138:7005

slots: (0 slots) slave

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: d607ca8480fb4889f40a7ed7f8bcaca25253a903 192.168.161.138:7008

slots: (0 slots) slave

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

M: 0ea8af6dc724408e19e89e3d2933335b28715237 192.168.161.138:7001

slots:5461-10922 (5462 slots) master

2 additional replica(s)

M: cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 192.168.161.138:7002

slots:10923-16383 (5461 slots) master

2 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@localhost redis-3.2.8]# ps -ef | grep redis

root      5324     1  0 02:44 ?        00:00:01 redis-server *:7008 [cluster]

root      5325     1  0 02:44 ?        00:00:01 redis-server *:7007 [cluster]

root      5326     1  0 02:44 ?        00:00:01 redis-server *:7004 [cluster]

root      5327     1  0 02:44 ?        00:00:01 redis-server *:7000 [cluster]

root      5328     1  0 02:44 ?        00:00:01 redis-server *:7003 [cluster]

root      5329     1  0 02:44 ?        00:00:01 redis-server *:7002 [cluster]

root      5330     1  0 02:44 ?        00:00:01 redis-server *:7005 [cluster]

root      5331     1  0 02:44 ?        00:00:01 redis-server *:7001 [cluster]

root      5332     1  0 02:44 ?        00:00:01 redis-server *:7006 [cluster]

root      5445  5288  0 03:09 pts/4    00:00:00 grep redis

[root@localhost redis-3.2.8]# redis-cli -p 7000

127.0.0.1:7000> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.161.138,port=7004,state=online,offset=169,lag=1

slave1:ip=192.168.161.138,port=7003,state=online,offset=169,lag=1

master_repl_offset:183

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:182

进入7001

[root@localhost redis-3.2.8]# redis-cli -p 7001

127.0.0.1:7001> set name jack

OK

127.0.0.1:7001> get jack

(nil)

127.0.0.1:7001> get name

"jack"

127.0.0.1:7001> exit

进入7004

[root@localhost redis-3.2.8]# redis-cli -p 7004

127.0.0.1:7004> set kkk kkk

(error) MOVED 8583 192.168.161.138:7001

127.0.0.1:7004> get name

(error) MOVED 5798 192.168.161.138:7001

127.0.0.1:7004> get name

(error) MOVED 5798 192.168.161.138:7001

127.0.0.1:7004> exit

进入7001

[root@localhost redis-3.2.8]# redis-cli -p 7001

127.0.0.1:7001> get name

"jack"

127.0.0.1:7001> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.161.138,port=7005,state=online,offset=771,lag=1

slave1:ip=192.168.161.138,port=7006,state=online,offset=771,lag=1

master_repl_offset:771

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:770

127.0.0.1:7001> cluster nodes

d607ca8480fb4889f40a7ed7f8bcaca25253a903 192.168.161.138:7008 slave cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 0 1517224647739 9 connected

cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 192.168.161.138:7002 master - 0 1517224645722 3 connected 10923-16383

7faeed2a9f6f377b852e1079b0ad79a219e479e6 192.168.161.138:7005 slave 0ea8af6dc724408e19e89e3d2933335b28715237 0 1517224645722 6 connected

81384ae1bbab3e9ebe33509150c870820da3bc47 192.168.161.138:7007 slave cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 0 1517224646731 8 connected

12d455b893fa251118fa16ccf37817b5ccd5746d 192.168.161.138:7004 slave 5ca606ca99750ae6088eceb068c88b62cfae8d4b 0 1517224646731 5 connected

5ca606ca99750ae6088eceb068c88b62cfae8d4b 192.168.161.138:7000 master - 0 1517224645722 1 connected 0-5460

6a8c898758f8b14a6cda477b36f02879e67cc975 192.168.161.138:7003 slave 5ca606ca99750ae6088eceb068c88b62cfae8d4b 0 1517224644716 4 connected

0ea8af6dc724408e19e89e3d2933335b28715237 192.168.161.138:7001 myself,master - 0 0 2 connected 5461-10922

e6806de7d5fce3f3dcfbfe661370c05d6ce94a5f 192.168.161.138:7006 slave 0ea8af6dc724408e19e89e3d2933335b28715237 0 1517224644716 7 connected

127.0.0.1:7001> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.161.138,port=7005,state=online,offset=995,lag=0

slave1:ip=192.168.161.138,port=7006,state=online,offset=995,lag=0

master_repl_offset:995

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:994

127.0.0.1:7001> exit

关闭7001

[root@localhost redis-3.2.8]# redis-cli -p 7001 shutdown

进入7006

[root@localhost redis-3.2.8]# redis-cli -p 7006

127.0.0.1:7006> info replicaion

127.0.0.1:7006> info replication

# Replication

role:master

connected_slaves:1

slave0:ip=192.168.161.138,port=7005,state=online,offset=85,lag=1

master_repl_offset:85

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:84

127.0.0.1:7006> exit

[root@localhost redis-3.2.8]# ps -ef | grep redis

root      5324     1  0 02:44 ?        00:00:03 redis-server *:7008 [cluster]

root      5325     1  0 02:44 ?        00:00:03 redis-server *:7007 [cluster]

root      5326     1  0 02:44 ?        00:00:03 redis-server *:7004 [cluster]

root      5327     1  0 02:44 ?        00:00:03 redis-server *:7000 [cluster]

root      5328     1  0 02:44 ?        00:00:03 redis-server *:7003 [cluster]

root      5329     1  0 02:44 ?        00:00:03 redis-server *:7002 [cluster]

root      5330     1  0 02:44 ?        00:00:03 redis-server *:7005 [cluster]

root      5332     1  0 02:44 ?        00:00:03 redis-server *:7006 [cluster]

root      5464  5288  0 03:22 pts/4    00:00:00 grep redis

重启7001

[root@localhost redis-3.2.8]# redis-server 7001/redis-7001.conf

[root@localhost redis-3.2.8]# redis-cli -p 7001

127.0.0.1:7001> info replication

# Replication

role:slave

master_host:192.168.161.138

master_port:7006

master_link_status:up

master_last_io_seconds_ago:5

master_sync_in_progress:0

slave_repl_offset:365

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

127.0.0.1:7001>

Redis搭建多台哨兵的更多相关文章

  1. Redis主从配置和哨兵监控配置——服务器端环境搭建

    一:介绍 公司用到的redis框架,主要分为cluster的缓存集群和sentinel中的哨兵主从.这种的选用方式一般需要更具业务场景来做区分,两种框架的配置图为:右图为哨兵主从框架和cliuster ...

  2. redis集群sentinel哨兵模式的搭建与实际应用

    参考资料:https://blog.csdn.net/men_wen/article/details/72724406 之前环境使用的keepalived+redis vip集群模式,现在我们服务切换 ...

  3. linux系统——Redis集群搭建(主从+哨兵模式)

    趁着这几天刚好有点空,就来写一下redis的集群搭建,我跟大家先说明,本文的redis集群因为linux服务器只是阿里云一台服务器,所以集群是redis启动不同端口,但是也能达到集群的要求.其实不同服 ...

  4. redis高可用(哨兵机制)

    redis哨兵机制:redis的哨兵系统用于管理多个reids服务器,该系统主要有三个作用: 监控:哨兵 会不断地检查你的主服务(Master)和从服务器(Slave)是否运作正常. 提醒:当被监控的 ...

  5. Redis高可用之哨兵模式Sentinel配置与启动(五)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  6. redis主从配置+sentinel哨兵

    redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...

  7. Redis实战——redis主从备份和哨兵模式实践

    借鉴:http://redis.majunwei.com/topics/sentinel.html     https://blog.csdn.net/u011784767/article/detai ...

  8. java架构之路-(Redis专题)Redis的主从、哨兵和集群

    我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...

  9. Redis集群--Redis集群之哨兵模式

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 搭建R ...

随机推荐

  1. uva12325 暴力枚举

    这题刚开始我就贪心,直接wrong了,贪心适合可以取一个物体部分的题. 还是老实枚举吧,注意枚举要分类,不然可能会超时,还有注意答案是long long AC代码: #include<cstdi ...

  2. java遍历的优化

    说明:这是在面试中面试官出的题.虽然是常见的优化问题,但这种经验的确很有用.感慨之余,分享出来,以此共勉. 场景:现有List<PersonA>,List<PersonB>,P ...

  3. OSQA的配置

    1.安装Python,我安装的是python 2.7.3 2.安装setuptools 下载setuptools,并安装 安装好以后,在pyton2.7/scripts的路径下将会有easy_inst ...

  4. TCP/IP卷一没提到的策略路由

    策略路由 tcp/ip书上介绍了选路和动态路由,没有提及策略路由,应该是因为那个年代还不存在策略路由吧,但是这是个很有用的东西. 背景 昨天领导做了一个虚拟机,里面配了两个网络172.16.50.33 ...

  5. Linux基础一

    基本命令 useradd xxx 创建一个用户 uname     查看系统架构信息 uname -a  显示详细信息 uname -r  显示内核信息 date      显示当前网络时间 cat ...

  6. vxworks下硬盘测速程序

    void speed(int buflen,int mod){/*int mod = 0;*/ int len=50; FILE *fp; unsigned int i=0,j=0,tmp,tmp2; ...

  7. eclipse报错

    1.eclipse报错具体如下 Error occurred during the build. Errors running builder 'JavaScript Validator' on pr ...

  8. 利用PowerDesigner15在win7系统下对MySQL 进行反向工程(二)

    利用PowerDesigner15在win7系统下对MySQL 进行反向工程 1.打开PowerDesigner,建立新模型,选择Physical Data Model中的Physical Da.. ...

  9. TI AM335X处理器介绍

    AM335X是美国TI(德州仪器)公司基于 ARM Cortex-A8内核的AM335X微处理器,在图像.图形处理.外设方面进行了增强,并全面支持诸如 EtherCAT 和 PROFIBUS等工业接口 ...

  10. linux c语言 select函数用法

    linux c语言 select函数用法 表头文件 #i nclude<sys/time.h> #i nclude<sys/types.h> #i nclude<unis ...