mongodbのreplsetコピーセット+auth


###auth認証のmongodbのコピーセットを開く
###注意点- - - selinux
-ダブルクリック相互通信モードを確立するのが望ましい
###事前にやるべきこと
  • ハイエンド大気レベルのkeyFileファイル
  • を生産
    [root@redis journal]# openssl rand -base64 753
    3LC/EZGPOLXdVBQInqeKVglqNNWo2Et93ib51BQJZRAUB2gRUovi4b6ZkAeNAQxc
    vu3UEOLWA9IyWvHy6g3rAQ8lAWqVX+dIJ52Lf5EKiUp9uTwqlzGd6FKgtheN6hNL
    HV1YhwdzHLN7itmUgcTSe5qCSNJJijQh+OtKipkPH3laE+UxvC4rafPqNtzcBBjU
    7P2GOAq7zyHqT68IBysNzcdribb9qVQ35Q+kFG3sB4ne26pgk2qjnUYAK2r42BLm
    ec6VfKw0LnemJsSCB1d2M+5fLMvBe8w59lOL7/n8IHeeT4jiTmFhrWcgyTATK7D3
    16Zbf8DJOkHobfnW7v0eUJINAS7BrVLjItSR51qQ4nqQAQpWd5DyNCsycDcNIzQj
    u9pGO2OzBiroOlo/tz/tLjS8jPHaa7GamOI+L+OF1sn9ytpSq0T0BswItbaNIFjr
    g97Nj6iwL86zblDY1U2380qBqKZdBP/yZdYi9Mj05328PdjPvF32vPt3wAHmkxTW
    zHXMELO6AO4q4LxTPUbIGuLzbeGoLF/ZZia5ndXWzJxVaLNUxxdzrCtcoCXvfwXw
    NXiN6Gg2Ep/IwkVZtNILtmbUZG51q45bb7afvS7p27P89WTk0TZ4rWNdnpNNJ1ry
    Nwz8jMUFe9DdAY50KYUqYiIEDFltICYycnXwtmKYTpaun/6gXLKKp6PwHtfdid1t
    v6dkv1FHB0fU0bReOBTTSfaFkwbdKcxHcLV2p6xiFdRKLMGDrgCQNXlJN0SaUUgP
    U55DrScsWT3A6Pzx2Ga6yl/xnGaJpXBHb+g2gWFhSL64oo58KB4e1TQT5z/pkI0Y
    Ow+GLv8m82K2epU7hpTB6ks0PZcalGlGPy4OBxu7tNQqJIY/pLa60Gtqbs5KBCIX
    p7MV9JxCnOML68JU3ZKqlZUIkZeNSLpFXbnHNsuRtXWRuARdb3WM6BxsNS6uOfjA
    /iYa0dsUtz5w8z6CQOEJ0bPo5GjpA95WSjXnwiCY8Hvf
    [root@redis journal]#
  • -生産したkeyを/usr/local/mongodb/key
  • にコピー
  • -keyファイルを設定する権限は600
  • です.
  • -keyファイルの所有者グループを変更する
  • [root@redis mongodb]# ll
    total 72
    drwxr-xr-x 2 mongodb mongodb  4096 Jul 19 12:58 bin
    -rw-r--r-- 1 mongodb mongodb 34520 Jun 19 22:41 GNU-AGPL-3.0
    -rw-r--r-- 1 root    root     1020 Jul 21 08:26 key
    -rw-r--r-- 1 mongodb mongodb     5 Jul 21 07:54 mongo.pid
    -rw-r--r-- 1 mongodb mongodb  1359 Jun 19 22:41 README
    -rw-r--r-- 1 mongodb mongodb 17793 Jun 19 22:41 THIRD-PARTY-NOTICES
    [root@redis mongodb]# chmod 600 key 
    [root@redis mongodb]# ll
    total 72
    drwxr-xr-x 2 mongodb mongodb  4096 Jul 19 12:58 bin
    -rw-r--r-- 1 mongodb mongodb 34520 Jun 19 22:41 GNU-AGPL-3.0
    -rw------- 1 
    mongodb mongodb
      1020 Jul 21 08:26 key
    -rw-r--r-- 1 mongodb mongodb     5 Jul 21 07:54 mongo.pid
    -rw-r--r-- 1 mongodb mongodb  1359 Jun 19 22:41 README
    -rw-r--r-- 1 mongodb mongodb 17793 Jun 19 22:41 THIRD-PARTY-NOTICES
    [root@redis mongodb]#

    ###キーファイルを別のノードにコピー
  • -注意属グループ属主
  • -グローバルアカウントを作成する
  • > 
    > show dbs
    admin  (empty)
    local  1.078GB
    test   (empty)
    > use admin
    switched to db admin
    > db.addUser("zhuima","zhuima")
    WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
    Successfully added user: { "user" : "zhuima", "roles" : [ "root" ] }
    >

    ###プライマリサーバプロファイル
    [root@redis mongodb]# sed -e '/^$/d;/^#/d' /etc/mongod.conf
    port=27017
    dbpath=/mongo/data/mongodb_data/
    logpath=/mongo/data/mongodb_log/mongodb.log
    pidfilepath=/usr/local/mongodb/mongo.pid
    fork=true
    logappend=true
    shardsvr=true
    directoryperdb=true
    replSet=zhuima
    keyFile=/usr/local/mongodb/key
    bind_ip=192.168.58.30

    ###サーバからのプロファイル
    [root@mongo1 data]# vim /etc/mongod.conf 
    [root@mongo1 data]# sed -e '/^$/d;/^#/d' /etc/mongod.conf
    logpath=/var/log/mongodb/mongod.log
    logappend=true
    fork=true
    dbpath=/mongo/data
    pidfilepath=/var/run/mongodb/mongod.pid
    bind_ip=192.168.58.10
    replSet = zhuima
    keyFile = /mongo/data/key

    ###mongodbサービスの再起動観察結果
  • -レプリカセット
  • の初期化
    > rs.initiate()
  • -keyFileのデフォルトにはauth機能をオンにする
  • が含まれています.
    zhuima:SECONDARY> show dbs
    2014-07-21T08:52:44.617+0200 listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13
    } at src/mongo/shell/mongo.js:47
    zhuima:SECONDARY>

    ###検証情報
  • -プライマリノードの
  • zhuima:PRIMARY> show dbs
    admin  0.078GB
    local  1.078GB
    zhuima:PRIMARY> use zhuima
    switched to db zhuima
    zhuima:PRIMARY> info = {Name:"zhuima",Age:26,Gender:"F",Address:"Beijing China"}
    {
    "Name" : "zhuima",
    "Age" : 26,
    "Gender" : "F",
    "Address" : "Beijing China"
    }
    zhuima:PRIMARY> db.person.insert(info)
    WriteResult({ "nInserted" : 1 })
    zhuima:PRIMARY> db.person.find()
    { "_id" : ObjectId("53ccb955f09dbb6f5a213faf"), "Name" : "zhuima", "Age" : 26, "Gender" : "F", "Address" : "Beijing China" }
    zhuima:PRIMARY>
  • -ノードから
  • zhuima:SECONDARY> show dbs
    admin   0.078GB
    local   1.078GB
    zhuima  0.078GB
    zhuima:SECONDARY> use zhuima
    switched to db zhuima
    zhuima:SECONDARY> show collections
    2014-07-21T08:55:40.267+0200 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:131
    zhuima:SECONDARY> rs.slaveOk()
    zhuima:SECONDARY> rs.slaveOk()
    zhuima:SECONDARY> show collections
    person
    system.indexes
    zhuima:SECONDARY> db.person.find()
    { "_id" : ObjectId("53ccb955f09dbb6f5a213faf"), "Name" : "zhuima", "Age" : 26, "Gender" : "F", "Address" : "Beijing China" }
    zhuima:SECONDARY>

    ###mongodbレプリケーションセット+authの構成について燦兄の指摘に感謝する
    チャンゴのブログhttp://www.shencan.net/
    ###後記:
  • 生産環境ではmongdbは対外的にサービスしないがauth認証を加えることで総じてメリットのある
  • である.
  • かつて黒雲に破裂した痛みを覚えていますか~
  • 後続ブログでは、インデックス記憶スライス操作
  • について説明します.