天天看点

[Redis基础]-- Redis的HA搭建和主从复制搭建以及测试

Linux Redis主从复制\切换安装、测试
软件版本:redis-3.0.7,必须使用该稳定版本否则会错各种问题

基本安装步骤:
Redis安装(三个节点)
安装相关编译的依赖包
# yum -y install gcc make

安装redis(三个节点)
软件上传到/opt目录
# cd /opt/
# tar -zxvf redis-3.0.7.tar.gz
# mv redis-3.0.7/ redis/
# cd redis/
# make && make install一、配置192.168.1.101(主机名:node1)的副本集(192.168.1.102--->主机名:node2,192.168.1.103-->主机名:node3)
 
1、修改192.168.1.102 、192.168.1.103的redis.cong文件,保存并且退出
   slaveof node1 6379
2、启动192.168.1.101 ,再启动192.168.1.102、192.168.1.103
   #./src/redis-server redis.conf
3、测试是否正常
   进入node1客户端进行插入数据:
   #./redis-cli 6379
   
二、sentinel配置三台机器的redis集群
1、集群节点:
节点1:192.168.1.101  目录----》/opt/soft/master-redis/redis
节点2:192.168.1.102  目录----》/opt/soft/slave-redis/redis
节点3:192.168.1.103  目录----》/opt/soft/slave-redis/redis
 
2、修改192.168.1.101节点上的文件
   vi /redis/sentinel.conf
   内容如下:
   port 26379                                       ----##sentinel实例之间的通讯端口
   sentinel monitor mymaster node1 6379 2          ---mymaster是主节点名称,node1是主节点主机名,6379是主节点端口,
    ---"2"是当有两个sentinel实例同时检测到redis异常时,才会有反应
   sentinel down-after-milliseconds mymaster 60000 ---心跳时间60秒      
   sentinel failover-timeout mymaster 180000             ---故障转移时间180秒  
   sentinel parallel-syncs mymaster 2                           ---主节点对应2个slave从节点
 
3、发送sentinel.conf 到192.168.1.102 、192.168.1.102上
4、启动sentinel;先在node1上启动---》再启动node2和node3的sentnel
    #./src/redis-sentinel sentinel.conf &
5、启动redis服务端命令:
#/opt/soft/slave-redis/redis/src/redis-server /opt/soft/slave-redis/redis/redis.conf &
   停止服务命令:/opt/soft/maste-redis/redis/src/redis-cli shutdown
6、测试主从切换架构
 启动redis后,主节点是node1,当停止node1的服务后,再启动node2的redis服务,会发现node2变成了master
 Jedis API访问时,必须访问redis master才能获得结果
 
import redis.clients.jedis.Jedis;
import java.util.Random;
/**
 * Document:本类作用---->测试链接redis,副本集测试、以及主从切换测试
 * 当主挂了以后,从节点之一马上升级为主节点
 * User: yangjf
 * Date: 2016072016/7/315:26
 */
public class ConnectRedisTest {
    public static void main(String[] args) {
        Jedis jedis=new Jedis("node2",6379);
//        jedis.auth("test_redis"); 如果是redis-3.2.1版本,则需要该认证
        String keynode1=String.valueOf(new Random().nextInt(236));
        String keynode2=String.valueOf(new Random().nextInt(5645));
        jedis.set(keynode1,keynode2);
        String value=jedis.get(keynode1);
        System.out.println("node2结果是:"+value);
        Jedis jedis2=new Jedis("node1",6379);
        System.out.println("node1结果是:"+jedis2.get(keynode1));
        Jedis jedis3=new Jedis("node3",6379);
        System.out.println("node3结果是:"+jedis3.get(keynode1));
    }
}
 
7、停止服务:需要先停止sentinel,再停止redis服务      

继续阅读