http://www.cnblogs.com/lovecindywang/archive/2011/01/31/1948233.html
未来是并行计算和SOA的天下
随笔-36 文章-0 评论-238
Mongodb和KT的双机房灾备配置方案尝试
假设有2个机房(测试服务器2/3以及123/124)互为灾备(灾备机房在主机房对外服务时处于待命),应用都只连接自己机房的存储服务(mongodb1.6.5和kt 0.9.28),两个机房之间的存储服务需要相互同步,尝试方案如下:
编号
机器IP和端口
服务
备注
1
192.168.2.2:10000
主机房Mongodb masterA
和8双向同步
2
192.168.2.2:20000
主机房Mongodb replica set1
2,5,9,12是数据节点,7,14是鉴证节点
3
192.168.2.2:30000
主机房Kt node1
和10双向同步
4
192.168.2.3:10000
主机房Mongodb slaveA
从1,8复制数据
5
192.168.2.3:20000
主机房Mongodb replica set2
2,5,9,12是数据节点,7,14是鉴证节点
6
192.168.2.3:30000
主机房Kt node2
和13双向同步
7
192.168.2.3:40000
主机房Mongodb replica arb1
鉴证服务器1
8
192.168.2.123:10000
灾备机房Mongodb masterB
和1双向同步
9
192.168.2.123:20000
灾备机房Mongodb replica set3
2,5,9,12是数据节点,7,14是鉴证节点
10
192.168.2.123:30000
灾备机房Kt node1
和3双向同步
11
192.168.2.124:10000
灾备机房Mongodb slaveB
从1,8复制数据
12
192.168.2.124:20000
灾备机房Mongodb replica set4
2,5,9,12是数据节点,7,14是鉴证节点
13
192.168.2.124:30000
灾备机房Kt node2
和6双向同步
14
192.168.2.124:40000
灾备机房Mongodb replica arb2
鉴证服务器2
此套配置特点如下:
1 Mongodb Master / Slave 结构数据保存4份
2 Mongodb Replica Sets 结构数据保存4份
3 KT2个节点,每一个节点数据保存2份(如果把KT像memcached那样使用,在客户端hash key到不同节点的话,需要客户端支持对于不同的服务器IP可以使用相同的hash,也就是不以endpoint作为hash的值,在故障转移之后保持相同key存和取相同的节点,这仅是客户端的逻辑,对于服务端来只需要考虑一组节点之间的同步)
4 切换到灾备机房之后,不需要做任何配置改动,主机房起来之后,需要确定Replica Set的活动服务器在灾备机房,否则可能会存在灾备机房的应用还是在访问主机房的存储服务
说明:
1 之所以除了4个replica set还需要两个鉴证节点是因为经测试如果同一机房两个replica set快速关闭的话,不能正确选举master,如果不需要保证同一机房数据备份的话,可以考虑只用两个数据节点
2 经测试发现如果11不订阅1,只能接受8的数据改动,1的数据改动不会过来,这也是Mongodb的一个缺陷吧,不能级联复制,如果订阅1,那么会在专线中产生两份带宽
具体配置如下
192.168.2.2
mongodb主 端口 10000/11000
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 10000 --dbpath /opt/mongodb/10000 --logpath /opt/mongodb/10000/log --rest --oplogSize 1024 --logappend --master --slave --source 192.168.2.123:10000 --slavedelay 10 --autoresync
mongodb relica set 1 端口 20000/21000
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 20000 --dbpath /opt/mongodb/20000 --logpath /opt/mongodb/20000/log --replSet blub --rest --oplogSize 1024 –logappend
/root/mongodb-linux-x86_64-1.6.5/bin/mongo --port 20000
config = {_id: 'blub', members: [
{_id: 0, host: '192.168.2.2:20000'},
{_id: 1, host: '192.168.2.3:20000'},
{_id: 2, host: '192.168.2.123:20000'},
{_id: 3, host: '192.168.2.124:20000'},
]}
rs.initiate(config)
rs.status()
rs.addArb("192.168.2.124:40000")
rs.addArb("192.168.2.3:40000")
kt node1 端口 30000/31000
kchashmgr create /opt/kt/30000.kch
ktserver -port 30000 -ulog /opt/kt/30000-ulog -sid 1 -mhost 192.168.2.123 -mport 30000 -rts /opt/kt/30000.rts -plsv /usr/local/libexec/ktplugservmemc.so -plex "port=31000#opts=f" -dmn /opt/kt/30000.kch
192.168.2.3
mongodb从 端口 10000/11000
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 10000 --dbpath /opt/mongodb/10000 --logpath /opt/mongodb/10000/log --rest --oplogSize 1024 --logappend –slave --slavedelay 2 --autoresync
/root/mongodb-linux-x86_64-1.6.5/bin/mongo --port 10000
use local
db.sources.insert({"host":"192.168.2.2"});
db.sources.insert({"host":"192.168.2.123"});
mongodb relica set 2 端口 20000/21000
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 20000 --dbpath /opt/mongodb/20000 --logpath /opt/mongodb/20000/log --replSet blub --rest --oplogSize 1024 –logappend
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 40000 --dbpath /opt/mongodb/40000 --logpath /opt/mongodb/40000/log --replSet blub --rest --oplogSize 1 –logappend
/root/mongodb-linux-x86_64-1.6.5/bin/mongo --port 20000
config = {_id: 'blub', members: [
{_id: 0, host: '192.168.2.2:20000'},
{_id: 1, host: '192.168.2.3:20000'},
{_id: 2, host: '192.168.2.123:20000'},
{_id: 3, host: '192.168.2.124:20000'},
]}
rs.initiate(config)
rs.status()
rs.addArb("192.168.2.124:40000")
rs.addArb("192.168.2.3:40000")
kt node2 端口 30000/31000
kchashmgr create /opt/kt/30000.kch
ktserver -port 30000 -ulog /opt/kt/30000-ulog -sid 1 -mhost 192.168.2.124 -mport 30000 -rts /opt/kt/30000.rts -plsv /usr/local/libexec/ktplugservmemc.so -plex "port=31000#opts=f" -dmn /opt/kt/30000.kch
192.168.2.123
mongodb主 端口 10000/11000
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 10000 --dbpath /opt/mongodb/10000 --logpath /opt/mongodb/10000/log --rest --oplogSize 1024 --logappend --master --slave --source 192.168.2.2:10000 --slavedelay 10 --autoresync
mongodb relica set 3 端口 20000/21000
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 20000 --dbpath /opt/mongodb/20000 --logpath /opt/mongodb/20000/log --replSet blub --rest --oplogSize 1024 –logappend
/root/mongodb-linux-x86_64-1.6.5/bin/mongo --port 20000
config = {_id: 'blub', members: [
{_id: 0, host: '192.168.2.2:20000'},
{_id: 1, host: '192.168.2.3:20000'},
{_id: 2, host: '192.168.2.123:20000'},
{_id: 3, host: '192.168.2.124:20000'},
]}
rs.initiate(config)
rs.status()
rs.addArb("192.168.2.124:40000")
rs.addArb("192.168.2.3:40000")
kt node1 端口 30000/31000
kchashmgr create /opt/kt/30000.kch
ktserver -port 30000 -ulog /opt/kt/30000-ulog -sid 2 -mhost 192.168.2.2 -mport 30000 -rts /opt/kt/30000.rts -plsv /usr/local/libexec/ktplugservmemc.so -plex "port=31000#opts=f" -dmn /opt/kt/30000.kch
192.168.2.124
mongodb从 端口 10000/11000
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 10000 --dbpath /opt/mongodb/10000 --logpath /opt/mongodb/10000/log --rest --oplogSize 1024 --logappend --slave --slavedelay 2 --autoresync
/root/mongodb-linux-x86_64-1.6.5/bin/mongo --port 10000
use local
db.sources.insert({"host":"192.168.2.123"});
db.sources.insert({"host":"192.168.2.2"});
mongodb relica set 4
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 20000 --dbpath /opt/mongodb/20000 --logpath /opt/mongodb/20000/log --replSet blub --rest --oplogSize 1024 --logappend
/root/mongodb-linux-x86_64-1.6.5/bin/mongod --fork --port 40000 --dbpath /opt/mongodb/40000 --logpath /opt/mongodb/40000/log --replSet blub --rest --oplogSize 1 --logappend
/root/mongodb-linux-x86_64-1.6.5/bin/mongo --port 20000
config = {_id: 'blub', members: [
{_id: 0, host: '192.168.2.2:20000'},
{_id: 1, host: '192.168.2.3:20000'},
{_id: 2, host: '192.168.2.123:20000'},
{_id: 3, host: '192.168.2.124:20000'},
]}
rs.initiate(config)
rs.status()
rs.addArb("192.168.2.124:40000")
rs.addArb("192.168.2.3:40000")
kt node2 端口 30000/31000 (和192.168.2.4:30000同步)
kchashmgr create /opt/kt/30000.kch
ktserver -port 30000 -ulog /opt/kt/30000-ulog -sid 2 -mhost 192.168.2.3 -mport 30000 -rts /opt/kt/30000.rts -plsv /usr/local/libexec/ktplugservmemc.so -plex "port=31000#opts=f" dmn /opt/kt/30000.kch
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: 开源
0
0
(请您对文章做出评价)
posted @ 2011-01-31 12:39 lovecindywang 阅读(667) 评论(0) 编辑 收藏
发表评论
2021867
请教一下什么是KT?
昵称:
主页:
评论内容:
[使用Ctrl+Enter键快速提交]
0 1948233 Mongodb和KT的双机房灾备配置方案尝试
最新IT新闻:
· Android平板电脑市场份额增至22% iPad降至75%
· 搜索的未来:谁将打赢与 Spam 的战争?
· 关于史蒂夫·乔布斯的最好的几本书是什么?
· 3天内全球将分配完最后469万个IPv4地址
· 李开复对话Linked-in创始人:双向SNS更有前
» 更多新闻...
[前端优化] 使用Combres合并对js、css文件的请求
理解POCO
OS X 上使用.NET开发应用程序
教你30秒打造强类型ASP.NET数据绑定
项目管理的十大挑战
网站导航: 博客园首页 IT新闻 我的园子 闪存 程序员招聘 博问
China-pub 计算机图书网上专卖店!6.5万品种2-8折!
China-Pub 计算机绝版图书按需印刷服务
公告
粉丝 - 31
关注 - 1
我的主页 个人资料
我的闪存 发短消息
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
搜索
常用链接
我参与的团队
随笔分类(34)
随笔档案(36)
- 2011年1月 (4)
- 2010年12月 (4)
- 2010年11月 (1)
- 2010年10月 (2)
- 2010年9月 (2)
- 2010年8月 (1)
- 2010年7月 (2)
- 2010年6月 (1)
- 2010年5月 (4)
- 2010年3月 (2)
- 2010年2月 (1)
- 2010年1月 (7)
- 2009年12月 (5)
友情链接
积分与排名
- 积分 - 69661
- 排名 - 1365
最新评论
请教一下什么是KT? (lexus)
这个图确实很有意思,可以展开的联想很多。 (干田)
这个热点图看起来怎么不是很明显,是否可以通过渐变面的渲染来看,那样就清楚多了 (craystall)
楼主是cnzz的吗 (Keep Walking)
想知道有没有C# driver? (好读书,不求甚解)
有点唬人啊 (Tony Zhou)
满地哈喇子。。。。 (Cool it)
博主有没试用过呢我测试的时候发现数据不正确。。。。 (分享 共赢)
好文,推荐 +2 (潺缘)
好文,推荐 +1 (田志良)
不仅可以运用于面试,也是一个用于自我总结所学技术的参考资料,谢谢! (墨_白)
有点意思。我觉得对于应聘架构师的话,应该必须要求一定的知识全面性,这个表格如果不及格的话就不用考虑了。当然,这点表面的东西是不可能问得很深的。深入的东西我还是倾向于结合面试者自己的真实项目经来来问。对... (Teddy's Knowledge Base)
[quote]月光疾风: [quote]bidaas:不及格,我到你那儿绝对被鄙视[/quote] 没事的,作者说这个比较适合“适合高级软件工程师或架构师的面试”。而且,他主要是提供一种公平而又全面的... (LanceZhang)
内流满面 (星辰大海)
所以我说要附加人品性格方面的考试这种忽悠性人才我也遇见过一次 (lovecindywang)
最反感的一种方式,适合忽悠型人才。 PS:我以前有一个同事就是这种人才,不管你说什么,他都能给你侃的头头是道。这段时间在做聊天软件,前几天和他在QQ上聊起了网络编程,结果这方面的说得比我还专业,有些... (飞 熊)
没发现和普通笔试有什么区别。为什么是面试方式呢? (undefined)
内流满面 (天行健 自强不息)
内流满面 (Jack Fan)
如果再来点数据库优化,代码优化,这套题估计更值钱 (木+头)
大多是概念性题目啊... 特别是后面1列最要命,怎么实现这种技术... 打算给多少工资啊... (木+头)
令人泪奔的表格 (CR苏杭)
good (Tony Zhou)
[quote]bidaas:不及格,我到你那儿绝对被鄙视[/quote] 没事的,作者说这个比较适合“适合高级软件工程师或架构师的面试”。而且,他主要是提供一种公平而又全面的面试方式,里面的知识点可以... (月光疾风)
牛X (代码乱了)
谁能列出比较完善的C#知识点吗? (圈圈点点)
非常不错的考察题型。 (圈圈点点)
不及格,我到你那儿绝对被鄙视 (bidaas)
0分泪奔 (温景良(Jason))
这个要收藏! (Leepy)
备忘! (深蓝医生)
算法呢???? (feng wang)
这种方式很好,值得借鉴,面试不应该太局限于某一个特定的技术,应该给应聘者足够的发挥空间 (zdd)
@海浪轻风你说的这种人基本上都很难驾驭,人事那关都很难过。 (DiggingDeeply)
[quote]菜鸟老了:有补习班么 我报名[/quote] 我也是这么想的 (John Ho)
对验证项目经验是否丰富确实是不错的问题。但不一定招到的都是有很强思维能力和解决方法的人。 (海浪轻风)
期待谁的参考答案 (shiwenlu518)
我顶~~~ (蟑螂·魂)
[url=]无聊的题目,权当一乐[/url] 最近遇到的无聊笔试 (DiggingDeeply)
作者能不能给出你自己的答案,让大家学习一下! (iTech)
阅读排行榜
- 1. 一种集各种优点于一身的技术面试方式(14580)
- 2. Memcache and Mongodb(3382)
- 3. 项目优化经验——垃圾回收导致的性能问题(3042)
- 4. mongodb有关的研究(3024)
- 5. 浅谈.NET下的多线程和并行计算(八)Winform中多线程编程基础上(2595)
- 6. 一个局部变量导致的血案(2211)
- 7. 浅谈.NET下的多线程和并行计算(七)基于多线程的基本组件(2168)
- 8. 浅谈.NET下的多线程和并行计算(十二)CLR via C#第三版阅读笔记(1)(2072)
- 9. 浅谈.NET下的多线程和并行计算(五)线程池基础上(2049)
- 10. 使用windbg排查一个内存溢出的问题(1896)
- 11. 浅谈.NET下的多线程和并行计算(六)线程池基础下(1760)
- 12. 浅谈.NET下的多线程和并行计算(十四)并行计算前言(1752)
- 13. 浅谈.NET下的多线程和并行计算(九)Winform中多线程编程基础下(1726)
- 14. 浅谈.NET下的多线程和并行计算(十一).NET异步编程模型基础下(1720)
- 15. 浅谈.NET下的多线程和并行计算(一)前言(1690)
- 16. 浅谈.NET下的多线程和并行计算(十).NET异步编程模型基础上(1687)
- 17. 浅谈.NET下的多线程和并行计算(二)线程基本知识(1536)
- 18. 神奇的Redis(1522)
- 19. 7/17博客园活动浅谈网站架构中缓存的应用所有资料(1510)
- 20. 对于基于模板的前端框架的补充(1488)
- 21. mongodb分片集群(sharding with replica set)配置(1354)
- 22. 使用代码测试ASP.NET MVC2执行流程(1228)
- 23. 浅谈.NET下的多线程和并行计算系列文章索引(1218)
- 24. 浅谈.NET下的多线程和并行计算(三)线程同步基础上(1217)
- 25. 公司.NET 3.5培训资料分享(1047)
- 26. 浅谈.NET下的多线程和并行计算(四)线程同步基础下(986)
- 27. 有关热点图(959)
- 28. Mongodb和KT的双机房灾备配置方案尝试(662)
- 29. 站点静态资源优化合并解决方案(501)
- 30. linq2sql代码大全(495)
- 31. 浅谈.NET下的多线程和并行计算(十三)CLR via C#第三版阅读笔记(2)(479)
- 32. 微软应用架构指南(第2版)出版(366)
- 33. UI分离引擎的设想(219)
- 34. 创建允许远程更新的Windows服务(218)
- 35. 静态资源合并解决方案(改进)(216)
- 36. performance benchmark : memcached vs Kyoto Tycoon(176)
评论排行榜
- 1. 一种集各种优点于一身的技术面试方式(40)
- 2. 项目优化经验——垃圾回收导致的性能问题(37)
- 3. 使用windbg排查一个内存溢出的问题(20)
- 4. Memcache and Mongodb(15)
- 5. 浅谈.NET下的多线程和并行计算(一)前言(14)
- 6. 一个局部变量导致的血案(12)
- 7. 浅谈.NET下的多线程和并行计算(三)线程同步基础上(8)
- 8. 浅谈.NET下的多线程和并行计算(八)Winform中多线程编程基础上(8)
- 9. 浅谈.NET下的多线程和并行计算(二)线程基本知识(8)
- 10. 公司.NET 3.5培训资料分享(7)
- 11. 7/17博客园活动浅谈网站架构中缓存的应用所有资料(6)
- 12. 浅谈.NET下的多线程和并行计算(四)线程同步基础下(6)
- 13. 浅谈.NET下的多线程和并行计算(五)线程池基础上(5)
- 14. 浅谈.NET下的多线程和并行计算(十一).NET异步编程模型基础下(5)
- 15. 神奇的Redis(5)
- 16. 对于基于模板的前端框架的补充(5)
- 17. 使用代码测试ASP.NET MVC2执行流程(4)
- 18. 微软应用架构指南(第2版)出版(4)
- 19. 浅谈.NET下的多线程和并行计算(十二)CLR via C#第三版阅读笔记(1)(4)
- 20. 浅谈.NET下的多线程和并行计算(十).NET异步编程模型基础上(3)
- 21. 有关热点图(3)
- 22. 浅谈.NET下的多线程和并行计算(七)基于多线程的基本组件(3)
- 23. mongodb有关的研究(3)
- 24. 浅谈.NET下的多线程和并行计算(九)Winform中多线程编程基础下(2)
- 25. 站点静态资源优化合并解决方案(2)
- 26. 浅谈.NET下的多线程和并行计算系列文章索引(2)
- 27. 浅谈.NET下的多线程和并行计算(十三)CLR via C#第三版阅读笔记(2)(1)
- 28. 浅谈.NET下的多线程和并行计算(十四)并行计算前言(1)
- 29. 浅谈.NET下的多线程和并行计算(六)线程池基础下(1)
- 30. UI分离引擎的设想(1)
- 31. 创建允许远程更新的Windows服务(1)
- 32. linq2sql代码大全(1)
- 33. mongodb分片集群(sharding with replica set)配置(1)
- 34. Mongodb和KT的双机房灾备配置方案尝试(0)
- 35. performance benchmark : memcached vs Kyoto Tycoon(0)
- 36. 静态资源合并解决方案(改进)(0)
60天内阅读排行
- 1. 一种集各种优点于一身的技术面试方式(14581)
- 2. 神奇的Redis(1522)
- 3. mongodb分片集群(sharding with replica set)配置(1354)
- 4. 有关热点图(959)
- 5. Mongodb和KT的双机房灾备配置方案尝试(667)
- 6. 微软应用架构指南(第2版)出版(366)
- 7. performance benchmark : memcached vs Kyoto Tycoon(176)
Copyright ©2011 lovecindywang