系統: 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
配置步驟以下: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 副本集增長密碼認證。java
副本集設置身份驗證與單機不一樣,須要增長一個 keyFile 以便副本集成員相互認證。linux
這個文件須要知足下面幾點要求:spring
咱們能夠在 Linux 上直接使用 openssl 建立一個這樣的文件,而後上傳至其餘副本集成員服務器:mongodb
openssl rand -base64 512 > mongodb.key chmod 400 mongodb.key
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
<?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>
spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database
生產環境部署MongoDB副本集(帶keyfile安全認證以及用戶權限)<br/> 爲 mongodb 副本集增長密碼認證springboot