Skip to main content
  1. Posts/

Setup Multi Datacenter menggunakan Consul

·2 mins·
consul consul
Table of Contents

Salah satu fitur utama Consul adalah support untuk Multi-Datacenter. Anda dapat membuat 2 atau lebih datacenter lalu dihubungkan dengan menambah hostname server pada konfig retry_join_wan.

Hal ini dapat memudahkan Anda untuk monitoring health dan service serta memberikan ketersediaan yang tinggi dibandingkan harus menghubungkan setiap node menggunakan peering lalu mengekspor servicenya ke Consul server.

Setup two datacenters
#

Untuk simulasi akan mencoba buat 2 datacenter.

Buat file konfig untuk consul-server1 dengan nama server1.json lalu edit 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"
    }
}

Selanjutnya buat file konfig untuk consul-server2 dengan nama server2.json

{
    "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"
    }
}

Buat container consul

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
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

Jika menggunakan docker-compose akan menjadi

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
#

Jika kedua container sudah running. Selanjutnya dapat Anda cek dengan perintah

docker exec consul-server1 consul members -wan
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>

Cek dengan WebUI ![](/assets/img/Screenshot 2023-05-23 234058.png)

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