Redis 安装,主从配置及Sentinel配置自动Failover详解大数据

1、安装redis

 首页地址:http://redis.io/

下载地址:http://download.redis.io/ 下载最新的源码包

tar -zxvf redis-stable.tar.gz -C /apps/product/ 
cd  /apps/product/redis-stable/ 
make MALLOC=libc 
make install 

2、运行

加载配置文件并后台运行

redis-server /apps/product/redis-stable/redis.conf & 

#redis-cli (命令行工具)

3、测试

# redis-benchmark –help 获取帮助信息,其中包含压力测试命令样例

实际测试举例

[[email protected]~]# redis-benchmark -t set -c 20 -n 1000000 -r 100000000 
====== SET ====== 
 1000000 requests completed in 8.92 seconds 
 20 parallel clients 
 3 bytes payload 
 keep alive: 1 
100.00% <= 0 milliseconds 
112095.06 requests per second  

4、主从配置及测试:

主   gc-redis1 10.10.10.15 6379
gc-redis2 10.10.10.16 6379
gc-redis3 10.10.10.17 6379

#主服务器(10.15)上做如下配置,其他默认即可:

[[email protected] redis-stable]# vim /apps/product/redis-stable/redis.conf 
masterauth "xxoo" 
requirepass "xxoo" 

#从服务器上(10.16,10.17)做如下配置,其他默认即可:

[[email protected] redis-stable]# vim /apps/product/redis-stable/redis.conf 
slaveof 10.10.10.15 6379 
masterauth "xxoo" 
requirepass "xxoo" 
 
[[email protected] redis-stable]# vim /apps/product/redis-stable/redis.conf 
slaveof 10.10.10.15 6379 
masterauth "xxoo" 
requirepass "xxoo" 

#启动主、从redis服务:

redis-server /apps/product/redis-stable/redis.conf & 

#主服务器显示信息:

[13997] 03 Nov 09:57:21.045 * Slave ask for synchronization 
[13997] 03 Nov 09:57:21.045 * Starting BGSAVE for SYNC 
[13997] 03 Nov 09:57:21.046 * Background saving started by pid 14002 
[14002] 03 Nov 09:57:21.058 * DB saved on disk 
[14002] 03 Nov 09:57:21.059 * RDB: 0 MB of memory used by copy-on-write 
[13997] 03 Nov 09:57:21.070 * Background saving terminated with success 
[13997] 03 Nov 09:57:21.070 * Synchronization with slave succeeded 

#从服务器显示信息:

  [3496] 03 Nov 09:56:41.953 * Connecting to MASTER... 
  [3496] 03 Nov 09:56:41.953 * MASTER <-> SLAVE sync started 
  [3496] 03 Nov 09:56:41.954 * Non blocking connect for SYNC fired the event. 
  [3496] 03 Nov 09:56:41.954 * Master replied to PING, replication can continue... 
  [3496] 03 Nov 09:56:42.055 * MASTER <-> SLAVE sync: receiving 18 bytes from master 
  [3496] 03 Nov 09:56:42.055 * MASTER <-> SLAVE sync: Loading DB in memory 
  [3496] 03 Nov 09:56:42.055 * MASTER <-> SLAVE sync: Finished with success 
  [3499] 03 Nov 09:56:42.056 * SYNC append only file rewrite performed 
  [3499] 03 Nov 09:56:42.057 * AOF rewrite: 0 MB of memory used by copy-on-write 
  [3496] 03 Nov 09:56:42.057 * Background append only file rewriting started by pid 3499 
  [3496] 03 Nov 09:56:42.154 * Background AOF rewrite terminated with success 
  [3496] 03 Nov 09:56:42.154 * Parent diff successfully flushed to the rewritten AOF (0 bytes) 
  [3496] 03 Nov 09:56:42.154 * Background AOF rewrite finished successfully 

#主服务器查看主从信息

[[email protected] ~]# redis-cli -h 127.0.0.1 -a xxoo info replication 
# Replication 
role:master 
connected_slaves:2 
slave0:ip=10.10.10.16,port=6379,state=online,offset=168812144,lag=1 
slave1:ip=10.10.10.17,port=6379,state=online,offset=168812144,lag=0 
master_repl_offset:168812281 
repl_backlog_active:1 
repl_backlog_size:1048576 
repl_backlog_first_byte_offset:167763706 
repl_backlog_histlen:1048576 

#从服务器查看主从信息

[[email protected] ~]# redis-cli -h 127.0.0.1 -a xxoo info replication 
# Replication 
role:slave 
master_host:10.10.10.15 
master_port:6379 
master_link_status:up 
master_last_io_seconds_ago:0 
master_sync_in_progress:0 
slave_repl_offset:168809239 
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 

#写同步测试

 #主服务器 
[[email protected] ~]# redis-cli -h 127.0.0.1 -a jrgcredispass 
  
redis 127.0.0.1:6379> set a 123 
OK 
redis 127.0.0.1:6379> get a 
"123" 

#从服务器

[[email protected]~]# redis-cli -h 127.0.0.1 -a xxoo 
redis 127.0.0.1:6379> get a 
 "123" 
[[email protected]~]# redis-cli -h 127.0.0.1 -a xxoo 
redis 127.0.0.1:6379> get a 
 "123" 
  
 redis 127.0.0.1:6379> set b 234 
 (error) READONLY You can't write against a read only slave. (开起了只读模式,所以从将不能写入数据,可以保证数据只从主服务器同步至从服务器) 

#故障测试
#从服务器宕机将自动从主服务器的主从关系中解除
#主服务器宕机,从服务器显示,并且不能自动切换
[15932] 03 Nov 09:46:25.465 * Connecting to MASTER... 
[15932] 03 Nov 09:46:25.465 * MASTER <-> SLAVE sync started 
[15932] 03 Nov 09:46:25.466 # Error condition on socket for SYNC: Connection refused 

5、Redis sentinel配置

 主页地址:http://redis.io/topics/sentinel

sentinel主要功能就是为Redis M-S(master,slaves)集群提供了

1)master存活检测

2)集群中M-S服务监控

3) 自动故障转移,M-S角色转换等能力,从一个方面说是提高了redis集群的可用性.

#添加并编辑配置文件/etc/sentinel.conf,新增内容如下,也可在安装文件中负责sentinel配置文件并作适当修改: 

[[email protected] ~]# vim /apps/product/redis-stable/sentinel.conf 
port 26379 
sentinel monitor mymaster 10.10.10.15 6379 2 
sentinel down-after-milliseconds mymaster 3000   
sentinel failover-timeout mymaster 20000 
sentinel auth-pass mymaster xxoo 
sentinel config-epoch mymaster 2 
sentinel leader-epoch mymaster 2 
----------------------------------------------------------------------------------------------- 
 
[[email protected] ~]# vim /apps/product/redis-stable/sentinel.conf 
port 26380 
sentinel monitor mymaster 10.10.10.15 6379 2 
sentinel down-after-milliseconds mymaster 3000  
sentinel failover-timeout mymaster 20000 
sentinel auth-pass mymaster xxoo 
sentinel config-epoch mymaster 2 
sentinel leader-epoch mymaster 2 
---------------------------------------------------------------------------------------------- 
[[email protected] ~]# vim /apps/product/redis-stable/sentinel.conf 
port 26381 
sentinel monitor mymaster 10.10.10.15 6379 2 
sentinel down-after-milliseconds mymaster 3000  
sentinel failover-timeout mymaster 20000 
sentinel auth-pass mymaster xxoo 
sentinel config-epoch mymaster 2 
sentinel leader-epoch mymaster 2  

#在三个服务器中以sentinel模式启动redis-server

启动sentinel 
  
[[email protected] ~]#redis-server /apps/product/redis-stable/sentinel.conf --sentinel & 
[[email protected] ~]#redis-server /apps/product/redis-stable/sentinel.conf --sentinel & 
[[email protected] ~]#redis-server /apps/product/redis-stable/sentinel.conf --sentinel & 

#三台服务器sentinel输出:(注意每个机器输出对应的都是另外两台机器的IP)

#关掉主gc-redis1的redis-server服务
#将重新选举主服务器并重新配置连接到新的主服务器:

#查看主从关系:(gc-redis2为主,gc-redis3为从,如果gc-redis1重新启动,也将为从服务器加入到新的集群)

启动redis 
redis-server /usr/local/redis-stable/redis.conf & 
  
停止redis 
redis-cli -a xxoo shutdown 
  
启动sentinel 
redis-server /usr/local/redis-stable/sentinel.conf --sentinel & 
  
查看主备信息: 
redis-cli -h 127.0.0.1 -p 6379 -a xxoo info replication 

.

参考文档:http://mrcto.blog.51cto.com/1923168/1319542  

  

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/9202.html

(0)
上一篇 2021年7月19日 09:18
下一篇 2021年7月19日 09:18

相关推荐

发表回复

登录后才能评论