redis主从配置及其java的调用

redis主从配置及其java的调用

环境:虚拟机是 CentOS ,版本CentOS6.5   IP:192.168.1.9 redis-3.2.4版本

1.下载redis安装包
    命令:
    cd /
    mkdir app           
    wget http://download.redis.io/releases/redis-3.2.4.tar.gz
2.解压
   命令:
   tar -zxvf redis-3.2.4.tar.gz
   [root@jikang app]# ls
   redis-3.2.4  redis-3.2.4.tar.gz

编译并且安装

[root@jikang redis-3.2.4]# cd src/
[root@jikang src]# make && make install

主从的主要配置文件夹

[root@jikang redis-3.2.4]# mkdir masterVslave/
创建三个文件夹,将配置分别放进去
[root@jikang redis-3.2.4]# cd masterVslave/
[root@jikang masterVslave]# tree
.
├── 6379
│   └── redis.conf
├── 6380
│   └── redis.conf
└── 6381
    └── redis.conf

3 directories, 3 files

redis.conf配置相应的设置

port  6379                                        //端口6379,6380,6381        
bind 192.168.1.9                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,否则无法主从
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应6379,6380,6381 
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记
logfile "文件名"                   //和dir 有关系
dir ./                          //路径
slaveof 192.168.1.9 6379    //在6380,6381里面配置,作为从
。。。。。。其他配置一句需求做响应的设置
requirepass 123456 本机redis密码 如果哨兵中配置,那么主从都配置
masterauth "123456" 主机redis密码 如果哨兵中配置,那么主从都配置

配置sentinel.conf

只需要配置这一个:
vim sentinel.conf
输入内容:
sentinel monitor mymaster 192.168.1.9 6379 1
bind 192.168.1.9        //一定要绑定当前ip,否则外界不能调用
daemonize yes
dir "/app/redis-3.2.4/src"  //自己设置
logfile "./sentinel.log"
sentinel auth-pass mymaster 123456 //密码


说明:
mymaster:监控主数据的名称,自定义即可,可以使用大小写字母和“.-_”符号
192.168.1.9:监控的主数据库的IP
6379:监控的主数据库的端口
1:最低通过票数

启动redis

[root@jikang src]# ./redis-server ../masterVslave/6379/redis.conf
[root@jikang src]# ./redis-server ../masterVslave/6380/redis.conf
[root@jikang src]# ./redis-server ../masterVslave/6381/redis.conf

启动哨兵

[root@jikang src]# ./redis-sentinel ../sentinel.conf

查看进程


[root@jikang src]# ps -ef | grep redis
root       6625      1  0 13:02 ?        00:00:02 ./redis-server 192.168.1.9:6379               
root       6629      1  0 13:02 ?        00:00:02 ./redis-server 192.168.1.9:6380               
root       6633      1  0 13:02 ?        00:00:02 ./redis-server 192.168.1.9:6381               
root       6679      1  0 13:03 ?        00:00:04 ./redis-sentinel 192.168.1.9:26379 [sentinel]
root       6802   1613  0 13:31 pts/0    00:00:00 grep redis

查看哨兵日志

[root@jikang src]# cat sentinel.log 
6679:X 27 Dec 13:03:59.828 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.4 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 6679
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

6679:X 27 Dec 13:03:59.830 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
6679:X 27 Dec 13:03:59.855 # Sentinel ID is 959ab7ad8eda390abfcf88f57ad718efe59f6dfc 哨兵已经启动,它的id为9059917216012421e8e89a4aa02f15b75346d2b7
6679:X 27 Dec 13:03:59.856 # +monitor master mymaster 192.168.1.9 6379 quorum 1  为master数据库添加了一个监控
6679:X 27 Dec 13:03:59.856 * +slave slave 192.168.1.9:6380 192.168.1.9 6380 @ mymaster 192.168.1.9 6379
6679:X 27 Dec 13:03:59.858 * +slave slave 192.168.1.9:6381 192.168.1.9 6381 @ mymaster 192.168.1.9 6379 发现了2个slave(由此可以看出,哨兵无需配置slave,只需要指定master,哨兵会自动发现slave)

java调用代码

public static void main(String[] args) {
        Set<String> sentinels = new HashSet<String>();
        String hostAndPort1 = "192.168.1.9:26379";
        sentinels.add(hostAndPort1);
        String clusterName = "mymaster";
        String password = "123456";
        JedisSentinelPool pool = new JedisSentinelPool(clusterName, sentinels,password);
        Jedis jedis = pool.getResource();
        jedis.set("username", clusterName);
        jedis.set("password", password);
        String username = jedis.get("username");
        String pass = jedis.get("password");
        System.out.println(username +"=========="+pass);

    }
    结果:
十二月 27, 2017 1:38:46 下午 redis.clients.jedis.JedisSentinelPool initSentinels
信息: Trying to find master from available Sentinels...
十二月 27, 2017 1:38:46 下午 redis.clients.jedis.JedisSentinelPool initSentinels
信息: Redis master running at 192.168.1.9:6379, starting Sentinel listeners...
十二月 27, 2017 1:38:46 下午 redis.clients.jedis.JedisSentinelPool initPool
信息: Created JedisPool to master at 192.168.1.9:6379
mymaster==========123456
注:在这里,是可以使用spring配置,省的总是new对象,浪费资源

模拟其中主机宕机


[root@jikang redis-3.2.4]# ps -ef |grep redis
root       6625      1  0 13:02 ?        00:00:03 ./redis-server 192.168.1.9:6379               
root       6629      1  0 13:02 ?        00:00:03 ./redis-server 192.168.1.9:6380               
root       6633      1  0 13:02 ?        00:00:03 ./redis-server 192.168.1.9:6381               
root       6679      1  0 13:03 ?        00:00:06 ./redis-sentinel 192.168.1.9:26379 [sentinel]
root       6884   3119  0 13:43 pts/2    00:00:00 grep redis
[root@jikang redis-3.2.4]# kill -9 6625

查看哨兵日志

[root@jikang src]# tail -fn 1000 sentinel.log 
6679:X 27 Dec 13:03:59.828 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.4 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 6679
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

6679:X 27 Dec 13:03:59.830 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
6679:X 27 Dec 13:03:59.855 # Sentinel ID is 959ab7ad8eda390abfcf88f57ad718efe59f6dfc 
6679:X 27 Dec 13:03:59.856 # +monitor master mymaster 192.168.1.9 6379 quorum 1 
6679:X 27 Dec 13:03:59.856 * +slave slave 192.168.1.9:6380 192.168.1.9 6380 @ mymaster 192.168.1.9 6379
6679:X 27 Dec 13:03:59.858 * +slave slave 192.168.1.9:6381 192.168.1.9 6381 @ mymaster 192.168.1.9 6379
6679:X 27 Dec 13:44:19.665 # +sdown master mymaster 192.168.1.9 6379 说明master服务已经宕机
6679:X 27 Dec 13:44:19.665 # +odown master mymaster 192.168.1.9 6379 #quorum 1/1
6679:X 27 Dec 13:44:19.665 # +new-epoch 1
6679:X 27 Dec 13:44:19.665 # +try-failover master mymaster 192.168.1.9 6379 开始恢复故障
6679:X 27 Dec 13:44:19.690 # +vote-for-leader 959ab7ad8eda390abfcf88f57ad718efe59f6dfc 1 投票选举哨兵leader,现在就一个哨兵所以leader就自己
6679:X 27 Dec 13:44:19.690 # +elected-leader master mymaster 192.168.1.9 6379 选中leader
6679:X 27 Dec 13:44:19.690 # +failover-state-select-slave master mymaster 192.168.1.9 6379
6679:X 27 Dec 13:44:19.767 # +selected-slave slave 192.168.1.9:6380 192.168.1.9 6380 @ mymaster 192.168.1.9 6379  选中其中的一个slave当做master
6679:X 27 Dec 13:44:19.767 * +failover-state-send-slaveof-noone slave 192.168.1.9:6380 192.168.1.9 6380 @ mymaster 192.168.1.9 6379  发送slaveof no one命令
6679:X 27 Dec 13:44:19.823 * +failover-state-wait-promotion slave 192.168.1.9:6380 192.168.1.9 6380 @ mymaster 192.168.1.9 6379 等待升级master
6679:X 27 Dec 13:44:20.139 # +promoted-slave slave 192.168.1.9:6380 192.168.1.9 6380 @ mymaster 192.168.1.9 6379 升级6380为master
6679:X 27 Dec 13:44:20.139 # +failover-state-reconf-slaves master mymaster 192.168.1.9 6379
6679:X 27 Dec 13:44:20.190 * +slave-reconf-sent slave 192.168.1.9:6381 192.168.1.9 6381 @ mymaster 192.168.1.9 6379
6679:X 27 Dec 13:44:21.184 * +slave-reconf-inprog slave 192.168.1.9:6381 192.168.1.9 6381 @ mymaster 192.168.1.9 6379
6679:X 27 Dec 13:44:21.185 * +slave-reconf-done slave 192.168.1.9:6381 192.168.1.9 6381 @ mymaster 192.168.1.9 6379
6679:X 27 Dec 13:44:21.239 # +failover-end master mymaster 192.168.1.9 6379 故障恢复完成
6679:X 27 Dec 13:44:21.239 # +switch-master mymaster 192.168.1.9 6379 192.168.1.9 6380主数据库从6379转变为6380
6679:X 27 Dec 13:44:21.239 * +slave slave 192.168.1.9:6381 192.168.1.9 6381 @ mymaster 192.168.1.9 6380  添加63816380的从库
6679:X 27 Dec 13:44:21.239 * +slave slave 192.168.1.9:6379 192.168.1.9 6379 @ mymaster 192.168.1.9 6380添加63796380的从库
6679:X 27 Dec 13:44:51.261 # +sdown slave 192.168.1.9:6379 192.168.1.9 6379 @ mymaster 192.168.1.9 6380 发现6379已经宕机,等待6379的恢复  注意+sdown 是+

重启主redis

[root@jikang src]# ./redis-server ../masterVslave/6379/redis.conf 

查看哨兵日志

6679:X 27 Dec 13:53:57.860 # -sdown slave 192.168.1.9:6379 192.168.1.9 6379 @ mymaster 192.168.1.9 6380 6379已经恢复服务注意:-sdown 是 —
6679:X 27 Dec 13:54:07.813 * +convert-to-slave slave 192.168.1.9:6379 192.168.1.9 6379 @ mymaster 192.168.1.9 63806379设置为6380的slave  

还可以模拟从redis宕机,以及多个哨兵模式:
vim sentinel.conf
输入内容:
sentinel monitor mymaster 127.0.0.1 6381 2
sentinel monitor mymaster2 127.0.0.1 6381 1

这里不再演示

名词解释

一:什么是哨兵
顾名思义,哨兵的作用就是对Redis的系统的运行情况的监控,它是一个独立进程。它的功能有2个:

1、监控主数据库和从数据库是否运行正常;
2、主数据出现故障后自动将从数据库转化为主数据库;

原理

单个哨兵架构:
单个哨兵架构
多个哨兵结构:
多个哨兵架构
配置多个哨兵,不仅同事监控主从数据库,哨兵之间也是互相监控
redis配置详解,参照:joshua317的博客
错误之处,欢迎指正。
未完。。。待续

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值