Konfigurasi PostgreSQL BDR di CentOS 7 (Multi-Master Replication)


Konfigurasi PostgreSQL BDR Replication di CentOS 7 - Pada tutorial postgres sebelumnya saya sudah menjelaskan bagimana cara melakukan konfigurasi postgresql master slave replication. Kali ini saya akan menjelaskan bagimana cara untuk membuat multi master replication pada PostgreSQL. Mungkin sobat sudah sangat familiar sekali dengan konfigurasi master slave, tapi disini konfigurasi postgresql akan sedikit berbeda dan source yang digunakan juga bukan postgresql biasa melainkan postgres yang sudah di patch oleh komunitas postgres 2nd Quadrant.

Baca Juga :
Install PostgreSQL Source di CentOS 7
Konfigurasi PostgreSQL Replication di CentOS7

Postgres-BDR

Postgres BDR (Bi-Directional Replication) merupakan source postgre multi-master replication system yang didesign 2nd Quadrant untuk memberikan high availability geographically distributed clusters. Sederhananya, anda bisa membuat sebuah cluster rdbms active secara terpisah meskipun berbeda tempat ataupun negara.

Infomation Host:
Host 1
IP : 192.168.56.101 (node1.dimasrio.com)

Host 2
IP : 192.168.56.102 (node2.dimasrio.com)

Konfigurasi PostgreSQL BDR

Setup postgresql dan plugin di node master (node1) dan member (node2).

Install dependencies.
yum group install "Development Tools"
yum install git readline-devel zlib-devel
Download postgresql dan plugin BDR.
cd /root

git clone -b bdr-pg/REL9_4_STABLE https://github.com/2ndQuadrant/bdr.git postgresql-bdr

git clone -b bdr-plugin/next git://git.postgresql.org/git/2ndquadrant_bdr.git bdr-plugin
Compile postgresql.
cd postgresql-bdr
mkdir /usr/lib/postgresql-bdr
./configure --prefix=/usr/lib/postgresql-bdr
make all
make install
Compile plugin bdr.
cd bdr-plugin/
./autogen.sh
PATH=/usr/lib/postgresql-bdr/bin/:$PATH ./configure
make
make install
Setup user postgres dan systemd.
adduser postgres
mkdir /var/lib/pgbdr
chown postgres. /var/lib/pgbdr/
su - postgres -c "/usr/lib/postgresql-bdr/bin/initdb -D /var/lib/pgbdr"
nano /usr/lib/systemd/system/postgresql-bdr.service
Tambahkan konfigurasi dibawah ini pada postgresql-bdr.service.
[Unit]
Description=Postgresql-9.4 BDR Service
After=syslog.target systemd-user-sessions.service

[Service]
User=postgres
Group=postgres
Type=forking
TimeoutSec=120
ExecStart=/usr/lib/postgresql-bdr/bin/pg_ctl -D /var/lib/pgbdr start
ExecStop=/usr/lib/postgresql-bdr/bin/pg_ctl -D /var/lib/pgbdr stop
ExecReload=/usr/lib/postgresql-bdr/bin/pg_ctl -D /var/lib/pgbdr reload

[Install]
WantedBy=multi-user.target
Setup environment user postgres dan tambahkan variable PATH pada baris terakhir .bashrc. Save dan kemudian exit dari text editor dan user postgres.
su - postgres
nano ~/.bashrc
PATH=$PATH:/usr/lib/postgresql-bdr/bin/
exit
Setup postgresql.conf.
nano /var/lib/pgbdr/postgresql.conf
listen_addresses = '*'
max_connections = 500
port = 5432
shared_preload_libraries = 'bdr'
wal_level = logical
track_commit_timestamp = on
max_wal_senders = 10
max_replication_slots = 10
max_worker_processes = 10
log_destination ='stderr'
logging_collector = on
log_directory ='pg_log'
log_filename='postgresql-%Y-%m-%d.log'
log_line_prefix='%m|%r|%d|%u|%e|'
log_statement=all
Set hostname pada /etc/hosts.
nano /etc/hosts
192.168.56.101 node1.truemoney.co.id node1
192.168.56.102 node2.truemoney.co.id node2
Saya anggap sobat sudah melakukan semua setup diatas pada masing-masing node master dan member. Selanjutnya konfigurasi akan berbeda pada node master dan member.

Konfigurasi Node1 - Master

Definisikan host pada pg_hba.conf.
nano /var/lib/pgbdr/pg_hba.conf
Tambahkan pada baris terakhir pg_hba.conf.
# DBR Master
host all all 192.168.56.101/32 trust
host all all 192.168.56.102/32 trust

host replication postgres 192.168.56.102/32 trust

Konfigurasi Node2 - Member

Definisikan host pada pg_hba.conf.
nano /var/lib/pgbdr/pg_hba.conf
Tambahkan pada baris terakhir pg_hba.conf.
# DBR Master
host all all 192.168.56.101/32 trust
host all all 192.168.56.102/32 trust

host replication postgres 192.168.56.101/32 trust
Sampai disini semua konfigurasi sudah selesai. Sebelum sobat menjalankan service postgresql bdr pastikan juga menginstall plugin postgres btree-gist. Biasanya tanpa plugin ini bdr tidak akan berjalan dengan baik.

Install postgres btree-gist di masing-masing node.
cd /root/postgresql-bdr/contrib/btree_gist/
make
make install
Selanjutnya start service postgres-bdr di masing-masing node.
systemctl start postgresql-bdr

Setup Database BDR 

Node 1 - Master
postgres=# create database dimzrio;
postgres=# \c dimzrio;
dimzrio=# create extension btree_gist;
dimzrio=# create extension bdr;
dimzrio=# select bdr.bdr_group_create (local_node_name:='node1',
node_external_dsn:='host=192.168.56.101 port=5432 dbname=dimzrio');

Node 2 - Member
postgres=# create database dimzrio;
postgres=# \c dimzrio;
dimzrio=# create extension btree_gist;
dimzrio=# create extension bdr;
dimzrio=# select bdr.bdr_group_join(local_node_name :='node2', node_external_dsn:='host=192.168.56.102 port=5432 dbname=dimzrio', join_using_dsn:='host=192.168.56.101 port=5432 dbname=dimzrio');
Selanjutnya cek apakah bdr sudah berjalan dengan baik.

Output :

Create table dan insert.


Demikian tutorial postgres mengenai cara Konfigurasi PostgreSQL BDR (Bi-Directional Replication) di CentOS 7. Semoga bermanfaat bagi kita semua dan selamat mencoba..!!!!

Konfigurasi VRF di Mikrotik


Konfigurasi VRF di Mikrotik - Virtual Routing Forwarding (VRF) merupakan suatu metode jaringan komputer yang memungkinkan untuk membuat berberapa table routing independent yang berjalan bersamaan dengan table routing main.

Di level production, teknologi vrf banyak sekali digunakan oleh perusahaan penyedia layanan MPLS seperti telkom dengan product VPNLite-nya. Karena dengan begitu provider dapat lebih mudah untuk memisahkan route client yang memiliki ip privat yang sama antara client satu dengan lainnya. 

Baca Juga :
Remote Loggin Mikrotik dengan Syslog

Pada mikrotik fitur vrf sudah tersedia dan sangat mudah untuk diimplementasikan. 

Perhatikan gambar dibawah ini, www.dimasrio.com akan mencoba menerapkan topology sederhana dari vrf.

Dari gambar diatas, client 1 sudah terlebih dahulu terkoneksi pada router R2, seiring berjalannya waktu router R2 mendapatkan client baru yaitu client 2 yang memiliki subnet privat yang sama dengan client 1. Pastinya jika kita paksakan menambahkan segment yang sama pada router R2 akan terjadi conflig ip yang menyebabkan jaringan client 1 akan terganggu karena pembacaan system routing pada router menjadi kacau.


Konfigurasi VRF Mikrotik

Pada router R2 kita akan buatkan vrf untuk memisahkan routing table. Langkah pertama pilih menu IP -> Route -> VRF


Setelah vrf di buat maka pada route list akan menjadi seperti ini.


Pada tahap ini kita sudah membuat vrf, akan tetapi client 2 masih belum dapet terkoneksi ke internet dikarenakan default route untuk outgoing ke internet ada pada table routing main. Untuk itu kita memerlukan Route Leaking agar traffic outgoing (upload) vrf-client2 dapat menggunakan routing table main.


Setelah kita menambahkan route leaking untuk traffic upload, kita perlu membuat Consistency Routing untuk traffic downloadnya agar traffic incoming dan outgoing tetap consistent.

Untuk membuat Consistency routing kita perlu membuat sebuah rule mangle di IP -> Firewall -> Mangle.




Sampai disini vrf sudah selesai di konfigurasi.

Demikian tutorial mikrotik indonesia kali ini mengenai konfigurasi vrf di mikrotik. Semoga bermanfaat bagi kita semua dan selamat mencoba..!!!

Remote Logging Mikrotik dengan Syslog

Remote Logging Mikrotik dengan Syslog - Centralized log merupakan hal yang sangat penting karena dengan log terpusat pemantauan aktivitas log akan menjadi sangat mudah. Sebetulnya centralized log tidak hanya untuk log server saja, mikrotik pun sudah menyediakan fitur remote logging. Nah, bagi sobat yang ingin mengimplementasikan remote log pada mikrotik anda bisa mengikuti cara berikut.

Baca Juga :
Eksternal Monitoring Log pada Rsyslog
Syslog Server :
IP :  222.103.10.2
Mikrotik :
IP : 222.103.10.1

Logging Mikrotik dengan Remote Syslog

Step 1  - Install syslog server
[root@centz6 /]# yum install rsyslog
Step 2 - Konfigurasi /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
Tambahkan baris di bawah ini pada rsyslog.conf untuk inisial log dari mikrotik.
:fromhost-ip,isequal,"222.103.10.1" /var/log/Mikrotik-R1.log
Jadi setiap syslog yang di kirim dari source address 222.103.10.1 akan di catat aktifitas log ke file /var/log/Mikrotik-R1.log

Step 3 - Setup firewall untuk accept rsyslog dan Restart Rsyslog
[root@centz6 /]#iptables -A INPUT -p udp --dport 514 -j ACCEPT
[root@centz6 /]# iptables -A INPUT -p tcp --dport 514 -j ACCEPT
[root@centz6 /]# /etc/init.d/rsyslog restart
Step 4 - Login ke Mikrotik via winbox dan pilih menu System > Logging > Actions, lalu tambahkan action untuk rsyslog dan ip remote server syslog.


Step 5 - Setelah actions di buat, pada tab tambahkan rule rsyslog yang barusan di buat.

Nah, pada menu topic sobat bisa memilih serverity log apa yang akan di kirim ke syslog server. Pada contoh kali ini saya akan mengrimkan topic atau serverity info dan error ke syslog server.

Jika semua sudah running dengan baik maka akan ada file Mikrotik-R1.log pada directory /var/log.


Demikian tutorial singkat www.dimasrio.com kali ini mengenai remote logging mikrotik dengan syslog. Semoga bermanfaat bagi kita semua dan selamat mencoba..!!!

Konfigurasi PostgreSQL Replication di CentOS 7


Konfigurasi PostgreSQL Replication di CentOS 7 - Hallo sobat oprekers, kali ini www.dimasrio.com akan menjelaskan bagimana cara melakukan konfigurasi postgresql replication (master - slave) di centos 7. Replication merupakan salah fitur yang disediakan postgres untuk membuat database replika (mirror) dengan melakukan proses copy dari satu database master ke database lainnya. 


Konfigurasi PostgreSQL Replication 

Pada contoh kasus ini saya menggunakan 2 buah host sebagai berikut:

Host Master:
Hostname : node1.centz7zone.net
IP : 192.168.137.101

Host Slave:
Hostname : node2.centz7zone.net
IP : 192.168.137.102

Step 1 - Set hostname

Set hostname pada masing-masing server node1 dan node2.
nano /etc/hosts
192.168.137.101    node1.centz7zone.net   node1
192.168.137.102    node2.centz7zone.net   node2

Step 2 - Install PostgreSQL 

Install atau compile postgresql pada masing-masing server node1 dan node2.
Install PostgreSQL Source di CentOS 7 

Step 3 - Konfigurasi DB Master

Pada tahap ini kita akan melakukan setup pada database master dengan ip 192.168.137.101. 
Buat sebuah role dengan nama replicator. User ini nantinya akan digunakan untuk melakukan replikasi.
su - postgres
psql
CREATE USER replicator REPLICATION LOGIN ENCRYPTED PASSWORD 'password';
Output :



Selanjutnya rubah berberapa option pada postgresql.conf.
nano /opt/pgdata/postgresql.conf 
listen_addresses = '192.168.137.101'
wal_level = hot_standby
archive_mode = on
archive_command = 'cp -i %p /opt/pgdata/archive/%f'
max_wal_senders = 3
wal_keep_segments = 8
Buat direktory untuk menyimpan hasil archive.
mkdir /opt/pgdata/archive/ 
chown postgres. /opt/pgdata/ -R
Setelah selesai konfigurasi pada postgresql.conf, selanjutnya kita buat koneksi untuk role replication pada pg_hba.conf.
host all all 192.168.137.0/24 md5

local replication postgres trust
host replication replicator 192.168.137.102/32 md5
Sampai disni konfigurasi pada master sudah selesai.

Step 4  - DB Slave Replication

Matikan service postgres sebelum konfigurasi pada slave.
 systemctl stop postgresql
Backup instance yang sudah ada.
mv /opt/pgdata/ /opt/pgdata_original
mkdir /opt/pgdata
chown postgres. /opt/pgdata -R
chmod 0700 /opt/pgdata -R
Selanjutnya copy instance dari server master menggunakan pg_basebackup.
su - postgres
pg_basebackup -h 192.168.137.101 -D /opt/pgdata -U replicator -v -P
Output :

Sesuaikan konfigurasi pada postgresql.conf sebagai slave.
nano /opt/pgdata/postgresql.conf
listen_addresses = '192.168.137.102'
wal_level = hot_standby
hot_standby = on
max_wal_senders = 3
wal_keep_segments = 8
Masih di dalam user postgres, buat sebuah file recovery.conf.
nano /opt/pgdata/recovery.conf
Tambahkan perintah berikut pada recovery.conf.
standby_mode = 'on'
primary_conninfo = 'host=192.168.137.101 port=5432 user=replicator password=password'
restore_command = 'cp //opt/pgdata/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432' 
chown postgres. /opt/pgdata/recovery.conf
Sampai di sini konfigurai slave sudah selesai.

Untuk memastikan bahwa konfigurasi sudah berhasil jalankan perintah berikut pada db master.
select * from pg_stat_replication;
Output :


Step 5 - Testing

Setelah semua konfigurasi selesai, langkah terakhir adalah testing. Untuk memastikan bahwa database replication sudah berjalan dengan baik buatlah sebuah database baru pada master. Pastikan pada database slave juga terbuat otomatis.



Video Tutorial :


Demikian tutorial singkat kali ini mengenai konfigurasi postgresql replication di centos 7. Semoga bermanfaat bagi kita semua dan selamat mencoba..!!!

Install PostgreSQL Source di CentOS 7


Install PostgreSQL Source di CentOS 7 - Hallo sobat oprekers, kali ini dimasrio.com akan menjelaskan bagimana cara compile source PostgreSQL. PostgreSQL merupakan salah satu jenis ORDBMS (Object-Relational Database Management System) berbasis open source. Meskipun postgres didistribusikan secara free, postgres sangat powerfull dengan dukungan pengembangan aktif lebih dari 15 tahun. Fitur yang disediakan postgres diantaranya snapshots, replication, cluster, tablespace, dll.

Install PostgreSQL

Install gcc compiler dan package dependencies. 
yum group install "Development Tools" 
yum install readline-devel zlib-devel
Download source postgresql.
https://www.postgresql.org/ftp/source/
Pada artikel ini saya menggunakan postgres versi v9.5.4.
mkdir /var/lib/psql95
wget https://ftp.postgresql.org/pub/source/v9.5.4/postgresql-9.5.4.tar.gz
tar -zxvf postgresql-9.5.4.tar.gz
Compile source postgresql.
cd postgresql-9.5.4
./configure --prefix=/var/lib/psql95
make
make install
Buat instance databasenya.
adduser postgres
mkdir /opt/pgdata
chown postgres. /opt/pgdata
su - postgres -c "/var/lib/psql95/bin/initdb -D /opt/pgdata"
Setup service systemd untuk menjalankan postgres.
nano /usr/lib/systemd/system/postgresql.service
Tambahkan script dibawah ini.
[Unit]
Description=Postgresql-9.5 Service
After=syslog.target systemd-user-sessions.service

[Service]
User=postgres
Group=postgres
Type=forking
TimeoutSec=120
ExecStart=/var/lib/psql95/bin/pg_ctl -D /opt/pgdata -l /opt/pgdata/startup.log start
ExecStop=/var/lib/psql95/bin/pg_ctl -D /opt/pgdata -l /opt/pgdata/startup.log stop
ExecReload=/var/lib/psql95/bin/pg_ctl -D /opt/pgdata -l /opt/pgdata/startup.log reload

[Install]
WantedBy=multi-user.target
Selanjutnya set environment postgres
su - postgres
nano ~/.bashrc
Tambahkan path postgresql pada bashrc.
PATH=$PATH:/var/lib/psql95/bin/
Exit dari user postgres dan Start postgresql.
systemctl start postgresql
Output :




Video Tutorial :


Demikian tutorial singkat saya kali ini mengenai cara install postgresql di centos 7. Semoga bermanfaat bagi kita semua dan selamat mencoba.!!!

Internet Marketing

Linux