GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menyebarkan Cluster Sharded MongoDB di CentOS 7

Berbagi adalah proses MongoDB untuk menyimpan kumpulan data di berbagai mesin. Ini memungkinkan Anda untuk melakukan skala data horizontal dan untuk mempartisi semua data di seluruh instance independen. Sharding memungkinkan Anda menambahkan lebih banyak mesin berdasarkan pertumbuhan data ke tumpukan Anda.

Sharding dan Replikasi

Mari kita membuatnya sederhana. Saat Anda memiliki koleksi musik, 'Sharding' akan menyimpan dan menyimpan koleksi musik Anda di folder yang berbeda pada instance atau set replika yang berbeda sementara 'Replication' hanya menyinkronkan koleksi musik Anda ke instance lain.

Tiga Komponen Sharding

Pecahan - Digunakan untuk menyimpan semua data. Dan di lingkungan produksi, setiap pecahan adalah set replika. Menyediakan ketersediaan tinggi dan konsistensi data.

Server Konfigurasi - Digunakan untuk menyimpan metadata cluster, dan berisi pemetaan kumpulan data cluster dan pecahan. Data ini digunakan oleh server mongos/query untuk mengirimkan operasi. Disarankan untuk menggunakan lebih dari 3 instans dalam produksi.

Router Mongos/Kueri - Ini hanya instance mongo yang berjalan sebagai antarmuka aplikasi. Aplikasi akan membuat permintaan ke instance 'mongos', lalu 'mongos' akan mengirimkan permintaan menggunakan kunci shard ke set replika shard.

Prasyarat

  • Server 2 centOS 7 sebagai Kumpulan Replika Konfigurasi
      • 10.0.15.31      configsvr1
      • 10.0.15.32      configsvr2
  • Server 4 CentOS 7 sebagai Kumpulan Replika Shard
      • 10.0.15.21      shardsvr1
      • 10.0.15.22      shardsvr2
      • 10.0.15.23      shardsvr3
      • 10.0.15.24      shardsvr4
  • 1 server CentOS 7 sebagai mongos/Router Kueri
      • 10.0.15.11       mongo
  • Hak istimewa root
  • Setiap server terhubung ke server lain

Langkah 1 - Nonaktifkan SELinux dan Konfigurasikan Host

Dalam tutorial ini, kita akan menonaktifkan SELinux. Ubah konfigurasi SELinux dari 'enforcing' menjadi 'disabled'.

Terhubung ke semua node melalui OpenSSH.

ssh [dilindungi email]

Nonaktifkan SELinux dengan mengedit file konfigurasi.

vim /etc/sysconfig/selinux

Ubah nilai SELINUX menjadi 'dinonaktifkan'.

SELINUX=dinonaktifkan

Simpan dan keluar.

Selanjutnya, edit file host di setiap server.

vim /etc/hosts

Tempel konfigurasi host berikut:

10.0.15.31 ConfigSvr1
10.0.15.32 ConfigSvr2
10.0.15.11 Mongos
10.0.15.21 Shardsvr1
10.0.15.22 Shardsvr2
10.0.15.23 Shardsvr3     10.0.15.24      shardsvr4

Simpan dan keluar.

Sekarang restart semua server menggunakan perintah reboot.

boot ulang

Langkah 2 - Instal MongoDB di semua instance

Kami akan menggunakan versi MongoDB terbaru (3.4) untuk semua instans. Tambahkan repositori MongoDB baru dengan menjalankan perintah berikut:

cat <<'EOF'>> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb .org/static/pgp/server-3.4.asc
EOF

Sekarang instal MongoDB 3.4 dari repositori mongodb menggunakan perintah yum berikut.

sudo yum -y install mongodb-org

Setelah mongodb diinstal, Anda dapat menggunakan 'mongo ' atau 'mongod ' perintah.

mongod --version

Langkah 3 - Buat Kumpulan Replika Server Konfigurasi

Di bagian 'prasyarat', kami telah mendefinisikan server konfigurasi dengan 2 mesin 'configsvr1' dan 'configsvr2'. Dan pada langkah ini, kita akan mengonfigurasinya menjadi set replika.

Jika ada layanan mongod yang berjalan di server, hentikan menggunakan perintah systemctl.

systemctl stop mongod

Edit konfigurasi mongodb default 'mongod.conf ' menggunakan editor Vim.

vim /etc/mongod.conf

Ubah jalur penyimpanan DB ke direktori Anda sendiri. Kami akan menggunakan '/data/db1' untuk server pertama, dan direktori '/data/db2' untuk server konfigurasi kedua.

penyimpanan:
  dbPath:/data/db1

Ubah nilai baris 'bindIP' ke alamat jaringan internal Anda - 'configsvr1' dengan alamat IP 10.0.15.31, dan server kedua dengan 10.0.15.32.

bindIP:10.0.15.31

Pada bagian replikasi, tetapkan nama replikasi.

replikasi:
  replSetName:"replconfig01"

Dan di bawah bagian sharding, tentukan peran instance. Kami akan menggunakan dua contoh ini sebagai 'configsvr'.

sharding:
  clusterRole:configsvr

Simpan dan keluar.

Selanjutnya, kita harus membuat direktori baru untuk data MongoDB, lalu mengubah pemilik direktori tersebut menjadi pengguna 'mongod'.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Setelah ini, jalankan layanan mongod dengan perintah di bawah ini.

mongod --config /etc/mongod.conf

Anda dapat menggunakan perintah netstat untuk memeriksa apakah layanan mongod berjalan pada port 27017 atau tidak.

netstat -plntu

Configsvr1 dan Configsvr2 siap untuk set replika. Hubungkan ke server 'configsvr1' dan akses mongo shell.

ssh [dilindungi email]
mongo --host configsvr1 --port 27017

Mulai nama set replika dengan semua anggota configsvr menggunakan kueri di bawah.

rs.initiate(
  {
    _id:"replconfig01",
    configsvr:true,
    anggota:[
      { _id :0, host :"configsvr1 :27017" },
      { _id :1, host :"configsvr2:27017" }
    ]
  }
)

Jika Anda mendapatkan hasil '{ "ok" :1 } ', itu berarti configsvr sudah dikonfigurasi dengan set replika.

dan Anda akan dapat melihat simpul mana yang master dan simpul mana yang sekunder.

rs.isMaster()
rs.status()

Konfigurasi Config Server Replica Set telah selesai.

Langkah 4 - Buat Kumpulan Replika Shard

Pada langkah ini, kita akan mengkonfigurasi 4 server 'centos 7' sebagai server 'Shard' dengan 2 'Replica Set'.

  • 2 server - 'shardsvr1 ' dan 'shardsvr2 ' dengan nama kumpulan replika:'shardreplica01 '
  • 2 server - 'shardsvr3 ' dan 'shardsvr4 ' dengan nama kumpulan replika:'shardreplica02 '

Hubungkan ke setiap server, hentikan layanan mongod (Jika ada layanan yang berjalan), dan edit file konfigurasi MongoDB.

systemctl stop mongod
vim /etc/mongod.conf

Ubah penyimpanan default ke direktori khusus Anda.

penyimpanan:
  dbPath:/data/db1

Pada baris 'bindIP', ubah nilainya untuk menggunakan alamat jaringan internal Anda.

bindIP:10.0.15.21

Di bagian replikasi, Anda dapat menggunakan 'shardreplica01 ' untuk contoh pertama dan kedua. Dan gunakan 'shardreplica02 ' untuk server pecahan ketiga dan keempat.

replication:
  replSetName:"shardreplica01"

Selanjutnya, tentukan peran server. Kami akan menggunakan semua ini sebagai instance shardsvr.

sharding:
  clusterRole:shardsvr

Simpan dan keluar.

Sekarang, buat direktori baru untuk data MongoDB.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Mulai layanan mongod.

mongod --config /etc/mongod.conf

Periksa apakah MongoDB berjalan menggunakan perintah berikut:

netstat -plntu

Anda akan melihat MongoDB berjalan di alamat jaringan lokal.

Selanjutnya, buat set replika baru untuk 2 instance pecahan ini. Hubungkan ke 'shardsvr1' dan akses mongo shell.

ssh [dilindungi email]
mongo --host shardsvr1 --port 27017

Mulai set replika dengan nama 'shardreplica01 ', dan anggotanya adalah 'shardsvr1 ' dan 'shardsvr2 '.

rs.initiate(
  {
    _id :"shardreplica01",
    anggota:[
      { _id :0, host :"shardsvr1:27017" },
      { _id :1, host :"shardsvr2:27017" }
    ]
  }
)

Jika tidak ada kesalahan, Anda akan melihat hasil seperti di bawah ini.

Hasil dari shardsvr3 dan shardsvr4 dengan nama kumpulan replika 'shardreplica02 '.

Ulangi langkah ini untuk shardsvr3 dan shardsvr4 server dengan nama kumpulan replika yang berbeda 'shardreplica02 '.

Sekarang kami telah membuat 2 set replika - 'shardreplica01 ' dan 'shardreplica02 ' - sebagai pecahan.

Langkah 5 - Konfigurasikan mongos/Router Kueri

'Query Router' atau mongos hanyalah contoh yang menjalankan 'mongos'. Anda dapat menjalankan mongo dengan file konfigurasi, atau menjalankan hanya dengan baris perintah.

Masuk ke server mongos dan hentikan layanan MongoDB.

ssh [email protected]  
systemctl stop mongod

Jalankan mongos dengan baris perintah seperti yang ditunjukkan di bawah ini.

mongos --configdb "replconfig01/configsvr1:27017,configsvr2:27017"

Gunakan opsi '--configdb' untuk menentukan server konfigurasi. Jika Anda sedang dalam produksi, gunakan setidaknya 3 server konfigurasi.

Anda akan melihat hasil yang mirip dengan berikut ini.

Berhasil terhubung ke configsvr1:27017
Berhasil terhubung ke configsvr2:27017

instance mongos sedang berjalan.

Langkah 6 - Tambahkan pecahan ke mongos/Perute Kueri

Buka shell lain dari langkah sebelumnya, sambungkan ke server mongo lagi, dan akses shell mongo.

ssh [dilindungi email]
mongo --host mongos --port 27017

Tambahkan server pecahan dengan kueri sh mongodb.

Untuk 'shardreplica01 ' contoh:

sh.addShard( "shardreplica01/shardsvr1:27017")
sh.addShard( "shardreplica01/shardsvr2:27017")

Untuk 'shardreplica02 ' contoh:

sh.addShard( "shardreplica02/shardsvr3:27017")
sh.addShard( "shardreplica02/shardsvr4:27017")

Pastikan tidak ada kesalahan dan periksa status pecahan.

sh.status()

Anda akan melihat status sharding yang mirip dengan tampilan screenshot berikut.

Kami memiliki 2 set replika pecahan dan 1 instance mongos yang berjalan di tumpukan kami.

Langkah 7 - Pengujian

Untuk menguji pengaturan, akses server mongo shell mongo.

ssh [dilindungi email]
mongo --host mongos --port 27017

Aktifkan Sharding untuk Database

Buat database baru dan aktifkan sharding untuk database baru.

gunakan lemp
sh.enableSharding("lemp")
sh.status()

Sekarang lihat status databasenya, sudah dipartisi ke replika set 'shardreplica01'.

Aktifkan Sharding untuk Koleksi

Selanjutnya, tambahkan koleksi baru ke database dengan dukungan sharding. Kami akan menambahkan koleksi baru bernama 'tumpukan' dengan 'nama' koleksi pecahan, dan kemudian melihat database dan status koleksi.

sh.shardCollection("lemp.stack", {"name":1})
sh.status()

Koleksi baru 'tumpukan' dengan 'nama' koleksi pecahan telah ditambahkan.

Tambahkan dokumen ke 'tumpukan' koleksi.

Sekarang masukkan dokumen ke koleksi. Saat kita menambahkan dokumen ke koleksi di sharded cluster, kita harus menyertakan 'shard key'.

Pada contoh di bawah, kami menggunakan kunci pecahan 'nama ', seperti yang kami tambahkan saat mengaktifkan sharding untuk koleksi.

db.stack.save({
    "name":"LEMP Stack",
    "apps":["Linux", "Nginx", "MySQL", "PHP"],
})

Seperti yang ditunjukkan pada tangkapan layar berikut, dokumen telah berhasil ditambahkan ke koleksi.

Jika Anda ingin menguji database, Anda dapat menghubungkan ke kumpulan replika 'shardreplica01 ' Server UTAMA dan buka shell mongo. Saya masuk ke server PRIMARY 'shardsvr2'.

ssh [dilindungi email]
mongo --host shardsvr2 --port 27017

Periksa database yang tersedia di set replika.

tampilkan dbs
gunakan lemp
db.stack.find()

Anda akan melihat bahwa database, koleksi, dan dokumen tersedia dalam kumpulan replika.

MongoDB Sharded Cluster pada CentOS 7 telah berhasil diinstal dan disebarkan.


Cent OS
  1. Cara menyebarkan CDP di server CentOS

  2. Cara Menginstal MongoDB 4.2 / 4.0 di CentOS 6 / RHEL 6

  3. Cara Menginstal MongoDB 4.4 / 4.2 di CentOS 7 / RHEL 7

  1. Cara Menginstal MongoDB di CentOS 8

  2. Cara Menginstal MongoDB Pada CentOS 8 / RHEL 8

  3. Cara Menginstal FlintCMS di CentOS 7

  1. Cara menginstal mongodb di RHEL 8 / CentOS 8

  2. Cara menggunakan Mattermost di CentOS 7

  3. Cara menggunakan Rocket.Chat di CentOS 7