1.环境说明

我们将使用192.168.220.128、192.168.220.129两台机器搭建sentinel交叉主从为例

当前我们已在192.168.220.128上按redis安装教程安装了redis,192.168.220.129上没有安装

2. 配置128上的slave

cd /usr/myapp/redis-2.8./conf   #进入配置文件所在目录
cp redis.conf redis-.conf #128上的master所用配置文件
cp redis.conf redis-.conf #128上的slave所用配置文件
#配置128上的6380从属129的6379端口
cat >> redis-.conf << EOF
slaveof 192.168.220.129
EOF

3. 配置128上的sentinel

2.1修改conf/redis-6379.conf和conf/redis-6380.conf,配置masterauth字段值

2.2修改conf/sentinel.conf,配置以下字段的值

port
sentinel announce-ip 192.168.220.128
dir /usr/myapp/redis-2.8./data sentinel monitor mymaster1 192.168.220.128
sentinel down-after-milliseconds mymaster1
sentinel parallel-syncs mymaster1 2
sentinel failover-timeout mymaster1
sentinel auth-pass mymaster1 yourpasswd sentinel monitor mymaster2 192.168.220.129
sentinel down-after-milliseconds mymaster2
sentinel parallel-syncs mymaster2 2
sentinel failover-timeout mymaster2
sentinel auth-pass mymaster2 yourpasswd

mymaster1和mymaster2可理解为后边master的别名,如果还有其他master类似地添加上即可。

2.3为了方便把sentinel启动脚本写到adm目录下

cd adm

cat > start_sentinel << EOF
../bin/redis-sentinel ../conf/sentinel.conf
EOF

4. 在129部署redis

3.1将128上的redis打包发送到129上

tar -cf redis.tar redis-2.8.
scp redis.tar root@192.168.220.129:/usr/myapp

3.2修改配置文件中的ip地址

修改conf/redis-6379.conf和conf/redis-6380.conf,将bind的IP修改为本机网卡IP:

修改conf/redis-6380.conf中的slaveof,将129的6380配置为从属128的6379

修改conf/sentinel.conf,将sentinel announce-ip值修改为本机IP

5. 启动集群

到128、129和130三台机器redis的adm文件夹下分别执行./start_redis和./start_sentinel,启动redis和sentinel服务即可。

redis是数据库服务,sentinel相当于哨兵作用,两者相互独立;sentinel监视redis服务如果sentinel查看到自己参与管理的master停止,则会与其他参与管理的sentinel共同商量,从原master下属的slave中选出一个来担任新的master。

如果redis服务停止之前是master,当其重新启动后不再是master而是变成各sentinel新选举出来的master的slave。

master和slave的区别是master可读写,slave只可读;其实通过配置slave也可读写,所以最为严谨的说法是master和slave的区别是,slave同步master的操作而master不会同步slave的操作slave之间也不会互相同步操作。

6. 应用连接集群

在哨兵模式中,应用应该往主里写数据但是应用是不知道哪个是主那个是从的,一个个去连接然后查看是主是从的做法也是不够合理的。

在实际使用中是通过sentinel来获取哪个是主哪个是从的。

Set sentinels = new HashSet();
sentinels.add(new HostAndPort("192.168.220.128", ).toString());
sentinels.add(new HostAndPort("192.168.220.129", ).toString());
sentinels.add(new HostAndPort("192.168.220.130", ).toString());
JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
Jedis master = sentinelPool.getResource();
master.set("name","张三");
String value = master2.get("name");

参考:

http://blog.csdn.net/ownfire/article/details/51546543

https://segmentfault.com/a/1190000002680804

http://blog.csdn.net/xianymo/article/details/46412271

redis sentinel哨兵模式集群搭建教程的更多相关文章

  1. Redis sentinel 哨兵模式集群方案配置

    第一个方案是创建 redis cluster,第二种方案就是用哨兵模式来进行主从替换以及故障恢复.兵模式集群方案配置 一.sentinel介绍 Sentinel作用: 1):Master状态检测 2) ...

  2. redis主从复制,哨兵以及集群搭建部署

    redis主从复制 1.redis支持多实例的功能,一台机器上,可以运行多个单个的redis数据库 环境准备,运行3个redis数据库,达到 1主 2从的配置 主库 6379.conf port 63 ...

  3. Redis主从哨兵和集群搭建

    主从配置 哨兵配置 集群配置 1.主从: 国王和丞相,国王权力大(读写),丞相权利小(读) 2.哨兵: 国王和王子,国王死了(主服务挂掉),王子继位(从服务变主服务) 3.集群: 国王和国王,一个国王 ...

  4. Redis 3.0.2集群搭建以及相关问题汇总

    Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...

  5. Redis单机安装以及集群搭建

    今天主要来看一下Redis的安装以及集群搭建(我也是第一次搭建). 环境:CentOS 7.1,redis-5.0.7 一.单机安装 1.将Redis安装包放置服务器并解压 2.进入redis安装目录 ...

  6. 转:Redis 3.2.1集群搭建

    Redis 3.2.1集群搭建   一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2) ...

  7. 【运维技术】Zookeeper单机以及集群搭建教程

    Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...

  8. Redis 5.0.5集群搭建

    Redis 5.0.5集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):s ...

  9. Redis 哨兵(sentinel)模式集群配置(5.0.3版本)

    一.准备工作 1.系统环境:centos6.4 2.服务器六台(1主5从): 192.168.1.161(master) 192.168.1.162(slave) 192.168.1.163(slav ...

随机推荐

  1. JAVA之经典算法

    package Set.Java.algorithm; import java.util.Scanner; public class algorithm { /** * [程序1] 题目:古典问题:有 ...

  2. 理解 Redis(6) - List 值

    list 值就是一组根据插入顺序排列的字符串, 从左向右排列, 左边为头(head), 右侧为尾(tail). 左边为顶部, 右边为底部. 下图为 list 值的示意图: 从左侧开始向键为 num 的 ...

  3. ubuntu16系统磁盘空间/dev/vda1占用满的问题

    参考文档: https://www.cnblogs.com/moonandstar08/p/6091507.html (系统磁盘空间/dev/xvda1占满原因分析) https://blog.csd ...

  4. 力扣(LeetCode)1009. 十进制整数的反码

    每个非负整数 N 都有其二进制表示.例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推.注意,除 N = 0 外,任何 ...

  5. public,protected,private

    1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...

  6. Qt的Radio Button(单选按钮)

    1 在UI界面中加入控件 2 对QRadioButton控件进行分组 QRadioButton的分组有多重方法,如采用组合框.QWidge等,下面介绍采用QButtonGroup方法来实现分组,好处是 ...

  7. js正则表达式的积累

    验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证 ...

  8. discuz的学习和部署

    1.http://jingyan.baidu.com/article/b87fe19eb57ff252183568d9.html 下载好后安装一个mysql, 2.

  9. 量化投资的Python库——Tushare

    本来想用python自带的help命令和dir命令,来写一个关于Tushare库的使用手册呢,但是后来发现了Tushare的官方网站, ̄□ ̄||,网址如下: http://tushare.org/ 把 ...

  10. 第 7 章 多主机管理 - 047 - 管理 Machine

    管理 Machine Docker Machine 则很简单 docker-machine env host1 显示访问 host1 需要的所有环境变量: 根据提示,执行 eval $(docker- ...