目前,我们正在尝试使用redis 2.8.7作为缓存存储(来自使用booksleeve的.NET web应用程序)。这似乎是非常有趣和令人兴奋的任务,目前,redis文档是非常好的,但由于缺乏真正的实际经验,我确实有几个问题,预期的配置应该如何正确完成。
我将下一篇文章作为主要配置源:
最初的想法/假设是,在linux中运行1个redis主实例和2个从实例。为了提供高可用性的实例,我决定使用哨兵。所以我的预期配置现在看起来是这样的:
在VM启动后,我可以看到,我已经成功地连接了两个奴隶,并与master同步:来自主服务器的跟踪示例:
[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现在我需要设置哨兵实例..。
在那之后我得到了哨兵成功启动的回应..。所有的VMs..。在启动所有3个哨兵实例之后,我得到了下一个跟踪示例(sentinel.conf文件中更新了有关奴隶和其他哨兵实例的信息):
[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根据追踪样本,我还有下一个问题。如果有人能澄清这些问题,那就太好了:
之后,我启动了新的putty连接,并启动redis-cli来使用哨兵API,但是收到了下面命令的下一个响应:
127.0.0.1:6379> SENTINEL masters
(error) ERR unknown command 'SENTINEL'我想我在这里做了件蠢事..。:(我做错了什么,以及如何从终端连接测试哨兵API?)
,谢谢您的帮助。
发布于 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服务器做的一样。
发布于 2014-05-14 18:47:38
首先,你不能在主人身上运行哨兵。哨兵被设计用来检测主程序何时失败。如果你在同一个系统上运行哨兵,当你失去系统时,你就会失去哨兵。出于同样的原因,您不应该使用奴隶作为您的额外测试点。
您希望从客户端运行的位置运行哨兵,以确保您正在测试网络中断。
接下来,你提到你向你的哨兵吐露了奴隶信息。你不配置奴隶在哨兵-它发现他们通过主人。我怀疑您已经为每个从站添加了额外的哨兵监视命令--这确实会导致重复的监视尝试。
第三,正如@yofpro所提到的,要运行哨兵命令,您需要连接到sentinel -not Redis主或奴隶。
https://stackoverflow.com/questions/22641487
复制相似问题