Install Consul dengan Docker

Consul merupakan alat jaringan yang memiliki fitur lengkap seperti

  • Service Discovery
  • Health Checking
  • KV Store
  • Secure Service Communication
  • Multi-Datacenter Capabilities

Get the Docker image

docker pull consul

Configure and run a Consul server

docker run \
 -dit \
 -p 8500:8500 \
 -p 8600:8600/udp \
 --name=control-1 \
 consul agent -server -ui -node=control-1 -bootstrap-expect=1 -client=0.0.0.0

Parameter bootstrap-expect dapat digunakan untuk menentukan jumlah node yang diharapkan untuk bergabung dalam cluster saat melakukan proses bootstrap awal.

Misalnya jika Anda ingin memulai consul dengan 5 node sebagai server maka bootstrap-expect=5 lalu disarankan untuk menambahkan parameter retry-join dengan network alias agar dapat saling terhubung.

docker run \
 -dit \
 --network dc1 --network-alias control_cluster \
 -e CONSUL_BIND_INTERFACE=eth0 \
 -p 8500:8500 \
 -p 8600:8600/udp \
 --name=control-1 \
 consul agent -server -ui -node=control-1 -bootstrap-expect=5 -client=0.0.0.0 -retry-join=control_cluster

Akses WebUI Consul melalui http://ip-consul-server:8500

Configure and run a Consul client

docker run \
 -dit \
 --name=nova-1 \
 consul agent -node=nova-1 -retry-join=<ip-consul-server>

Untuk cek node client apakah berhasil join ke consul server.

docker exec control-1 consul members
Node       Address         Status  Type    Build   Protocol  DC   Partition  Segment
control-1  10.0.1.11:8301  alive   server  1.15.2  2         dc1  default    <all>
nova-1     10.0.1.13:8301  alive   client  1.15.2  2         dc1  default    <default>

Environment variables

Anda juga dapat konfigurasi consul menggunakan parameter -e pada CONSUL_LOCAL_CONFIG, CONSUL_CLIENT_INTERFACE dan CONSUL_BIND_INTERFACE.

docker run \
  -dit \
  -e CONSUL_LOCAL_CONFIG='{
  "datacenter":"us_west",
  "server":true,
  "enable_debug":true
  }' \
  consul agent -server -bootstrap-expect=3