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

MongoDB数据库高可用架构集群权限控制

每个分片3服务器,前期采用三台,日后服务器的增加考虑灾备,服务增加的基数最少为两台。类型服务器用途系统说明存储/数据Server1Shard1/Shard2/Shard3Linux64位Shard1:10001;Shard2:10002,Shard3:10003;Server2Shard1/Shard2/Shard3L

 

每个分片3服务器,前期采用三台,日后服务器的增加考虑灾备,服务增加的基数最少为两台。

 

类型

服务器

用途

系统

说明

存储/数据

Server1

Shard1/Shard2/Shard3

Linux 64位

Shard1:10001;Shard2:10002,Shard3:10003;

Server2

Shard1/Shard2/Shard3

Linux 64位

Shard1:10001;Shard2:10002,Shard3:10003;

Server3

Shard1/Shard2/Shard3

Linux 64位

Shard1:10001;Shard2:10002,Shard3:10003;

配置

Server1

Config1

Linux 64位

Config1:20000;

Server2

Config2

Linux 64位

Config2:20000;

Serve3

Config3

Linux 64位

Config3:20000;

路由

Server1

Mongos1

Linux 64位

Mongos:30000

Server2

Mongos2

Linux 64位

Mongos:30000

Server3

Mongos3

Linux 64位

Mongos:30000

(表:一)

创建配置、日志、分片、key文件存储目录及验证文件

[root@Mongo-server-B/]# mkdir /data/config/ -p

[root@Mongo-server-B/]# mkdir /data/log/ -p

[root@Mongo-server-B/]# mkdir /data/shard1/ -p

[root@Mongo-server-B/]# mkdir /data/shard2/ -p

[root@Mongo-server-B/]# mkdir /data/shard3/ -p

[root@Mongo-server-B/]# mkdir /data/key/ -p

创建验证与无验证目录

[root@Mongo-server-B/]# mkdir /Apps/mongo/bin/nosecurity/ -p

[root@Mongo-server-B/]# mkdir /Apps/mongo/bin/security/ -p

创建配置文件

1、 创建验证文件security于/data /key/目录,关赋予可读权限,命令如下:

[root@Mongo-server-B/]# cd /data/key/

[root@Mongo-server-Bkey]# echo 'pomohoshard1key'> security

[root@Mongo-server-Bkey]# chmod 600 security

2、 创建shard1.conf、shard2.conf、shard3.conf、configsvr.conf、mongos.conf于/Apps/mongo/bin/nosecurity目录与/Apps/mongo/bin/security目录,内容分别如下:

权限控制

MongoDB默认为验证模式。如需对数据库进行权限控制,需先采用无验证模式登录,进入admin库创建管理员用户后,再采用验证模式登录。通过前面创建的管理员帐号进行数据库与用户的创建。MongoDB集群的权限与单台的权限控制的不同之处在于,单台是通过-auth属性,集群是通过keyFile来进行服务器间的验证。以下介绍配置全过程。

前面的所有步骤,都是在nosecurity模式下进行。如果没有采用非验证模式的需要将所有进程(分片、配置、mongos)停止,将切换到无验证模式。

步骤一:先进行登录,并切换进admin库创建管理员帐号

[root@Mongo-server-A bin]#./mongo 192.168.2.88:30000

mongos> use admin

mongos>db.addUser('admin','123456')

{

        "singleShard" :"192.168.2.88:20000,192.168.2.89:20000,192.168.2.90:20000",

        "n" : 0,

        "connectionId" : 211,

        "err" : null,

        "ok" : 1

}

{

        "_id" :ObjectId("4f6c78ddad912a3ac6833ece"),

        "user" : "admin",

        "readOnly" : false,

        "pwd" :"95ec4261124ba5951720b199908d892b"

}

验证用户名与密码

mongos> db.auth('admin','123456')

1

mongos>exit

步骤二:退出后,将Server1\Server2\Server3服务器上MongoDB的所有进程(分片、配置、mongos)停止,将切换到验证模式。具体命令如下:

[root@Mongo-server-A bin]#killall mongod mongos

[root@Mongo-server-A bin]#netstat -lnpt

[root@Mongo-server-A bin]# ./mongod-f ./security/shard1.conf

[root@Mongo-server-A bin]# ./mongod-f ./security/shard2.conf

[root@Mongo-server-A bin]# ./mongod-f ./security/shard3.conf

[root@Mongo-server-A bin]#netstat ?lnpt

[root@Mongo-server-A bin]#./mongod -f ./security/configsvr.conf

[root@Mongo-server-A bin]# ./mongos-f ./security/mongos.conf

启动后,如对库进行查看,则会报以下异常:

[root@Mongo-server-A bin]#./mongo 192.168.2.90:30000/admin

MongoDB shell version: 2.0.3

connecting to:192.168.2.90:30000/admin

> show dbs

Fri Mar 23 22:28:28 uncaughtexception: listDatabases failed:{ "ok" : 0, "errmsg" :"unauthorized" }

以下是正常登录后显示的信息:

[root@Mongo-server-A bin]#./mongo 192.168.2.90:30000/admin

MongoDB shell version: 2.0.3

connecting to:192.168.2.90:30000/admin

>db.auth('admin','123456')

1

mongos>

步骤三:以下是数据库及数据库用户创建的过程:

mongos> use hello

switched to db hello

mongos>db.addUser('sa','sa')

{

        "singleShard" :"shard2/192.168.2.88:10002,192.168.2.89:10002,192.168.2.90:10002",

        "n" : 0,

        "lastOp" :NumberLong("5723101431532093441"),

        "connectionId" : 38,

        "err" : null,

        "ok" : 1

}

{

        "user" : "sa",

        "readOnly" : false,

        "pwd" :"75692b1d11c072c6c79332e248c4f699",

        "_id" :ObjectId("4f6c8a6e9f67b049a20a00de")

}

mongos> exit

bye

[root@Mongo-server-A bin]#./mongo 192.168.2.90:30000/hello -u sa -p

MongoDB shell version: 2.0.3

Enter password:

connecting to:192.168.2.90:30000/hello

> show collections

system.indexes

system.users

> db.system.users.find()

{ "_id" :ObjectId("4f6c8a6e9f67b049a20a00de"), "user" :"sa", "readOnly" : false, "pwd" :"75692b1d11c072c6c79332e248c4f699" }


推荐阅读
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
  • 本文将介绍如何利用Python爬虫技术抓取国内主流在线学习平台的数据,并以51CTO学院为例,进行详细的技术解析和实践操作。 ... [详细]
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
author-avatar
mobiledu2502898013
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有