设为首页 收藏本站
查看: 1644|回复: 0

[经验分享] Mongodb和KT的双机房灾备配置方案尝试

[复制链接]

尚未签到

发表于 2015-7-6 11:13:55 | 显示全部楼层 |阅读模式
  假设有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:10000"});
  db.sources.insert({"host":"192.168.2.123:10000"});
  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:10000"});
  db.sources.insert({"host":"192.168.2.2:10000"});
  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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83777-1-1.html 上篇帖子: 单机使用tungsten 同步mysql数据到mongodb 下篇帖子: MongoDB管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表