mongo riak 集群简建

借助于 docker 提供便利的服务环境,本来建个集群需要多个 host 的问题得到很好的解决(或者同一机子上运行时也指定不同端口也可以搞定集群),当然传统的在 virtual box 上创建多个 vm 也可以,但这样不仅繁琐又耗费资源。
在 docker 所运行的每一个 container 中都有自己的一个 ip,这些 container 的连接同一个 nat 网络下,这样 container 与 container 之间就可以像两台独立的 host 进行网络数据的传输。

mongo 集群 #

mongod --fork --logpath xxxx.log --replSet "xxx-Name"

注意,各个 Host 上mongod运行时--replSet指定的名字要相同

rs.initiate()
rs.config()

这时 ip-master 上就成为了 primary,此时只有一个 replica set, 也就是自己,接着在 primary 中加入下个 replica set 作为 second

rs.add("ip-second:port")
rs.config()

可能要等几秒到几十秒,此时 ip-second 上的 mongod 就成为这个集群中的 second 节点,second 结点可有多个,重复这个步骤加入多个 second 结点。
有了 primary 和多个 second,可加入 arbiter 作为在当前 primary 结点不可用时在现有的 second 结点中选举 primary 结点。

cfg=rs.config()
cfg.members[i].priority=integer
rs.reconfig(cgf)
或者
rs.reconfig(cgf,{force:true})

再增加 arbiter 结点

rs.addArb("ip-arbiter:port")

配置完成,可以直接关掉 primary 或者在 primary 中执行rs.stepdown(),这样其它 second 就可以成为 primary

riak 集群 #

riak-admin cluster join ip-basic-node
riak-admin plang
riak-admin commit

设置完后,可通过往任意一个 Node 写数据,在其它 Node 中 get 数据
riak 部分写得有点少,以后有空再补充

2016-05-15