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

相關文章
相關標籤/搜索