日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mongodb 集群加keyFile认证,Mongodb用户管理(转:http://blog.csdn.net/wlzjsj/article/details/61421230)

發布時間:2024/9/27 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongodb 集群加keyFile认证,Mongodb用户管理(转:http://blog.csdn.net/wlzjsj/article/details/61421230) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

自從遠古計繩結開始,數據庫的存儲就注定了今天的地位和多樣性,Nosql的出現更是解決了現有的關系型數據庫無法解決的一些難題,對高性能,靈活度,擴展性,海量數據的問題。隨之而出現的高速內存索引數據庫、列式存儲、圖像存儲等等,這篇文章主要講的是mongodb文檔型數據庫,mongodb目前也在各種大中小型創業型公司大受歡迎,占據了一定的地位。文章講解的是如何搭建一個安全認證的mongodb集群(安全認證還是很重要,各大數據庫被淪陷后,怎么有效預防被勒索比特幣….)

mongodb集群有三種模式,主從模式,副本集模式、sharding分片模式。主從模式官網也不再推薦上生產環境,主要是安全性太低。副本集和sharding模式目前是用的最廣的方案,通常這2種方案的選擇通過數據量和并發數來權衡。在GB級別的基本上副本集方案可滿足,TB級別或以上采用sharding模式,解決單機容量和單機并發能力。這兩種既有自己的優勢也有自己的缺點,比如sharding模式分片越多,性能自然下降越多。

進入正題,講解副本集的搭建以及配置安全認證。副本集有兩種方案,一種是有仲裁節點(Arbiter

),如圖1,一種是不含仲裁節點,如圖2所示。

???

圖1 一主一從一仲裁??????????

??????????????????????? ??? ??????

???圖2 多節點副本

?

當數據節點為偶數時候需要增加仲裁節點,故障時候仲裁新的主,當數據節點為奇數時候無需仲裁節點,根據id優先級選舉新的主。仲裁節點本身不存儲數據,如果配置仲裁節點使用虛擬機即可。本文為了節約機器提高數據的安全度使用的是不帶仲裁節點的方案:

一、?????環境:

系統:Ubuntu 16.04.02 LTS

mongodb版本:https://www.mongodb.org/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tgz

服務器:

Mongodb 主機

服務器端口地址

默認角色

mongodb主機 1

10.10.1.163:30010

primary

mongodb主機 2

10.10.1.109: 30010

secondary

mongodb主機 3

10.10.1.110: 30010

secondary

?

二、?????安裝mogodb

2.1 創建mongo用戶

?? 略(如果root啟動,可忽略本步驟,啟動用戶是mongo就必須集群目錄授權mongo用戶)

2.2 集群目錄

創建mongo集群目錄,最好三臺配置都一樣,方便維護(以下操作三臺服務器均一樣);

解壓二進制壓縮包并復制到/usr/local目錄下

tar xzf mongodb-linux-x86_64-3.4.2.tgz

mv mongodb-linux-x86_64-3.4.2 mongodb-3.4.2

ln –s mongodb-3.4.2 mongodb

創建集群目錄:

mkdir –p data/mongo_set/$集群名字/30010

配置集群的配置文件:

# usercenter replset master

bind_ip=10.10.1.163

#指定服務器監聽的端口,默認是27017

port=30010

?

#集群名字

replSet=test_set

#以守護進程的方式運行MongoDB

fork=true

?

#一個數據庫一個文件夾

directoryperdb=true

?

##啟用日志選項,MongoDB的數據操作將會寫入到journal文件夾的文件里

journal = true

?

# 在收到客戶數據,檢查的有效性

objcheck=true

?

#操作日志大小限制2G

oplogSize=2000

?

#pidfile

pidfilepath=/data/mongo_set/test_set/30010/mongo_m30010.pid

?

#指定數據目錄,默認是/data/db/。每個mongod進程都需要獨立的目錄,

#啟動mongod時就會在數據目錄中創建mongod.lock文件,防止其他mongod進程使用該數據目錄。

dbpath=/data/mongo_set/test_set/30010

?

#指定日志輸出路徑,如果不指定則會在終端輸出。每次啟動都會覆蓋原來的日志,如果不想覆蓋就要用--logappend選項

logpath=/data/mongo_set/test_set/30010/mongo30010.log

?

logappend=true

#auth=true

?

#0:關閉,不收集任何數據。1:收集慢查詢數據,默認是100毫秒。2:收集所有數據

profile=2

slowms=100

#.禁止HTTP狀態接口

nohttpinterface=true

#.禁止REST接口-在生產環境下建議不要啟用MongoDB的REST接口

rest=false

?

2.3 三臺主機分別啟動mongodb

Primary啟動: /usr/local/mongodb/bin/mongod –f ?/data/mongo_set/test_set/30010/mongodb_m30010.conf

Secondary1:?? /usr/local/mongodb/bin/mongod –f? /data/mongo_set/test_set/30010/mongodb_s30010.conf

Secondary2:?? /usr/local/mongodb/bin/mongod –f? /data/mongo_set/test_set/30010/mongodb_s30010.conf

三、?????配置副本集

3.1 配置主primary

此時我們并沒有配置任何認證賬戶,我們登錄主庫:

root@xxxx:~#mongo 10.10.1.163:30010

MongoDB server version: 3.4.2

Server has startup warnings:

2017-03-10T20:08:31.847+0800 I STORAGE? [initandlisten]

2017-03-10T20:08:31.847+0800 I STORAGE? [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine

2017-03-10T20:08:31.847+0800 I STORAGE? [initandlisten] **????????? See http://dochub.mongodb.org/core/prodnotes-filesystem

2017-03-10T20:08:32.115+0800 I CONTROL? [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

2017-03-10T20:08:32.115+0800 I CONTROL? [initandlisten]

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten]

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] ** WARNING: You are running on a NUMA machine.

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] **????????? We suggest launching mongod like this to avoid performance problems:

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] **????????????? numactl --interleave=all mongod [other options]

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten]

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] **??????? We suggest setting it to 'never'

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten]

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] **??????? We suggest setting it to 'never'

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten]

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 65535 processes, 655350 files. Number of processes should be at least 327675 : 0.5 times number of files.

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten]

test_set:PRIMARY>

test_set:PRIMARY> use admin

switched to db admin

3.2 配置副本幾點及權重

test_set:PRIMARY> config_test={_id : 'usercenter',members : [{_id : 0, host : '10.10.1.1.163:30010'},{_id : 1, host : '10.10.1.109:30010'},{_id : 2, host : '10.10.1.110:30010'}]}

#初始化副本集

test_set:PRIMARY> rs.initiate(config_ test);

{ "ok" : 1 }

?

3.3查看副本集群狀態

test_set:PRIMARY> rs.status()

{

? "set" : "test_set",

? "date" : ISODate("2017-03-11T08:25:02.832Z"),

? "myState" : 1,

? "term" : NumberLong(5),

? "heartbeatIntervalMillis" : NumberLong(2000),

? "optimes" : {

??????????? "lastCommittedOpTime" : {

?????????????????????? "ts" : Timestamp(1489220694, 1),

?????????????????????? "t" : NumberLong(5)

??????????? },

??????????? "appliedOpTime" : {

?????????????????????? "ts" : Timestamp(1489220694, 1),

?????????????????????? "t" : NumberLong(5)

??????????? },

??????????? "durableOpTime" : {

?????????????????????? "ts" : Timestamp(1489220694, 1),

?????????????????????? "t" : NumberLong(5)

??????????? }

? },

? "members" : [

??????????? {

?????????????????????? "_id" : 0,

?????????????????????? "name" : "10.10.1.163:30010",

?????????????????????? "health" : 1,

?????????????????????? "state" : 1,

?????????????????????? "stateStr" : "PRIMARY",

?????????????????????? "uptime" : 72991,

?????????????????????? "optime" : {

???????????????????????????????? "ts" : Timestamp(1489220694, 1),

???????????????????????????????? "t" : NumberLong(5)

?????????????????????? },

?????????????????????? "optimeDate" : ISODate("2017-03-11T08:24:54Z"),

?????????????????????? "electionTime" : Timestamp(1489147722, 1),

?????????????????????? "electionDate" : ISODate("2017-03-10T12:08:42Z"),

?????????????????????? "configVersion" : 1,

?????????????????????? "self" : true

??????????? },

??????????? {

?????????????????????? "_id" : 1,

?????????????????????? "name" : "10.10.1.109:30010",

?????????????????????? "health" : 1,

?????????????????????? "state" : 2,

?????????????????????? "stateStr" : "SECONDARY",

?????????????????????? "uptime" : 72980,

?????????????????????? "optime" : {

???????????????????????????????? "ts" : Timestamp(1489220694, 1),

???????????????????????????????? "t" : NumberLong(5)

?????????????????????? },

?????????????????????? "optimeDurable" : {

???????????????????????????????? "ts" : Timestamp(1489220694, 1),

???????????????????????????????? "t" : NumberLong(5)

?????????????????????? },

?????????????????????? "optimeDate" : ISODate("2017-03-11T08:24:54Z"),

?????????????????????? "optimeDurableDate" : ISODate("2017-03-11T08:24:54Z"),

?????????????????????? "lastHeartbeat" : ISODate("2017-03-11T08:25:02.583Z"),

?????????????????????? "lastHeartbeatRecv" : ISODate("2017-03-11T08:25:01.359Z"),

?????????????????????? "pingMs" : NumberLong(0),

?????????????????????? "syncingTo" : "10.10.1.163:30010",

?????????????????????? "configVersion" : 1

??????????? },

??????????? {

?????????????????????? "_id" : 2,

?????????????????????? "name" : "10.10.1.110:30010",

?????????????????????? "health" : 1,

?????????????????????? "state" : 2,

?????????????????????? "stateStr" : "SECONDARY",

?????????????????????? "uptime" : 72971,

?????????????????????? "optime" : {

???????????????????????????????? "ts" : Timestamp(1489220694, 1),

???????????????????????????????? "t" : NumberLong(5)

?????????????????????? },

?????????????????????? "optimeDurable" : {

???????????????????????????????? "ts" : Timestamp(1489220694, 1),

???????????????????????????????? "t" : NumberLong(5)

?????????????????????? },

?????????????????????? "optimeDate" : ISODate("2017-03-11T08:24:54Z"),

?????????????????????? "optimeDurableDate" : ISODate("2017-03-11T08:24:54Z"),

?????????????????????? "lastHeartbeat" : ISODate("2017-03-11T08:25:02.442Z"),

?????????????????????? "lastHeartbeatRecv" : ISODate("2017-03-11T08:25:01.007Z"),

?????????????????????? "pingMs" : NumberLong(0),

?????????????????????? "syncingTo" : "10.10.1.163:30010",

?????????????????????? "configVersion" : 1

??????????? }

? ],

? "ok" : 1

}

test_set:PRIMARY>

?

3.4 查看副本同步狀態

test_set:PRIMARY>? db.printSlaveReplicationInfo();

source: 10.10.1.109:30010

? syncedTo: Sat Mar 11 2017 16:25:24 GMT+0800 (CST)

? 0 secs (0 hrs) behind the primary

source: 10.10.1.110:30010

? syncedTo: Sat Mar 11 2017 16:25:24 GMT+0800 (CST)

?????????? 0 secs (0 hrs) behind the primary

一切ok,該副本集搭建完成。目前副本集架構如下所示:

?

四、?????增加安全認證機制KeyFile

4.1 集群之間的安全認證

集群之間的復制增加keyFile認證

#生成key

openssl rand -base64 745 > /data/mongo_set/usercenter/30010/mongodb-keyfile

chmod 600 /data/mongo_set/usercenter/30010/mon-keyfile

#?該key的權限必須是600

將該key放到集群中機器的每一臺上,記住必須保持一致,權限設置成600;

4.2 修改配置

在mongodb.conf啟動配置文件中增加配置項

#安全認證機制

keyFile=/data/mongo_set/test_set/30010/mon-keyfile

?

4.3 主庫配置用戶

也可后面配置,開啟keyfile認證就默認開啟了auth認證了,為了保證后面可以登錄,我提前創建了用戶:

先創建管理員賬戶

db.createUser(?

{?

??? user:"admin",??

??? pwd:"xxxxxx",?

??? roles:[{role:"userAdminAnyDatabase",db:"admin"}]?

}?

);?

db.createUser( {

?user: "root",

?pwd: "xxxxxxx",

?roles: [ { role: "root", db: "admin" } ]

?});

#認證用戶

db.auth("admin","xxxxxxx")

db.auth("root","xxxxxxx")

?

4.4 重啟進入

重新啟動mongodb,記住重新啟動時候,keyfile的指定如果沒有在配置文件中配置,就必須啟動時候使用參數keyfile指定,關閉順序注意下,mongodb集群有自動切換主庫功能,如果先關主庫,主庫就切換到其它上面去了,這里預防主庫變更,從庫關閉后再關閉主庫。

mongo 10.10.1.163:30010/admin -u root –p

2017-03-10T20:08:32.116+0800 I CONTROL? [initandlisten]

test_set:PRIMARY> use admin

switched to db admin

重新查看從庫和集群狀態都是正常。

五、?????創建用戶和用戶數據庫

5.1 啟動認證

開啟了安全認證就可以開始對每個數據庫進行安全認證了,首先給用戶創建一個數據庫:

test_set:PRIMARY> use user_test

switched to db user_test

mongodb創建數據庫直接use即可,此時show dbs是看不到該庫的,需要插入一條數據才會現實出來,這里不演示;

創建用戶數據庫的用戶:

db.createUser(

? {

??? user: “test_user",

??? pwd: "xxxxxx",

??? roles: [ { role: "readWrite", db: "user_test" } ]

? }

);

創建完成會顯示成功,可以用db.system.users.find()查看所有用戶驗證用戶是否存在;

5.2 驗證用戶登錄

#client操作

mongo 10.10.1.163:30010/user_test –u user_test –p

MongoDB shell version v3.4.2

Enter password:

connecting to: mongodb://192.168.1.163:30010/user_center

MongoDB server version: 3.4.2

user_test:PRIMARY>

?


總結

以上是生活随笔為你收集整理的Mongodb 集群加keyFile认证,Mongodb用户管理(转:http://blog.csdn.net/wlzjsj/article/details/61421230)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91大神视频在线播放 | 午夜大片在线观看 | 污视频网址 | 在线免费观看国产 | 日本在线第一页 | 五月婷婷av | 久久综合婷婷国产二区高清 | 特黄特色特刺激免费播放 | 精品人妻一区二区三区四区久久 | 日韩在线二区 | 人妻少妇精品中文字幕av蜜桃 | 日韩欧美一区二区三区在线 | 午夜草草 | 国产传媒av在线 | 日日摸夜夜 | 88久久精品无码一区二区毛片 | 欧洲亚洲视频 | 真实的国产乱xxxx在线 | 成年人黄色在线观看 | 激情文学综合网 | 国产精品久久欧美久久一区 | 日本美女动态图 | 国产福利精品视频 | 久久99影院 | 国产在线视频资源 | 色综合色综合 | 久久香蕉影视 | 老女人乱淫| 图片区亚洲 | 在线观看高清av | 欧美日韩色视频 | 欧洲熟妇的性久久久久久 | 狠狠操精品| 国产精选视频在线观看 | 欧美在线色视频 | 中文字幕乱码在线观看 | 国产精品自拍视频 | 国产在线观看 | 内射后入在线观看一区 | 一本久道久久综合无码中文 | 第四色在线视频 | 中文字幕网址在线 | 亚洲视频在线观看免费视频 | 午夜激情一区 | 久久大胆视频 | 久久久久69| 日本免费久久 | 成人做爰69片免费 | 色啪视频 | 夜夜夜综合 | 深爱婷婷网 | 99久久久国产精品无码免费 | 欧美亚洲一区 | 野花视频免费在线观看 | 人妻一区二区在线 | 免费二区| 成人片黄网站色大片免费毛片 | 成人午夜在线观看视频 | 欧美日韩不卡一区二区 | 看污网站| 黄色在线资源 | 国产浪潮av | 欧美一级爱爱视频 | 久久精品久久久久 | 日日操夜夜撸 | 色四虎| 欧美日韩国产高清视频 | 嫩草影院中文字幕 | 99热.com | 欧色丰满女同hd | 狠狠摸狠狠操 | 亚洲免费在线 | 一区二区三区资源 | 91香蕉在线看 | 日本高清在线播放 | 一级黄色片看看 | 久久久中文 | 超碰1000 | 日韩黄色一级大片 | 亚洲精品天堂成人片av在线播放 | 精品国产乱码久久久久久郑州公司 | 欧美成人a视频 | 噼里啪啦国语版在线观看 | 在线播放www | 视频在线观看一区二区 | 色视频免费看 | 天天做天天爱 | 欧美精品一区二区三区久久 | 操丰满女人 | 国产精品成人一区二区三区电影毛片 | 欧美激情精品久久久久久 | 美女色诱男人激情视频 | 毛片大全在线观看 | 中日韩精品视频在线观看 | 成人免费看片98欧美 | 国产高清免费av | 欧美在线影院 | 欧美一区二区三区成人精品 | 欧美国产一级片 |