首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redis 2.8.7哨位环境配置问题,如何使它自动启动,他们应该订阅什么?

redis 2.8.7哨位环境配置问题,如何使它自动启动,他们应该订阅什么?
EN

Stack Overflow用户
提问于 2014-03-25 17:00:47
回答 2查看 9.9K关注 0票数 2

目前,我们正在尝试使用redis 2.8.7作为缓存存储(来自使用booksleeve的.NET web应用程序)。这似乎是非常有趣和令人兴奋的任务,目前,redis文档是非常好的,但由于缺乏真正的实际经验,我确实有几个问题,预期的配置应该如何正确完成。

我将下一篇文章作为主要配置源:

  1. 安装具有自动启动功能的redis (使用init脚本,以便重新启动之后一切都能正常启动):http://redis.io/topics/quickstart
  2. 将redis部署到azure:http://haishibai.blogspot.com/2014/01/walkthrough-setting-up-redis-cluster-on.html

最初的想法/假设是,在linux中运行1个redis主实例和2个从实例。为了提供高可用性的实例,我决定使用哨兵。所以我的预期配置现在看起来是这样的:

  1. MasterInstance: VM1 ( linux,Ubuntu),端口: 6379 (linux重新启动时自动启动)
  2. Slave1: VM2 ( linux,ubuntu),端口: 6380 (linux重新启动时自动启动):slaveOf MasterID 6379
  3. Slave2: VM3 ( linux,ubuntu),端口: 6379 (linux重新启动时自动启动):slaveOf MasterIP 6379

在VM启动后,我可以看到,我已经成功地连接了两个奴隶,并与master同步:来自主服务器的跟踪示例:

代码语言:javascript
复制
[1120] 25 Mar 14:11:18.629 - 1 clients connected (0 slaves), 793352 bytes in use
[1120] 25 Mar 14:11:18.634 * Slave asks for synchronization
[1120] 25 Mar 14:11:18.634 * Full resync requested by slave.
[1120] 25 Mar 14:11:18.634 * Starting BGSAVE for SYNC
[1120] 25 Mar 14:11:18.634 * Background saving started by pid 1227
[1227] 25 Mar 14:11:18.810 * DB saved on disk
[1227] 25 Mar 14:11:18.810 * RDB: 0 MB of memory used by copy-on-write
[1120] 25 Mar 14:11:18.836 * Background saving terminated with success
[1120] 25 Mar 14:11:18.837 * Synchronization with slave succeeded
[1120] 25 Mar 14:11:23.829 - DB 0: 2 keys (0 volatile) in 4 slots HT.
[1120] 25 Mar 14:11:23.829 - DB 2: 4 keys (0 volatile) in 4 slots HT.
[1120] 25 Mar 14:11:23.829 - 0 clients connected (1 slaves), 1841992 bytes in use
[1120] 25 Mar 14:11:29.011 - DB 0: 2 keys (0 volatile) in 4 slots HT.
[1120] 25 Mar 14:11:29.011 - DB 2: 4 keys (0 volatile) in 4 slots HT.
[1120] 25 Mar 14:11:29.011 - 0 clients connected (1 slaves), 1841992 bytes in use
[1120] 25 Mar 14:11:29.826 - Accepted 168.62.36.189:1024
[1120] 25 Mar 14:11:29.828 * Slave asks for synchronization
[1120] 25 Mar 14:11:29.828 * Full resync requested by slave.
[1120] 25 Mar 14:11:29.828 * Starting BGSAVE for SYNC
[1120] 25 Mar 14:11:29.828 * Background saving started by pid 1321
[1321] 25 Mar 14:11:29.871 * DB saved on disk
[1321] 25 Mar 14:11:29.871 * RDB: 0 MB of memory used by copy-on-write
[1120] 25 Mar 14:11:29.943 * Background saving terminated with success
[1120] 25 Mar 14:11:29.946 * Synchronization with slave succeeded
[1120] 25 Mar 14:11:34.195 - DB 0: 2 keys (0 volatile) in 4 slots HT.
[1120] 25 Mar 14:11:34.195 - DB 2: 4 keys (0 volatile) in 4 slots HT.
[1120] 25 Mar 14:11:34.195 - 0 clients connected (2 slaves), 1862920 bytes in use

现在我需要设置哨兵实例..。

  1. 我将sentinel.conf从最初的redis稳定包复制到3vm runnung redis(一个主服务器和两个奴隶)中。
  2. 在每个配置中,我都做了下面的修改: 哨兵监视器mymaster MasterPublicIP 6379 2
  3. 在每个VM上,使用下一个命令行启动哨兵: redis-server /etc/redis/entinel.conf-哨兵

在那之后我得到了哨兵成功启动的回应..。所有的VMs..。在启动所有3个哨兵实例之后,我得到了下一个跟踪示例(sentinel.conf文件中更新了有关奴隶和其他哨兵实例的信息):

代码语言:javascript
复制
[1743] 25 Mar 16:35:46.450 # Sentinel runid is 05380d689af9cca1e826ce9c85c2d68c65780878
[1743] 25 Mar 16:35:46.450 # +monitor master mymaster MasterIP 6379 quorum 2
[1743] 25 Mar 16:36:11.578 * -dup-sentinel master mymaster MasterIP 6379 #duplicate of     10.119.112.41:26379 or 83666bdd03fd064bcf2ec41ec2134d4e1e239842
[1743] 25 Mar 16:36:11.578 * +sentinel sentinel 10.119.112.41:26379 10.119.112.41 26379 @ mymaster 168.62.41.1 6379
[1743] 25 Mar 16:36:16.468 # +sdown sentinel 10.175.220.134:26379 10.175.220.134 26379 @ mymaster 168.62.41.1 6379
[1743] 25 Mar 16:36:40.876 * -dup-sentinel master mymaster MasterIP 6379 #duplicate of 10.175.220.134:26379 or fe9edeb321e04070c6ac6e28f52c05317a593ffd
[1743] 25 Mar 16:36:40.876 * +sentinel sentinel 10.175.220.134:26379 10.175.220.134 26379 @ mymaster 168.62.41.1 6379
[1743] 25 Mar 16:37:10.962 # +sdown sentinel 10.175.220.134:26379 10.175.220.134 26379 @ mymaster 168.62.41.1 6379

根据追踪样本,我还有下一个问题。如果有人能澄清这些问题,那就太好了:

  1. 为什么我看到-dup-哨兵大师配置在这里.这是因为我为同一个主实例添加了3个哨兵(也许我需要为每个redis实例注册一个哨兵--因此,一个哨兵将被映射到主,另外两个哨兵将被映射到两个奴隶)?
  2. 如何以启动redis服务器的方式启动哨兵(即使在重新启动VM时也会自动启动)?-我是否需要执行相同的操作并将它们注册为普通redis服务器实例?
  3. 是否可以将哨兵实例托管在与redis服务器相同的VM中?

之后,我启动了新的putty连接,并启动redis-cli来使用哨兵API,但是收到了下面命令的下一个响应:

代码语言:javascript
复制
127.0.0.1:6379> SENTINEL masters

(error) ERR unknown command 'SENTINEL'

我想我在这里做了件蠢事..。:(我做错了什么,以及如何从终端连接测试哨兵API?)

,谢谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-05-13 18:39:17

我想“哨兵大师”应该在Redis哨兵上运行。

redis-cli -p 26379 (默认的哨兵端口)

然后发布

127.0.0.1:26379>哨兵大师

你会得到一些东西

1)“名称”2) "mymaster“3) "ip”4) "127.0.0.1“5)”港口“6) "6379”。。。

自动启动哨兵,即使这样,VM也会重新启动

第一次将yes设置为sentinel.conf

并在这里修改init脚本(script),以反映哨兵端口和.conf位置。

$EXEC $CONF -哨兵#从哨兵模式开始

剩下的就像你为redis服务器做的一样。

票数 14
EN

Stack Overflow用户

发布于 2014-05-14 18:47:38

首先,你不能在主人身上运行哨兵。哨兵被设计用来检测主程序何时失败。如果你在同一个系统上运行哨兵,当你失去系统时,你就会失去哨兵。出于同样的原因,您不应该使用奴隶作为您的额外测试点。

您希望从客户端运行的位置运行哨兵,以确保您正在测试网络中断。

接下来,你提到你向你的哨兵吐露了奴隶信息。你不配置奴隶在哨兵-它发现他们通过主人。我怀疑您已经为每个从站添加了额外的哨兵监视命令--这确实会导致重复的监视尝试。

第三,正如@yofpro所提到的,要运行哨兵命令,您需要连接到sentinel -not Redis主或奴隶。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22641487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档