在CentOS6.6上以replSet方式部署MongoDB集群

部署方式
在3台centos6.6系统上以Replica Set方式部署mongodb3.0.2集群。

官方参考资料:

http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/

集群的IP地址分配
# node01: 192.168.35.173(PRIMARY node)
# node02: 192.168.35.96(SECONDARY node)
# node03: 192.168.35.174(SECONDARY node)

# 添加mongodb的yum源(所有节点)

echo "[mongodb-org-3.0]" > /etc/yum.repos.d/mongodb-org-3.0.repo
echo "name=MongoDB Repository" >> /etc/yum.repos.d/mongodb-org-3.0.repo
echo "baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/" >> /etc/yum.repos.d/mongodb-org-3.0.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/mongodb-org-3.0.repo
echo "enabled=1" >> /etc/yum.repos.d/mongodb-org-3.0.repo

# yum安装mongodb(所有节点)

yum install -y mongodb-org-3.0.2 mongodb-org-server-3.0.2 mongodb-org-shell-3.0.2 mongodb-org-mongos-3.0.2 mongodb-org-tools-3.0.2
mkdir -p /data/db && chown -R mongod.mongod /data/

# 修改主机名和hosts文件(所有节点)

# vim /etc/sysconfig/network
# sysctl kernel.hostname=node0001.nemongo.com
# sysctl kernel.hostname=node0002.nemongo.com
# sysctl kernel.hostname=node0003.nemongo.com

echo "192.168.35.173 node0001.nemongo.com" >> /etc/hosts
echo "192.168.35.96 node0002.nemongo.com" >> /etc/hosts
echo "192.168.35.174 node0003.nemongo.com" >> /etc/hosts

# 修改mongodb的配置文件(所有节点)

sed -i ‘s/bind_ip=127.0.0.1/#bind_ip=127.0.0.1/g‘ /etc/mongod.conf
sed -i ‘s/#replSet=setname/replSet=ne_aws_01/g‘ /etc/mongod.conf

# 启动mongodb(所有节点)

service mongod start

# 在mongodb主节点上配置集群(PRIMARY 节点)

mongo
> rs.initiate() # 只有node0001上面需要执行rs.initiate()
> rs.conf()
> rs.add("node0002.nemongo.com") # node0002上面不要执行rs.initiate(),否则无法添加
> rs.add("node0003.nemongo.com") # node0003上面不要执行rs.initiate(),否则无法添加
> rs.status() # 每个节点上都可以查看集群状态


> rs.initiate()

{

"info2" : "no configuration explicitly specified -- making one",

"me" : "node0001.nemongo.com:27017",

"ok" : 0,

"errmsg" : "No host described in new configuration 1 for replica set ne_aws_01 maps to this node",

"code" : 93

}

ne_aws_01:PRIMARY> rs.add("node0002.nemongo.com:27017")

{ "ok" : 1 }

ne_aws_01:PRIMARY> rs.add("node0003.nemongo.com")

{ "ok" : 1 }

ne_aws_01:PRIMARY> rs.status()

{

"set" : "ne_aws_01",

"date" : ISODate("2015-05-08T04:49:30.768Z"),

"myState" : 1,

"members" : [

{

"_id" : 0,

"name" : "node0001.nemongo.com:27017",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 1471,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"electionTime" : Timestamp(1431059099, 1),

"electionDate" : ISODate("2015-05-08T04:24:59Z"),

"configVersion" : 3,

"self" : true

},

{

"_id" : 1,

"name" : "node0002.nemongo.com:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 192,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"lastHeartbeat" : ISODate("2015-05-08T04:49:29.756Z"),

"lastHeartbeatRecv" : ISODate("2015-05-08T04:49:30.263Z"),

"pingMs" : 1,

"configVersion" : 3

},

{

"_id" : 2,

"name" : "node0003.nemongo.com:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 187,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"lastHeartbeat" : ISODate("2015-05-08T04:49:29.756Z"),

"lastHeartbeatRecv" : ISODate("2015-05-08T04:49:29.795Z"),

"pingMs" : 1,

"lastHeartbeatMessage" : "could not find member to sync from",

"configVersion" : 3

}

],

"ok" : 1

}

将mongodb主节点停掉:service mongod stop,这时候mongodb集群将会重新选举产生新的primary节点,在node0002上查看集群状态:


ne_aws_01:PRIMARY> rs.status()

{

"set" : "ne_aws_01",

"date" : ISODate("2015-05-08T04:51:13.359Z"),

"myState" : 1,

"members" : [

{

"_id" : 0,

"name" : "node0001.nemongo.com:27017",

"health" : 0,

"state" : 8,

"stateStr" : "(not reachable/healthy)",

"uptime" : 0,

"optime" : Timestamp(0, 0),

"optimeDate" : ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat" : ISODate("2015-05-08T04:51:11.361Z"),

"lastHeartbeatRecv" : ISODate("2015-05-08T04:51:11.951Z"),

"pingMs" : 1,

"lastHeartbeatMessage" : "Failed attempt to connect to node0001.nemongo.com:27017; couldn‘t connect to server node0001.nemongo.com:27017 (192.168.35.173), connection attempt failed",

"configVersion" : -1

},

{

"_id" : 1,

"name" : "node0002.nemongo.com:27017",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 364,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"electionTime" : Timestamp(1431060617, 1),

"electionDate" : ISODate("2015-05-08T04:50:17Z"),

"configVersion" : 3,

"self" : true

},

{

"_id" : 2,

"name" : "node0003.nemongo.com:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 284,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"lastHeartbeat" : ISODate("2015-05-08T04:51:13.159Z"),

"lastHeartbeatRecv" : ISODate("2015-05-08T04:51:12.703Z"),

"pingMs" : 1,

"configVersion" : 3

}

],

"ok" : 1

}

将node0001重新启动:service mongod start,再次查看mongodb集群状态,就会发现node0001变成了SECONDARY节点:


ne_aws_01:SECONDARY> rs.status()

{

"set" : "ne_aws_01",

"date" : ISODate("2015-05-08T04:53:54.550Z"),

"myState" : 2,

"members" : [

{

"_id" : 0,

"name" : "node0001.nemongo.com:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 168,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"configVersion" : 3,

"self" : true

},

{

"_id" : 1,

"name" : "node0002.nemongo.com:27017",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 167,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"lastHeartbeat" : ISODate("2015-05-08T04:53:53.474Z"),

"lastHeartbeatRecv" : ISODate("2015-05-08T04:53:52.881Z"),

"pingMs" : 1,

"electionTime" : Timestamp(1431060617, 1),

"electionDate" : ISODate("2015-05-08T04:50:17Z"),

"configVersion" : 3

},

{

"_id" : 2,

"name" : "node0003.nemongo.com:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 167,

"optime" : Timestamp(1431060383, 1),

"optimeDate" : ISODate("2015-05-08T04:46:23Z"),

"lastHeartbeat" : ISODate("2015-05-08T04:53:53.474Z"),

"lastHeartbeatRecv" : ISODate("2015-05-08T04:53:54.382Z"),

"pingMs" : 1,

"configVersion" : 3

}

],

"ok" : 1

}

时间: 2024-10-10 20:38:52

在CentOS6.6上以replSet方式部署MongoDB集群的相关文章

基于已有集群动态发现方式部署 Etcd 集群

etcd提供了多种部署集群的方式,在「通过静态发现方式部署etcd集群」 一文中我们介绍了如何通过静态发现方式部署集群. 不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知道这几个节点的ip,从而无法使用--initial-cluster参数. 这个时候,你就需要使用discovery的方式来搭建etcd集群.discovery方式有两种:etcd discovery和DNS discovery. 这里我们先介绍下etcd discovery方式.这种启动方式依赖另外

基于 DNS 动态发现方式部署 Etcd 集群

使用discovery的方式来搭建etcd集群方式有两种:etcd discovery和DNS discovery.在 「基于已有集群动态发现方式部署etcd集群」一文中讲解了etcd discovery这种方式,今天我们就来讲讲DNS discovery这种方式的实现. etcd在基于DNS做服务发现时,实际上是利用DNS的SRV记录不断轮训查询实现的.DNS SRV是DNS数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单信息. 本文采用dnsmasq作为dns服

在Docker中安装和部署MongoDB集群

在Docker中安装mongodb 采用的mongodb镜像:https://registry.hub.docker.com/u/tutum/mongodb/ 以该镜像启动一个容器(注意此时mongodb是standalone模式): docker run -d --name=mongodb -p 27017:27017 -p 28017:28017 tutum/mongodb:3.0 docker logs mongodb 输出信息: =============================

利用Docker部署mongodb集群--分片与副本集

环境 Docker version 1.6.2  mongodb 3.0.4 第一步  编写Dockerfile并生成镜像 主意包含两个Dockerfile镜像,一个mongod的,一个mongos(在集群中负责路由) 编写Mongod的Dockerfile: FROM ubuntu:14.04 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 ENV MONGO_MAJOR 3.0 RUN ech

Replica Set副本集方式的mongodb集群搭建

1.环境: 单台服务器上开启四个mongodb实例来实现mongodb的Replica Set副本集方式的集群搭建 2.配置文件: master主实例配置文件: [[email protected] ~]# cat /usr/local/mongodb/mongod.cnf logpath=/data/mongodb-master/logs/mongodb.log logappend = true #fork and run in background fork = true port = 27

一键部署MongoDB集群Windows版

由于周末在家手头没有虚拟机,所以在windows下单机完毕部署要求,并编写bat执行脚本. 1.创建配置文件及相关文件夹 总的启动脚本例如以下(startmc.bat): rem m1 start mongod.exe --config=../config/m1/s1_1 start mongod.exe --config=../config/m1/s1_2 start mongod.exe --config=../config/m1/c1_1 start mongod.exe --config

手把手教你用Docker部署一个MongoDB集群

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引.本文介绍了如何使用Docker搭建MongoDB集群. 本文我会向大家介绍如何使用Docker部署一个MongoDB集群,具体如下: 2.6.5版本的MongoDB 有3个节点的副本集(Replica set) 身份验证 持久化数据到本地文件系统 首先要准备三个运行的Docker服务器,这意味着你

Kubernetes/3.使用Kubeadm部署k8s集群

使用Kubeadm部署k8s集群 kubeadm是一个提供了"kubeadm init"和"kubeadm join"最佳实践命令,且用于快速构建一个kubernetes集群的工具,你可以使用此工具快速构建一个kubernetes学习环境.通过本章节的学习,你将能够使用kubeadm工具,成功构建出一个基础的kubernetes集群环境. 环境准备 Hosts文件准备 Docker环境配置 其他准备工作 使用Kubeadm部署k8s集群 参考文档 备注 环境准备 i

MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)

MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)  OneAPM蓝海讯通7月3日 发布 推荐 4 推荐 收藏 14 收藏,1.1k 浏览 MariaDB 作为 Mysql 的一个分支,在开源项目中已经广泛使用,例如大热的 openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的. MariaDB Galera Cluster 介绍 MariaDB 集群是 MariaDB 同步多主机集群.它仅支持 XtraDB/ Inn