खोज…


परिचय

यह प्रलेखन वर्णन करता है कि डॉकर छवि का उपयोग करते हुए तीन नोड मोंगो प्रतिकृति का निर्माण कैसे किया जाए और शेफ का उपयोग करके ऑटो का प्रावधान किया जाए।

स्टेप बनाएँ

कदम:

  1. मानगो नोड प्रमाणीकरण के लिए एक बेस 64 कीफाइल उत्पन्न करें। इस फाइल को शेफ डेटा_बैग में रखें

  2. शेफ सपोर्टर्स पर जाएं और docker cookbook डाउनलोड करें। एक कस्टम कुकबुक बनाएं (जैसे custom_mongo) और अपनी रसोई की मेटाडेटा के लिए 'docker', '~> 2.0' जोड़ें।

  3. अपनी कस्टम रसोई की किताब में एक विशेषता और नुस्खा बनाएँ

  4. प्रारंभिक सेट क्लस्टर बनाने के लिए प्रारंभिक मानगो

चरण 1: कुंजी फ़ाइल बनाएँ

mongo-keyfile और keyfile नामक आइटम data_bag बनाएँ। यह शेफ में डेटा_बैग्स डायरेक्टरी में होगा। आइटम कंटेंट नीचे होगा

openssl rand -base64 756 > <path-to-keyfile>

कीफ़ाइल आइटम सामग्री

{
  "id": "keyfile",
  "comment": "Mongo Repset keyfile",
  "key-file": "generated base 64 key above"
}

चरण 2: शेफ सुपर मार्केट से docker cookbook डाउनलोड करें और फिर custom_mongo रसोई की किताब बनाएं

knife cookbook site download docker 
knife cookbook create custom_mongo

metadat.rb of custom_mongo add में

depends          'docker', '~> 2.0'

चरण 3: विशेषता और नुस्खा बनाएँ

गुण

default['custom_mongo']['mongo_keyfile'] = '/data/keyfile' 
default['custom_mongo']['mongo_datadir'] = '/data/db'
default['custom_mongo']['mongo_datapath'] = '/data'
default['custom_mongo']['keyfilename'] = 'mongodb-keyfile'

विधि

#
# Cookbook Name:: custom_mongo
# Recipe:: default
#
# Copyright 2017, Innocent Anigbo
#
# All rights reserved - Do Not Redistribute
#

data_path = "#{node['custom_mongo']['mongo_datapath']}"
data_dir = "#{node['custom_mongo']['mongo_datadir']}"
key_dir = "#{node['custom_mongo']['mongo_keyfile']}"
keyfile_content = data_bag_item('mongo-keyfile', 'keyfile')
keyfile_name = "#{node['custom_mongo']['keyfilename']}"

#chown of keyfile to docker user
execute 'assign-user' do
 command "chown 999 #{key_dir}/#{keyfile_name}"
 action :nothing
end

#Declaration to create Mongo data DIR and Keyfile DIR
%W[ #{data_path} #{data_dir} #{key_dir} ].each do |path|
directory path do
  mode '0755'
  end
end

#declaration to copy keyfile from data_bag to keyfile DIR on your mongo server
file "#{key_dir}/#{keyfile_name}" do
  content keyfile_content['key-file']
  group 'root'
  mode '0400'
  notifies :run, 'execute[assign-user]', :immediately
end

#Install docker
docker_service 'default' do
  action [:create, :start]
end

#Install mongo 3.4.2
docker_image 'mongo' do
  tag '3.4.2'
  action :pull
end

भूमिका निर्देशिका में मोंगो-भूमिका नामक भूमिका बनाएँ

{
  "name": "mongo-role",
  "description": "mongo DB Role",
  "run_list": [
    "recipe[custom_mongo]"
  ]
}

तीन मोंगू नोड्स रन सूची में ऊपर की भूमिका जोड़ें

knife node run_list add FQDN_of_node_01 'role[mongo-role]'
knife node run_list add FQDN_of_node_02 'role[mongo-role]'
knife node run_list add FQDN_of_node_03 'role[mongo-role]'

चरण 4: रिपीसेट बनाने के लिए तीन नोड मोंगो को आरम्भ करें

मैं मान रहा हूं कि उपरोक्त भूमिका पहले ही तीनों मानगो नोड्स पर लागू हो चुकी है। केवल नोड 01 पर, प्रमाणीकरण सक्षम करने के लिए --auth के साथ मानगो प्रारंभ करें

docker run --name mongo -v /data/db:/data/db -v /data/keyfile:/opt/keyfile --hostname="mongo-01.example.com" -p 27017:27017 -d mongo:3.4.2 --keyFile /opt/keyfile/mongodb-keyfile --auth

नोड 01 पर रनिंग डॉक कंटेनर के इंटरैक्टिव शेल तक पहुँचें और व्यवस्थापक उपयोगकर्ता बनाएँ

docker exec -it mongo /bin/sh
    mongo
    use admin
    db.createUser( {
         user: "admin-user",
         pwd: "password",
         roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
       });

रूट उपयोगकर्ता बनाएँ

db.createUser( {
         user: "RootAdmin",
         pwd: "password",
         roles: [ { role: "root", db: "admin" } ]
       });

नोड 01 पर ऊपर बनाए गए डॉकटर कंटेनर को रोकें और हटाएं। यह मेजबान डीआईआर में डेटा और कीफाइल को प्रभावित नहीं करेगा। फिर से नोड 01 पर मोंगियो को हटाने के बाद लेकिन इस बार रिप्सट ध्वज के साथ

docker rm -fv mongo
docker run --name mongo-uat -v /data/db:/data/db -v /data/keyfile:/opt/keyfile --hostname="mongo-01.example.com" -p 27017:27017 -d mongo:3.4.2 --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"

अब प्रतिनिधि सेट ध्वज के साथ नोड 02 और 03 पर मानगो शुरू करें

docker run --name mongo -v /data/db:/data/db -v /data/keyfile:/opt/keyfile --hostname="mongo-02.example.com" -p 27017:27017 -d mongo:3.4.2 --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"
docker run --name mongo -v /data/db:/data/db -v /data/keyfile:/opt/keyfile --hostname="mongo-03.example.com" -p 27017:27017 -d mongo:3.4.2 --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"

नोड 01 पर रूट उपयोगकर्ता के साथ प्रमाणीकरण करें और प्रतिकृति सेट आरंभ करें

use admin
db.auth("RootAdmin", "password");
rs.initiate()

नोड 01 पर प्रतिकृति 2 सेट में Node 2 और 3 जोड़ें और repset0 क्लस्टर बनाएं

rs.add("mongo-02.example.com")
rs.add("mongo-03.example.com")

परिक्षण

प्राथमिक रन db.printSlaveReplicationInfo () पर जाएं और प्राथमिक समय के लिए SyncedTo और Behind का निरीक्षण करें। बाद में नीचे के रूप में 0 सेकंड होना चाहिए

उत्पादन

 rs0:PRIMARY> db.printSlaveReplicationInfo()
    source: mongo-02.example.com:27017
            syncedTo: Mon Mar 27 2017 15:01:04 GMT+0000 (UTC)
            0 secs (0 hrs) behind the primary
    source: mongo-03.example.com:27017
            syncedTo: Mon Mar 27 2017 15:01:04 GMT+0000 (UTC)
            0 secs (0 hrs) behind the primary

मुझे उम्मीद है इससे किसी को सहायता मिलेगी



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow