热门标签 | 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()



推荐阅读
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 车载T-BOX智能网联终端的设计与实现
    本文介绍了一款基于瑞萨RH850微控制器、TICC2640R2F蓝牙微控制器和高通MDM9628处理器的T-BOX车载终端的设计。该终端通过集成CAN总线、GPS定位、数据加密、蓝牙通信和LTE无线数据传输技术,实现了车辆信息的高效采集与云端通信,支持远程车辆控制和诊断等功能。 ... [详细]
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社区 版权所有