文档章节

mongodb(一)mongodb 副本集配置

开心的哈士奇
 开心的哈士奇
发布于 2018/10/17 22:01
字数 1131
阅读 179
收藏 2

环境

    系统: centos7
    软件: mongodb-linux-x86_64-rhel70-4.0.2.tgz 

下载解压

    tar -zxvf mongodb-linux-x86_64-rhel70-4.0.2.tgz  -C /usr/local/mongodb
    cd /usr/local/mongodb

基本配置:

  • 假定已经解压安装完成,现在所处的目录是 /usr/local
  • mongodb 目录:/usr/local/

配置步骤如下:

1)新建副本集文件夹:
    mkdir mongodb-replset

2)复制解压好的mongodb文件到mongodb-replset下:
    cp mongodb -r mongodb-replset/mongodb-1
    cp mongodb -r mongodb-replset/mongodb-2
    cp mongodb -r mongodb-replset/mongodb-3

3)创建data logs conf 目录(用于存数据、日志、配置文件)
    cd mongodb-replset/mongodb-1  
    mkdir data logs conf 
    注:2、3自行创建

4)修改配置文件 conf/mongo.conf
    vim mongodb-1/conf/mongodb.conf 
    配置文件如下:
        port=27017
        #数据文件存放目录
        dbpath=/usr/local/mongodb-replset/mongodb-1/data/
        #日志文件存放目录
        logpath=/usr/local/mongodb-replset/mongodb-1/logs/mongodb.log
        pidfilepath=/usr/local/mongodb-replset/mongodb-1/mongo.pid
        #以守护程序的方式启用,即在后台运行
        fork=true
        #使用追加的方式写日志
        logappend=true
        #最大同时连接数
        maxConns=500
        #开放ip 允许外网访问
        bind_ip=0.0.0.0
        # 设置开启权限认证
        noauth=true
        # 副本名称(配置副本集,这个参数是必须的)
        replSet=myreplset
        oplogSize=2048

    注:2、3自行修改(端口依次修改为:27017、27018、27019,数据、日志、pid自行更换)

5)启动
    ./mongodb-1/bin/mongod --config mongodb-1/conf/mongodb.conf
    ./mongodb-2/bin/mongod --config mongodb-2/conf/mongodb.conf
    ./mongodb-3/bin/mongod --config mongodb-3/conf/mongodb.conf

6) 进入mongo 客户端(在这里我们进入 1 的)
    ./mongodb-1/bin/mongo
       config配置:
            config={
                "_id" : "myreplset",
                "members" : [
                    {
                        "_id" : 0,
                        "host" : "192.168.22.11:27017"
                    },
                    {
                        "_id" : 1,
                        "host" : "192.168.22.11:27018"
                    },
                    {
                        "_id" : 2,
                        "host" : "192.168.22.11:27019"
                    }
                ]
            }
       初始化:
            rs.initiate(config);
      初始化成功显示如下:
          {
                "info" : "Config now saved locally.  Should come online in about a minute.",
                "ok" : 1
          }
        查看状态:
            rs.status();这个来查看副本集各节点的状态;


    注:到此,基本的一主二副的 副本集就搭建好了

mongodb 副本集增加密码认证

说明:默认情况下,MongoDB 不会进行身份验证,也没有账号,只要能连接上服务就可以对数据库进行各种操作,出于安全角度考虑,我们应当为其添加认证访问。本文将指导最基本的为 mongodb 副本集增加密码认证。

创建 KeyFile

副本集设置身份验证与单机不同,需要增加一个 keyFile 以便副本集成员相互认证。

这个文件需要满足下面几点要求:

  • 文本长度需要在 6 和 1024 之间
  • 认证时候不考虑文件中空白字符
  • 连接到副本集的成员和 mongos 进程的 keyfile 文件内容必须一样
  • 必须是base64编码,但是不能有等号
  • 文件权限必须是x00,也就是说,不能分配任何权限给group成员和other成员

我们可以在 Linux 上直接使用 openssl 创建一个这样的文件,然后上传至其他副本集成员服务器:

openssl rand -base64 512 > mongodb.key
chmod 400 mongodb.key

变更配置文件(以1为例)

auth=true
keyFile = keyFile=/usr/local/mongodb-replset/mongodb-1/mongodb.key
// keyFile 可以使用绝对路径也可以使用相对路径

创建用户

进入客户端(注意一定要是主服务器,只有主服务器有权限 执行更新操作)

./mongodb-1/bin/mongo

创建一个全局管理员,用于管理用户:

use admin
db.createUser({ user: "root", pwd: "husky", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

创建一个数据库拥有者用户,方便创建索引

use test
db.createUser({ user: "admin", pwd: "husky", roles: [{ role: "dbOwner", db: "test" }] })

创建一个读写用户,方便通过java等操作数据库

use test
db.createUser({ user: "test", pwd: "husky", roles: [{ role: "readWrite", db: "test" }] }

测试密码认证

./mongodb-1/bin/mongo
use test
db.auth("test","husky");
1

java 连接配置

spring XML 配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/data/mongo     
        http://www.springframework.org/schema/data/mongo/spring-mongo.xsd 
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- credentials="用户名:密码@用户归属数据库" -->
    <mongo:mongo-client replica-set="172.17.0.3:27018,172.17.0.4:27018, 172.17.0.5:27018" credentials="mytest:mytest@mytest"  id="mongo">
        <mongo:client-options 
            connections-per-host="20"
            threads-allowed-to-block-for-connection-multiplier="10" 
            connect-timeout="120000"
            max-wait-time="120000"
            socket-keep-alive="true"
            socket-timeout="150000"
             /> 
    </mongo:mongo-client>

    <mongo:db-factory dbname="数据库名" mongo-ref="mongo" />

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    </bean>
</beans>

springboot配置

spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database

参见

生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)<br/> 为 mongodb 副本集增加密码认证

© 著作权归作者所有

开心的哈士奇
粉丝 14
博文 46
码字总数 86764
作品 0
海淀
程序员
私信 提问
mongodb安装、连接,mongodb用户管理、创建集合、数据管理、备份恢复,副本集介绍、搭建、测试,分片介绍、搭建、测试,php的mongodb扩展、mongo扩展

21.26 mongodb介绍 21.27 mongodb安装 21.28 连接mongodb 21.29 mongodb用户管理 21.30 mongodb创建集合、数据管理 21.31 php的mongodb扩展 21.32 php的mongo扩展 21.33 mongodb副本集介绍 ...

tobej
07/16
72
0
Install MongoDB 3.4 with Replica Set on CentOS7.x

Install MongoDB 3.4 with Replica Set on CentOS7.x by Dennis 2017/09/25 <> CentOS7.x 安装 MongoDB 3.4.x, 三台机器 (至少需要 3 台机器)做 Replica Set Install MongoDB 在每一台机器......

丹尼斯
2017/10/25
48
0
mongodb 简单部署方案及实例

第一节 准备工作 一 安装mongodb 我这里选用rehl 5.6作为其运行载体。 1. 下载mongodb的linux版本(注意32位和64位的区别),下载地址:http://www.mongodb.org/downloads # wget http://fast...

猪猪
2012/04/12
20.8K
4
21.36 mongodb分片介绍

21.36 mongodb分片介绍 分片就是将数据库进行拆分,将大型集合分隔到不同服务器上。比如,本来100G的数据,可以分割成10份存储到10台服务器上,这样每台机器只有10G的数据。 通过一个mongos的...

脑洞老湿_
2017/10/20
24
0
MongoDB集群部署 - 带访问控制的分片副本集

1. 前言   Ceilometer将meter、event等数据保存在MongoDB中,之前将MongoDB部署在控制节点上,使用三副本模式,时间长了发现meter数据爆炸式增长,区区2T的磁盘捉襟见肘,而想删除旧数据,...

Sai18
2018/08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
4
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
7
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
5
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
6
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部