天天看點

mongodb3.2 replica sets

一、配置檔案/etc/mongod.conf

[root@mongo01 ~]# egrep -v "^(#|$)" /etc/mongod.conf

<code>systemLog:</code>

<code>  </code><code>destination: </code><code>file</code>

<code>  </code><code>logAppend: </code><code>true</code>

<code>  </code><code>path: </code><code>/data/mongodb/log/rs1</code><code>.log</code>

<code>storage:</code>

<code>  </code><code>dbPath: </code><code>/data/mongodb/data</code>

<code>  </code><code>directoryPerDB: </code><code>true</code>

<code>  </code><code>journal:</code>

<code>    </code><code>enabled: </code><code>true</code>

<code>processManagement:</code>

<code>  </code><code>fork: </code><code>true</code>  <code># fork and run in background</code>

<code>  </code><code>pidFilePath: </code><code>/data/mongodb/conf/mongod</code><code>.pid  </code><code># location of pidfile</code>

<code>net:</code>

<code>  </code><code>port: 27027</code>

<code>replication:</code>

<code>   </code><code>oplogSizeMB: 50000</code>

<code>   </code><code>replSetName: rs1</code>

[root@mongo01 ~]#

[root@mongo01 ~]# ls /data/mongodb/

<code>arbiter  conf  data  log  startaribiter.sh</code>

[root@mongo01 ~]# ls /data/mongodb/arbiter/

<code>arbiter.conf  conf  data  log</code>

[root@mongo01 ~]# egrep -v "^(#|$)" /data/mongodb/arbiter/arbiter.conf

<code>  </code><code>path: </code><code>/data/mongodb/arbiter/log/rs1</code><code>.log</code>

<code>  </code><code>dbPath: </code><code>/data/mongodb/arbiter/data</code>

<code>  </code><code>pidFilePath: </code><code>/data/mongodb/arbiter/conf/mongod</code><code>.pid  </code><code># location of pidfile</code>

<code>  </code><code>port: 27029</code>

[root@mongo01 ~]# cat /data/mongodb/startarbiter.sh

<code>#!/bin/sh</code>

<code>. </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>

<code>cd</code> <code>${0%/*}</code><code>/arbiter</code>

<code>daemon --user mongod </code><code>"mongod --config arbiter.conf"</code>

注意:arbiter.conf檔案的屬主、屬組為mongod

二、啟動服務,配置副本集

service mongod  start 

/data/mongodb/startaribiter.sh

啟動第二個節點

然後:在primary上,

<code>rs.initiate()</code>

<code>rs.add(</code><code>"mongodb2.example.net"</code><code>)</code>

<code>rs.add(</code><code>"mongodb3.example.net"</code><code>)</code>

<code>rs.addArb(“mongodb1.example.net:27029”)</code>

如果希望降低primary的優先級:

<code>cfg = rs.conf()</code>

<code>cfg.members[2].priority = 0.5</code>

<code>rs.reconfig(cfg)</code>

<code>rs.status()</code>

實作複制後,在從節點上檢視資料如下:

<code>SECONDARY&gt; rs.slaveOk()</code>

<code>SECONDARY&gt; show collections</code>

三、 使用keyFile實作複制驗證

在主節點上建立群集使用者及密碼如下:

<code>admin = db.getSiblingDB(</code><code>"admin"</code><code>)</code>

<code>admin.createUser(</code>

<code>  </code><code>{</code>

<code>    </code><code>user: “clusteradmin”,</code>

<code>    </code><code>pwd</code><code>: “clusterpwd”,</code>

<code>    </code><code>roles: [ </code>

<code>    </code><code>{ role: </code><code>"userAdminAnyDatabase"</code><code>, db: </code><code>"admin"</code> <code>},</code>

<code>    </code><code>{ role: “clusterAdmin”, db: </code><code>"admin"</code> <code>},</code>

<code>    </code><code>{ role: “root”, db: </code><code>"admin"</code> <code>}</code>

<code>    </code><code>]</code>

<code>  </code><code>}</code>

<code>)</code>

測試使用者:

<code>db.getSiblingDB(</code><code>"admin"</code><code>).auth(“clusteradmin”, “clusterpwd” )</code>

在各從節點上關閉服務:

use admin

db.shutdownServer()

包括arbiter節點也要關閉服務,最後再關閉primary節點的服務。

然後在各配置檔案mongdb.conf中添加認證檔案:

<code>security:</code>

<code>  </code><code>keyFile: </code><code>/data/mongodb/conf/keyfile</code><code>.key</code>

[root@mongo01 ~]# cat /data/mongodb/conf/keyfile.key

<code>abcdefgh</code>

該檔案的權限必須是600或400,并把該檔案複制到各節點上(保持内容相同),該檔案也可以使用以下指令生成:

<code>openssl rand -base64 755 &gt;  path-to-keyfile</code>

最後再新啟動各節點的mongodb服務,并重新login ,測試。

參考:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/

https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/

本文轉自 meteor_hy 51CTO部落格,原文連結:http://blog.51cto.com/caiyuanji/1790862,如需轉載請自行聯系原作者