最近抽時間搭建了一下mongodb簡單的分片,整個過程還算是蠻順利,隻不過在使用者驗證這一塊遇到了一些問題,好在最後終于搞定。
一、伺服器搭建過程:
1、安裝四個mongodb:一個作為config、一個作為mongos、另外兩個作為主要資料存儲的伺服器(機器ip192.168.0.201),如圖:
分别對應圖中被紅框框起來的mongoconf、mongos、mongo1、mongo2(解壓安裝,安裝過程省略)。
2、分别建立data、conf、logs檔案夾,并在logs檔案夾下建立mongodb.log檔案,在conf中建立mongodb.conf(啟動配置參數)檔案。
mongoconf中conf檔案内容如下:
mongos中conf檔案内容個如下(與上邊相比少了dbpath的指定):
mongo1中conf内容如下(和mongoconf中基本一樣,隻是路徑指向的是自己的):
mongo2中的conf也是一樣,隻是把mongo1改為mongo2(省略)。
3、依次啟動mongoconf、mongos和mongo1、mongo2:
啟動mongoconf,在bin目錄下執行mongod指令:
啟動mongos,在bin目錄下執行mongos指令:
啟動mongo1和mongo2,在各自的bin目錄中執行mongod指令:
4、連接配接mongos伺服器,并添加分片:
(1)、連接配接mongos:在任意一個mongodb的bin目錄執行如下指令:
(2)、進入mongos後添加mongo1和mongo2位分片資料伺服器:
5、開啟分片:
6、測試:向test資料庫的user表中添加10w條資料:
7、檢視分片結果:
二、開啟使用者驗證:
1、切換資料庫到admin建立root使用者:
再切換到test資料庫建立讀寫權限的使用者(非admin資料庫中無法建立叢集管理相關的使用者):
2、退出mongo shell,建立keyfile(檔案名可自取)檔案,并賦予600權限,必須要600權限:
進入到mongo1的data目錄下執行如下指令:
3、把生成的keyfile檔案拷貝到其他幾個mongodb的data目錄中:
4、修改mongodb.conf啟動配置檔案:
除開mongos之外,其他都加上如下内容(開啟使用者驗證和keyfile驗證):
mongos中沒有auth參數,隻需要keyfile。
5、重新依次啟動mongoconf、mongos和mongo1、mongo2(參考上邊的啟動說明);
三、java代碼連接配接測試:
1、java連接配接代碼如下:
2、運作結果:
收工完成!