CentOS7 配置 Redis Sentinel主从集群配置
Redis Sentinel主从集群
- 环境、准备
- slave配置
- sentinel配置
- 测试
- C#连接Redis Sentinel
1、环境、准备
单实例3台CentOS7服务器,IP地址、:
192.168.31.167 #M1 S1
192.168.31.168 #R2 S2
192.168.31.169 #R3 S3
#部署结构示意
+----+
| M1 |
| S1 |
+----+
|
+----+ | +----+
| R2 |----+----| R3 |
| S2 | | S3 |
+----+ +----+
Configuration: quorum = 2
2、slave配置
将168、169机器两个实例/usr/local/redis/etc/6379.conf文件配置为167的从。
slaveof 192.168.31.167 6379
配置后重启3台服务器上的Redis。
3、sentinel配置
将/usr/local/src/redis/sentinel.conf复制到/usr/local/redis/etc/sentinel.conf修改如下配置:
protected-mode no
daemonize yes
logfile "/usr/local/redis/logs/sentinel.log"
sentinel monitor mymaster 192.168.31.167 6379 2
sentinel down-after-milliseconds mymaster 3000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000
配置完后启动3台服务器上的redis-sentinel
redis-sentinel /usr/local/redis/etc/sentinel.conf
在167查看主从信息,从也可通过info方式查看。
redis-cli -h 192.168.31.167
192.168.31.167:6379> info
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.31.168,port=6379,state=online,offset=6381,lag=0
slave1:ip=192.168.31.169,port=6379,state=online,offset=6524,lag=0
master_repl_offset:6524
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:6523
测试
在167 Master写入。
192.168.31.167:6379> set name ddrsql
OK
192.168.31.167:6379> keys *
1) "name"
192.168.31.167:6379> get name
"ddrsql"
在168 Slave中查看结果如下,169 Slave和168一样。
192.168.31.168:6379> keys *
1) "name"
192.168.31.168:6379> get name
"ddrsql"
将167 Master停止,也可直接将167关机。
192.168.31.167:6379> shutdown
not connected>
在168、169中查看,168提升为主。
192.168.31.168:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.31.169,port=6379,state=online,offset=503694,lag=0
master_repl_offset:503837
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:503836
192.168.31.169:6379> info replication
# Replication
role:slave
master_host:192.168.31.168
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:520680
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
C#连接Redis Sentinel
使用StackExchange.Redis
参考:
https://github.com/StackExchange/StackExchange.Redis/blob/master/StackExchange.Redis.Tests/Sentinel.cs
private const string IP = "192.168.31.167";
private const int Port = 26379;
private const string ServiceName = "mymaster";
private static readonly ConnectionMultiplexer Conn = GetConn();
//实际使用需要telnet验证通过的IP:Port地址来GetServer
private static readonly IServer Server = Conn.GetServer(IP, Port);
public static ConnectionMultiplexer GetConn()
{
// create a connection
var options = new ConfigurationOptions()
{
CommandMap = CommandMap.Sentinel,
EndPoints = { { IP, Port } },
AllowAdmin = true,
TieBreaker = "",
ServiceName = ServiceName,
SyncTimeout = 5000
};
//配置了多个哨兵
options.EndPoints.Add("192.168.31.169", Port);
options.EndPoints.Add("192.168.31.169", Port);
var connection = ConnectionMultiplexer.Connect(options, Console.Out);
Thread.Sleep(3000);
Assert.IsTrue(connection.IsConnected);
return connection;
}
CentOS7 配置 Redis Sentinel主从集群配置的更多相关文章
- redis:哨兵集群配置
最少配置1主2从3哨兵 一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- java:redis(redis安装配置,redis的伪集群配置)
1.redis安装配置: .安装gcc : yum install gcc-c++ .使用FTP工具FileZilla上传redis安装包到linux根目录下(当前步骤可以替换为:在root目录下执行 ...
- redis学习五 集群配置
redis集群配置 0,整体概述 整体来说就是: 1,安装redis 2,配置多个redis实例 3,安装 ruby和rubygems 4,启动red ...
- Redis单机和集群配置(版本在5.0后)
摘抄并用于自己后查 单机版的配置: 1. 下载redis压缩包,然后解压缩文件(tar xzf): 2. 进入解压后的redis文件目录,编译redis源文件(make,没有c环境要gcc): 3. ...
- 基于redis的cas集群配置(转)
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- 基于redis的cas集群配置
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- Redis Sentinel哨兵集群
Redis Sentinel(哨兵集群)是一种高可用的redis部署方案.在集群中的redis-master服务挂掉时,无需人为干预,即可通过哨兵集群的自我调整,实现redis服务的持续可用. 哨兵集 ...
- Redis Sentinel分布式集群
helm部署Redis哨兵分布式集群 Redis Sentinel集群 介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客 ...
- redis 负载均衡 集群配置
redis 官网 http://redis.io/ 中文网站 http://redis.cn/ 谷歌代码的redis项目 https://code.google.com/p/redis/ http:/ ...
随机推荐
- QDesktopWidget
在Qt中提供了QDesktopWidget类,提供屏幕的有关信息. 可以这么作: QDesktopWidget *d=QApplication::desktop(); int width=d-> ...
- iPhone 物理尺寸与分辨率
// iPhone 物理尺寸(pt:Point) 分辨率(px) // 4S 320*480(3.5英寸) 640*960 // 5,5c,5S 32 ...
- 从数据库到NoSQL思路整理
1. 数据库为什么要算范式?细说起来太多. 范式解决了数据冗余,从而保证ACID的操作性能.不然一堆删除异常,插入异常,就没法愉快的写SQL了 另外,对于多个业务公用的数据库,范式解决了集成的问题. ...
- PHP 7 安装 Memcache 和 Memcached 总结
Memcache 与 Memcached 的区别 Memcached 是 Memcache 的升级版,优化了 Memcache,并增加了一些操作方法.所以现在基本都是用最近版本的. PHP 7 下安装 ...
- 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...
- Quartz.net 起步
安装 Quartz 程序包 使用 nuget 命令行安装 Quartz: Install-Package Quartz 如果使用 JSON 序列化,使用 nuget 安装 Quartz.Seriali ...
- JavaScript中使用function作为对象键值
JavaScript的键值只能是string或者number,这一点真是返祖现象啊.现在我面临的问题: var funcs = {}; var funcA = function() { }; var ...
- 盘古分词+一元/二元分词Lucene
本文参考自:https://blog.csdn.net/mss359681091/article/details/52078147 http://www.cnblogs.com/top5/archiv ...
- .Net中XML,JSON的几种处理方式
一.XML: 1.基本了解: xml,Extensible markup language可扩展标记语言,用于数据的传输或保存,特点,格式非常整齐数据清晰明了,并且任何语言都内置了xml分析引擎, 不 ...
- 基于GitLab与Git Extensions搭建版本控制工具
1.背景 大家知道GitHub是现在非常流行的代码托管工具,但是如果有些项目不想开源的话,则需要付费,因此萌生了自己搭建一个Git的版本控制工具,供内网使用.GitLab则是个好的选择,但是GitLa ...