mongodb(一)mongodb 副本集配置

环境

系统: 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/

配置步骤以下:html

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 
    注:二、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

    注:二、3自行修改(端口依次修改成:2701七、2701八、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 副本集增长密码认证。java

建立 KeyFile

副本集设置身份验证与单机不一样,须要增长一个 keyFile 以便副本集成员相互认证。linux

这个文件须要知足下面几点要求:spring

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

咱们能够在 Linux 上直接使用 openssl 建立一个这样的文件,而后上传至其余副本集成员服务器:mongodb

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

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

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

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

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 副本集增长密码认证springboot

相关文章
相关标签/搜索