Skip to main content
  1. Posts/

Setup Multi Datacenter menggunakan Consul

·2 mins·
consul consul
Table of Contents

Salah satu fitur utama Consul adalah dukungan untuk Multi-Datacenter. Anda dapat membuat dua atau lebih datacenter, lalu menghubungkannya dengan menambahkan hostname server pada konfigurasi retry_join_wan.

Fitur ini memudahkan Anda dalam melakukan monitoring health dan service, serta memberikan ketersediaan tinggi (high availability) tanpa perlu melakukan peering antar node secara manual dan mengekspor service ke server Consul.

Setup Dua Datacenter
#

Pada simulasi ini, kita akan membuat dua datacenter.

Konfigurasi Consul Server 1
#

Buat file konfigurasi bernama server1.json, lalu isi seperti berikut:

{
    "node_name": "consul-server1",
    "datacenter": "dc1",
    "primary_datacenter": "dc1",
    "retry_join_wan": ["consul-server1", "consul-server2"],
    "server": true,
    "ui_config": {
        "enabled": true
    },
    "data_dir": "/consul/data",
    "addresses": {
        "http": "0.0.0.0"
    }
}

Konfigurasi Consul Server 2
#

Buat file konfigurasi bernama server2.json, lalu isi seperti berikut:

{
    "node_name": "consul-server2",
    "datacenter": "dc2",
    "primary_datacenter": "dc1",
    "retry_join_wan": ["consul-server1", "consul-server2"],
    "server": true,
    "ui_config": {
        "enabled": true
    },
    "data_dir": "/consul/data",
    "addresses": {
        "http": "0.0.0.0"
    }
}

Menjalankan Container Consul
#

Menggunakan Docker CLI
#

Consul Server 1:

docker run -dit --name consul-server1 --network consul \
 -v ./server1.json:/consul/config/server1.json \
 -p 8500:8500 -p 8600:8600/udp \
 -e CONSUL_BIND_INTERFACE=eth0 \
 consul agent -bootstrap-expect=1

Consul Server 2:

docker run -dit --name consul-server2 --network consul \
 -v ./server2.json:/consul/config/server2.json \
 -e CONSUL_BIND_INTERFACE=eth0 \
 consul agent -bootstrap-expect=1

Menggunakan Docker Compose
#

Jika Anda menggunakan docker-compose, konfigurasi akan menjadi seperti berikut:

version: '3.7'

services:
  consul-server1:
    image: hashicorp/consul:1.10.0
    container_name: consul-server1
    restart: always
    volumes:
      - ./server1.json:/consul/config/server1.json
    networks:
      - consul
    ports:
      - "8500:8500"
      - "8600:8600/tcp"
      - "8600:8600/udp"
    command: "agent -bootstrap-expect=1"

  consul-server2:
    image: hashicorp/consul:1.10.0
    container_name: consul-server2
    restart: always
    volumes:
      - ./server2.json:/consul/config/server2.json
    networks:
      - consul
    command: "agent -bootstrap-expect=1"

networks:
  consul:
    driver: bridge

Verify Datacenter Configuration
#

Setelah kedua container berjalan, Anda dapat memverifikasi koneksi antar datacenter menggunakan perintah berikut:

docker exec consul-server1 consul members -wan

Contoh output yang menandakan bahwa kedua datacenter telah terhubung dengan benar:

Node                Address        Status  Type    Build   Protocol  DC   Partition  Segment
consul-server1.dc1  10.0.1.2:8302  alive   server  1.15.2  2         dc1  default    <all>
consul-server2.dc2  10.0.1.5:8302  alive   server  1.15.2  2         dc2  default    <all>

Output di atas menunjukkan bahwa:

  • Kedua node alive
  • Masing-masing berada dalam datacenter yang berbeda: dc1 dan dc2
  • Terhubung melalui WAN federation dengan status yang sehat

Verifikasi Melalui Web UI
#

Anda juga dapat melakukan pengecekan melalui Consul Web UI. Pada halaman UI, Anda akan melihat daftar datacenter (dc1 dan dc2) di sisi kiri, serta status node dan service di masing-masing datacenter.

cek webui

Related

Membangun Koneksi Peering Antar Cluster Consul
·2 mins
consul consul
Install Consul dengan Docker
·2 mins
consul docker consul
Register Service ke Consul
·2 mins
consul consul
Cara Mengubah Situs WordPress Menjadi Situs Statis
·1 min
wordpress wordpress
Cara Menghentikan Proses Malicious kcached
·1 min
linux linux
Command 'ng' not found pada Angular
·1 min
nodejs angular nodejs