我一直在阅读有关如何使用Redis Sentinel的一些内容,我知道可以有2个或更多的标记,并在从客户端调用时在它们之间实现负载平衡.
将这两个哨兵与我的主人+奴隶放在同一个服务器上是一种好习惯吗?换句话说,在与主服务器相同的物理服务器中有1个标记,而在从服务器的同一个物理服务器中有另一个标识符吗?
在我看来,如果主服务器死机,从机中的标记将简单地将从机升级为主机.如果从服务器死了,那没关系,因为主服务器仍在运行.
我错过了什么吗?有什么缺点?
我宁愿让哨兵与主/从属于同一物理服务器,以减少延迟.
问候溢出者,
在Redis的标记/集群设置中,我们是否可以使用带有从站总数的WAIT命令来确保Redis服务器之间的一致性?为什么不?
亲切的问候
我在Windows 10 PC上安装了Ubuntu Bash.之后使用apt-get install命令安装Redis 我可以使用命令连接到redis redis-cli信息显示详细信息
# Server
redis_version:2.8.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a44a05d76f06a5d9
redis_mode:standalone
Run Code Online (Sandbox Code Playgroud)
之后我创建了一个我可以连接的复制品
发布我使用从/etc/redis/文件夹安装的默认配置文件启动Sentinel .
我用来启动redis的命令是 sudo redis-server /etc/redis/sentinel1.conf --sentinel
但是,如果我尝试使用redis-cli -p 26379命令连接,我会收到此错误
laptop:~$ redis-cli -p 26379
Could not connect to Redis at 127.0.0.1:26379: Connection refused
not connected>
Run Code Online (Sandbox Code Playgroud)
我检查了sentinel.conf文件,指定的端口是26379
我甚至尝试用redis-sentinel /path/to/sentinel.conf
相同的错误开始哨兵.
相同的设置在虚拟机上运行的Ubuntu上运行正常
编辑
我在WIndows 10 Bash上运行Ubuntu所以netstat -tunlpa命令显示了这一点
vipresh@VIPRESHJH:/etc/redis$ sudo netstat -tunlpa
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name …Run Code Online (Sandbox Code Playgroud) 我们的设置
此设置在两个集群中复制,用于称为元数据和缓存.我们想要部署更多集群.
主持人
是我们构建的python守护程序,它订阅了sentinels pub/sub并侦听+ switch-master消息.以下是协调人采取的行动:
SENTINEL get-master-addr-by-name mymaster问题
因为奴隶每天可以根据交通进出多次,所以我们最终会遇到属于同一个奴隶争夺同一奴隶的哨兵的一些奴隶.这是因为IP池在集群之间共享,并且据我们所知,从属ID是它们的IP.
这是复制的方法:
哨兵陷入无休止的循环中,永远为这种资源而战.即使我们只有一个哨兵小组管理具有不同主名称的两个redis群集,这种情况也会发生.这使我们相信哨兵不了解不同群集之间的资源,而只是分别对每个群集执行合乎逻辑的操作.
解决方案我们试过
SENTINEL reset mymaster+ sdown事件后,尝试让哨兵忘记该节点.问题是,如果该集群正在执行主故障转移,它可能会生成竞争条件.我们成功地复制了这个假设,并且让哨兵不同步,其中一个指向一个主人,另外两个指向另一个.理想的解决方案
Redis哨兵提供SENTINEL removeslave 172.24.246.142 mymaster我们可以在每次有奴隶的+ sdown事件时运行.这将使该群集忘记那个奴隶曾经存在而不会产生副作用SENTINEL reset …
我们有两个数据中心,每个数据中心都有两个redis实例.通常它们被复制为链.
NY1 (Master) --> NY2 (Slave) --> CO1 (Slave) --> CO2 (Slave)
NY是纽约,CO是科罗拉多州,我们的备份数据中心.为了节省WAN上的带宽,我们不希望CO1 和 CO2连接到NY1.相反,我们想要一种链配置,其中只有一个从属设备直接连接到主设备,而其他设备都是"奴隶的奴隶".
可以使用Sentinel维护这种复制布局吗?或者所有奴隶都必须是主人的奴隶,而不是奴隶的奴隶?
我需要使用带有两个 Windows Server 2016 的 Redis Sentinel 以 HA 模式(在集群中)配置 Redis。四处搜索,有很多关于如何在 Windows 上安装 Redis 的材料,但它们似乎都没有......对我来说。
我到了这个页面,其中以有组织的方式列出了大部分内容:https : //github.com/ServiceStack/redis-windows
我基本上对所有这些都有问题,想了解一些事情,甚至可能得到推荐的方法来指导我:
我一直试图在我的应用程序中配置ASP.NET Redis会话状态提供程序一段时间.由于这篇文章,我终于能够成功连接到master和set/get键:无法使用ASP.NET Session State Provider连接到Redis服务器
现在,我的下一个问题是...使用Sentinel配置.
我熟悉SENTINEL get-master-addr-by-name master-dev-sessionstate命令来确定主人.这个提供商是否内置了此功能?基于上面链接的博客文章的评论(这也是我可以找到的唯一文档),似乎我应该能够使用connectionString属性来传递多个主机.不过,我不确定这些多个主机是否打算成为Sentinels.
<connectionStrings>
<add name="RedisConnection" connectionString="1.2.3.4:5,6.7.8.9:10,abortConnect=false,ssl=false,password=XXXXXX,operationTimeoutInMilliseconds=5000"/>
</connectionStrings>
<sessionState mode="Custom" customProvider="MySessionStateStore">
<providers>
<clear/>
<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="RedisConnection"/>
</providers>
</sessionState>
Run Code Online (Sandbox Code Playgroud)
像这样配置我的连接时,我收到此错误:
附加信息:无法连接到redis服务器; 要创建断开连接的多路复用器,请禁用AbortOnConnectFail.
即使我的连接字符串中只有主IP,我也会收到此错误.如上所示,我的连接字符串中有abortConnect ="false",这就是它指示我做的事情.连接字符串中存在或不存在相同的错误.
考虑到这一点,这是我的问题......
编辑:我应该注意,这是一个自定义的本地Redis安装.我们没有通过Azure运行.
编辑:我最近试图将我的工作配置指向Sentinel,我收到"没有连接可用于服务此操作:EVAL." 这让我相信这个提供商没有Sentinel支持.谁能证实这一点?
我将redis配置为master,有两个slave,每个都在一个单独的盒子上.我还在每个盒子上运行了一个哨兵进程.它是这里的文档中描述的设置:
http://redis.io/topics/sentinel#example-2-basic-setup-with-three-boxes
每个哨兵都可以连接到我的主人,可以看到奴隶.他们能够独立检测主设备或从设备是否发生故障.问题是哨兵无法互相发现.
我已经验证了每个哨兵都__sentinel__:hello按预期向频道发布消息,但似乎没有一个实际上是从其他节目接收消息.
我如何让哨兵看到对方?
我有 2 个 Redis 服务器,一个主服务器,另一个从服务器(复制)。一旦Master由于某种原因宕机了,Slave就会成为Master,并继续充当Master,直到该服务器出现问题为止。
我有一个nodeJS服务器,我想将数据推送到当前作为Master运行的Redis。我有一个监视 Redis 服务器的哨兵,但我的问题是如何使用 nodeJS 从哨兵获取主信息?如果有办法的话,它是否会自动将数据推送到备用redis服务器而无需重新启动任何服务?
我正在尝试获取当前正在监视 redis master 的所有哨兵的列表。
我知道如果我有一个哨兵,我就可以使用sentinel sentinels mymaster,但如果我没有任何哨兵的地址,我怎样才能获得它们?
redis-sentinel ×10
redis ×9
asp.net ×1
autoscaling ×1
c# ×1
consistency ×1
devops ×1
node-redis ×1
node.js ×1
session ×1
ubuntu ×1
windows ×1
windows-10 ×1