Kurulum adımları

1. İşletim sistemi konfigürasyonları

İşletim sisteminin güvenlik duvarı kapatılır (Ubuntu için ufw)

sudo systemctl stop firewalld

sudo systemctl disable firewalld
POWERSHELL

İşletim sisteminin Selinux kapatılır

Tüm sunuculardaki iletişim sorunlarını önlemek için SELinux devre dışı bırakılır. 

sudo setenforce 0

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
POWERSHELL

Swap Devre Dışı Bırakılır

Tüm node'lardaki iletişim sorunlarını önlemek için swap devre dışı bırakılır. Bunun için aşağıdaki komutlar işletilir ve /etc/fstab dosyası içindeki swap satırı silinir.

sudo swapoff -a

sudo vi /etc/fstab              
POWERSHELL

2. MongoDB kurulumu

Ubuntu 2020.04 

Centos 7.9

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc \
| sudo apt-key add -

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu \
bionic/mongodb-org/4.2 multiverse" \
| sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
POWERSHELL
sudo apt update

sudo apt install mongodb-org -y
POWERSHELL
sudo vi /etc/yum.repos.d/mongodb.repo
[MongoDB]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
POWERSHELL
sudo yum install -y mongodb-org
POWERSHELL

3. MongoDB konfigürasyon ve başlatılması

sudo vi /etc/mongod.conf

ip: 0.0.0.0
port: 25080

replication:
 replSetName: apinizer-replicaset

security:
    authorization: "enabled"
POWERSHELL
sudo systemctl start mongod

sudo systemctl enable mongod
POWERSHELL

4. Replica set Konfigürasyonu ve yetkili kullanıcı tanımı

mongo mongodb://localhost:25080
(Bu aşamada eğer bağlantı hatası verirse /etc/hosts altına server adresi ile sunucu adı eklenmeli ve 127.0.0.1 ifadesinin değerlerinden biri de localhost mu diye bakılmalı)

apinizer-replicaset: OTHER> rs.initiate()

apinizer-replicaset: OTHER> rs.status()

POWERSHELL
> use admin
> db.createUser(
  {
    user: 'apinizer',
    pwd: 'YOUR-PASSWORD',
    roles: [ { role: 'root', db: 'admin' } ]
  }
 );
exit;

(Ubuntu için şu girdi eklenecektir ",mechanisms:[  "SCRAM-SHA-1"]")
POWERSHELL

Şifre değiştirilmek istenirse

use admin

db.changeUserPassword("apinizer", passwordPrompt())
POWERSHELL


Aşağıdaki komut satırını kullanarak MongoDB'ye bağlanın ve düzgün çalıştığını kontrol etmek için bazı test komutlarını yürütün.

mongo  mongodb://localhost:25080 --authenticationDatabase "admin" -u "apinizer" -p

apinizer-replicaset: PRIMARY> cfg = rs.conf()
apinizer-replicaset: PRIMARY> cfg.members[0].host = "YOUR_IP:25080"
apinizer-replicaset: PRIMARY> rs.reconfig(cfg)
apinizer-replicaset: PRIMARY> rs.status()
POWERSHELL

Faydalı Bilgiler

Mevcut olan kullanıcıya yetki verme

Daha oluşturulmuş olan MongoDB üzerinde bir kullanıcıya aşağıdaki komut satırlarını kullanarak yetki verin.

mongo mongodb://localhost:25080

apinizer-replicaset:PRIMARY> use admin;

apinizer-replicaset:PRIMARY> db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])
POWERSHELL

3 Sunucu üzerinde MongoDB Replicaset Kurulumu

Node 1'de yapılacaklar:(mongoDb-01)
# openssl rand -base64 756 > /home/apinizer/mongo-key
# chmod 400 /home/apinizer/mongo-key
# chown -R mongodb:mongodb /etc/mongodb

mongo-key dosyasını tüm ikincil düğümlerdeki "/home/apinizer/" path'ine (mongoDb-02,mongoDb-03) kopyalayın

Tüm Mongo sunucularında mongod.conf dosyası aşağıdaki gibi olmalı.

On node 1 => mongoDb-01
# network interfaces
net:
port: 25080
bindIp: 10.0.0.11
#security:
security:
authorization: enabled
keyFile:  /home/apinizer/mongo-key
#replication:
replication:
replSetName: "apinizer-replicaset"


On node 2 => mongoDb-02
# network interfaces
net:
port: 27017
bindIp: 10.0.0.12
#security:
security:
authorization: enabled
keyFile:  /home/apinizer/mongo-key
#replication:
replication:
replSetName: "apinizer-replicaset"


On node 3=> mongoDb-03
# network interfaces
net:
port: 27017
bindIp: 10.0.0.12
#security:
security:
authorization: enabled
keyFile:  /home/apinizer/mongo-key
#replication:
replication:
replSetName: "apinizer-replicaset"


Daha sonra Secondary sunucuları Primary bağlanır.

apinizer-replicaset:PRIMARY> rs.add("mongoDb-02:25080")

apinizer-replicaset:PRIMARY> rs.add("mongoDb-03:25080")