热门标签 | 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" }


推荐阅读
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文介绍了如何使用Node.js通过两种不同的方法连接MongoDB数据库,包括使用MongoClient对象和连接字符串的方法。每种方法都有其特点和适用场景,适合不同需求的开发者。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 华为与红帽联手,加速开源电信软件革新
    华为与红帽携手合作,旨在加速开源电信软件的发展,以满足大型电信运营商对灵活网络解决方案的需求。 ... [详细]
  • 本文详细探讨了Linux系统中的文件权限设置,包括常见的755、700等权限模式,以及这些权限在实际应用中的具体含义和作用。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
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社区 版权所有