文档章节

mongodb(一)mongodb 副本集配置

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

精选30+云产品,助力企业轻松上云!>>>

环境

    系统: 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
博文 45
码字总数 86112
作品 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
2019/07/16
203
0
MongoDB4.0 WINDOWS环境下 副本集、分片部署

部署开始: 创建路径 D:Program FilesMongoDBMySet下 config Data log 文件夹 config文件夹下准备配置文件: 分片1的副本集1 storage:dbPath: D:/Program Files/MongoDB/MySet/Data/shard11...

osc_cd6k6fu1
2019/04/11
6
0
MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群

最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装、客户端操作、安全认证、副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很大...

osc_b7xn6aes
2018/10/12
32
0
mongoDB分片搭建

系统系统 centos6.5 三台服务器:192.168.76.135/136/137 安装包: mongodb-linux-x86_64-4.1.4.tgz 端口分配: 集群搭建 1、安装mongodb 分别在每台机器建立conf、mongos、config、shard1、...

王可可And
2018/11/29
1
0
Docker下搭建mongodb副本集

背景 有需求需要对mongodb做一个容灾备份。根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾。副本集的优势在于:”有自动故障转移和恢复特性,其任意节点都可以是...

osc_yewm499n
2019/08/29
13
0

没有更多内容

加载失败,请刷新页面

加载更多

垂直对齐div中的文本[复制] - Vertically align text within a div [duplicate]

问题: This question already has an answer here: 这个问题在这里已有答案: How do I vertically align text in a div? 如何在div中垂直对齐文本? 29 answers 29个答案 The code below (......

javail
42分钟前
22
0
OSChina 周一乱弹 —— 南方水到底多深

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: Various Artists-用印度乐器演奏苏联国歌(洛天侬 remix) 手机党少年们想听歌,请...

小小编辑
51分钟前
56
0
动态规划:LC121.买卖股票的最佳时机

题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你...

曦鱼violet
58分钟前
18
0
快递100云平台的安全措施--API限流

2、热点参数限流 注意: 若 entry 的时候传入了热点参数,那么 exit 的时候也一定要带上对应的参数(exit(count, args)),否则可能会有统计错误。 3、通过 ParamFlowRuleManager 的 loadRu...

bykk
今天
19
0
在Bash中重定向stderr和stdout - Redirect stderr and stdout in Bash

问题: I want to redirect both stdout and stderr of a process to a single file. 我想将一个进程的stdout和stderr都重定向到一个文件。 How do I do that in Bash? 我该如何在Bash中做到...

富含淀粉
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部