热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Mongodb副本集集群搭建

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集集群搭建相关的知识,希望对你有一定的参考价值。 一、环境准备1.1.主机信息(机器配置要求见硬件及开发标准规范文档V1.0)序号主

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集集群搭建相关的知识,希望对你有一定的参考价值。



一、环境准备


1.1.主机信息(机器配置要求见硬件及开发标准规范文档V1.0)



































序号


主机名


IP


1


DB_01


10.202.105.52


2


DB_02


10.202.105.53


3


DB_03


10.202.105.54


4


DB_04


10.202.105.181


 


 


 



 



















服务器52(DB_01)


服务器53(DB_02)


服务器54(DB_03)


服务器55DB_04


primary


secondry


secondry


hidden(阿里云一般都是主  备  Hidden三节点)  这里暂时忽略异常情况选举   其实和zk选举一样的道理


 

 

 

 


端口分配:(端口可以根据实际情况进行更改)

mongos:20000

 


1.2.软件版本















组件


版本


备注


MongoDB


3.4.X


 



1.3.软件下载


https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.7.tgz


二、软件部署


2.1软件安装

useradd  mongodb

passwd  mongodb

chown -R  mongodb:mongodb /app/mongodb/

chown -R  mongodb:mongodb /data/mongodb/

 

并用mongo用户在一台机器上生成集群间验证文件并同步文件到其余两台机器相应位置赋予同样权限

openssl rand -base64 100 > /data/keyFile/keyFilers0.key

chmod 600 /data/keyFile/keyFilers0.key

 








1、新建目录(四台机器均操作)

mkdir -p /data/mongodb/conf

mkdir -p /data/mongodb/data

mkdir -p /data/mongodb/log

 

2、安装Mongodb(三台机器均操作,目录为/app/mongo/…)

tar –zxvf mongodb-linux-x86_64-rhel70-3.4.7 tar.gz

 

然后配置环境变量

 

vim /etc/profile

# 内容

export MONGODB_HOME=…

export PATH=$MONGODB_HOME/bin:$PATH

# 使立即生效

source /etc/profile

 

 



2.2配置文件

1、打开mongod.conf,修改以下配置项:(四台机器均操作)








vi /data/mongodb/conf/mongod.conf

 

 

systemLog:

  destination: file

  logAppend: true

  logRotate: reopen

  path: /data/mongodb/log/mongod.log

# Where and howto store data.

##########operationProfilingOptions

storage:

  dbPath: /data/mongodb/data

  journal:

    enabled: true

  directoryPerDB: true

  engine: wiredTiger

#########storage.wiredTigerOptions

  wiredTiger:

    engineConfig:

       cacheSizeGB: 2

       directoryForIndexes: true

    collectionConfig:

       blockCompressor: zlib

    indexConfig:

       prefixCompression: true

operationProfiling:

   slowOpThresholdMs: 100

   mode: "all"

processManagement:

  fork: true

  pidFilePath: /data/mongodb/log/mongod.pid

net:

  port: 20000

  bindIp: 0.0.0.0

  maxIncomingConnections: 20000

security:

    #authorization: enabled

    #clusterAuthMode: keyFile

    #keyFile: /data/keyFile/keyFilers0.key

    #keyFile: /srv/mongodb/keyfile

    JavascriptEnabled: true

setParameter:

    enableLocalhostAuthBypass: false

    authenticationMechanisms: SCRAM-SHA-1

replication:

##oplog大小

  oplogSizeMB: 10000

  replSetName: repl

sharding:

  clusterRole: configsvr

 #configsvr or shardsvr


 


2.3初始化服务及副本集








1.启动四台服务器的mongod server并配置副本集(四台均启动)

mongod -f /data/mongodb/conf/mongod.conf

 

登录任意一台配置服务器,初始化配置副本集

#连接

mongo --port 20000

 

use admin

#config变量

cfg={_id:"repl",members:[

{_id:0,host:"10.202.105.52:20000",priority:2},

{_id:1,host:"10.202.105.53:20000",priority:1},

{_id:2,host:"10.202.105.54:20000",priority:1},

{_id:3,host:"10.202.105.181:20000",priority:0,hidden:true}]}

#初始化副本集

rs.initiate(cfg)

其中,"_id" : "cfg"应与配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 为四个节点的 ip 和 port

 

 


 


2.4增加安全机制








http://blog.csdn.net/u011191463/article/details/68485529   //mongo用户类型引导

 

http://www.jianshu.com/p/f585f71acbf2    //用户添加步骤

 

1)在Router下,切换到admin库,用db.createUser(用户名,密码)添加好认证帐号,再切换到目标数据库做类似的帐号添加操作。步骤如下

创建用户

use admin

db.createUser( 

    user: "admin", 

    pwd: "123456", 

    roles: 

    [ 

      {role: "userAdminAnyDatabase",db: "admin"},

      { role: "readAnyDatabase", db:"admin" },

      { role: "dbOwner", db:"admin" },

      { role: "userAdmin", db:"admin" },

      { role: "root", db: "admin"},

      { role: "clusterMonitor", db:"admin" },

      { role: "dbAdmin", db:"admin" },

    ] 

  } 

)

用户名为admin,密码为123456

验证用户db.auth("admin","123456");    出现1则为验证成功

再切换到zhaobo此数据库,添加用户

db.createUser( 

    user: "zhaobo", 

    pwd: "123456", 

    roles: 

    [ 

      { role: "dbOwner", db:"zhaobo" },

      { role: "userAdmin", db:"zhaobo" },

      { role: "dbAdmin", db:"zhaobo" },

    ] 

  } 

)

验证用户db.auth("zhaobo","123456");    出现1则为验证成功

2)生成keyfile,可以使用如下命令:(在开始安装之前已经生成就不需要此步骤了)

openssl rand -base64 100 > /data/keyFile/keyFilers0.key

将keyfile文件复制到各服务器备用,注意:需要给keyfile设置好权限,权限必须为600。

chmod 600 /data/keyFile/keyFilers0.key

3)杀掉所有的mongod进程。去掉配置文件的sectury下面的注释,本文以配置文件方式设置启动参数,启动各服务器

 

5)完成以后就可以使用上面配置的帐号密码访问Router了。在客户端Robo 3T测试成功

本地登陆数据库之后验证db.auth("admin","123456");  即可正常使用

mongodb的启动顺序是,

mongos -f /data/mongodb/conf/mongos.conf

 

关闭mongos

use admin

db.shutdownServer()



推荐阅读
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • MongoDB集群配置:副本集与分片详解
    本文详细介绍了如何在MongoDB中配置副本集(Replica Sets)和分片(Sharding),并提供了具体的步骤和命令,帮助读者理解并实现高可用性和水平扩展的MongoDB集群。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
author-avatar
用户7krcbz6eb6
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有