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