Slide 1

Slide 1 text

CENTRALIZED CONFIGURATION USING CONSUL AND SPRING CLOUD

Slide 2

Slide 2 text

CENTRALIZED CONFIGURATION EKO KURNIAWAN KHANNEDY ▸ Principal R&D Engineer at Blibli.com ▸ Part of R&D Team at Blibli.com ▸ [email protected]

Slide 3

Slide 3 text

CENTRALIZED CONFIGURATION AGENDA ▸ Consul ▸ Spring Cloud ▸ Demo

Slide 4

Slide 4 text

CONSUL CENTRALIZED CONFIGURATION

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

CENTRALIZED CONFIGURATION WHAT IS CONSUL? ▸ Service Discovery (via DNS or HTTP) ▸ Failure Detection (health checking) ▸ Key-Value Storage (for dynamic configuration) ▸ Multi Datacenter

Slide 7

Slide 7 text

CENTRALIZED CONFIGURATION CONSUL CLUSTER ARCHITECTURE ▸ Datacenter ▸ Agent, a the long running daemon on every member of the Consul cluster ▸ Server, an agent with an expanded set of responsibilities ▸ Client, an agent that forwards all RPCs to a server

Slide 8

Slide 8 text

CENTRALIZED CONFIGURATION SETUP CONSUL CLUSTER IP Address Role 192.0.0.1 Bootstrap Consul Server 192.0.0.2 Consul Server 192.0.0.3 Consul Server

Slide 9

Slide 9 text

CENTRALIZED CONFIGURATION SETUP CONSUL SERVER 1 (BOOTSTRAP) {
 “bootstrap”: true,
 “server”: true,
 “datacenter”: “blibli",
 “data_dir”: “/opt/var/consul”,
 “log_level”: “INFO”,
 “bind_addr” : “192.0.0.1”,
 “client_addr” : “192.0.0.1”
 }

Slide 10

Slide 10 text

CENTRALIZED CONFIGURATION SETUP CONSUL SERVER 2 {
 “bootstrap”: false,
 “server”: true,
 “datacenter”: “blibli",
 “data_dir”: “/opt/var/consul”,
 “log_level”: “INFO”,
 “bind_addr” : “192.0.0.2”,
 “client_addr” : “192.0.0.2”,
 “start_join” : [ “192.0.0.1”, “192.0.0.3” ]
 }

Slide 11

Slide 11 text

CENTRALIZED CONFIGURATION SETUP CONSUL SERVER 3 {
 “bootstrap”: false,
 “server”: true,
 “datacenter”: “blibli",
 “data_dir”: “/opt/var/consul”,
 “log_level”: “INFO”,
 “bind_addr” : “192.0.0.3”,
 “client_addr” : “192.0.0.3”,
 “start_join” : [ “192.0.0.1”, “192.0.0.2” ]
 }

Slide 12

Slide 12 text

CENTRALIZED CONFIGURATION SETUP CONSUL CLIENT {
 “server”: false,
 “datacenter”: “blibli",
 “data_dir”: “/opt/var/consul”,
 “log_level”: “INFO”,
 “bind_addr” : “192.0.1.1”,
 “client_addr” : “192.0.1.1”,
 “start_join” : [ “192.0.0.1”, “192.0.0.2”, “192.0.0.3” ]
 }

Slide 13

Slide 13 text

CENTRALIZED CONFIGURATION START CONSUL AGENT consul agent -ui -config-dir /opt/consul/config ▸ All consul configuration saved as json file in a directory. ▸ Consul automatically read all json file in config directory.

Slide 14

Slide 14 text

CENTRALIZED CONFIGURATION

Slide 15

Slide 15 text

SPRING CLOUD CENTRALIZED CONFIGURATION

Slide 16

Slide 16 text

CENTRALIZED CONFIGURATION ADD CONSUL DEPENDENCY org.springframework.cloud spring-cloud-starter-consul-config

Slide 17

Slide 17 text

CENTRALIZED CONFIGURATION ADD CONSUL CONFIGURATION (BOOTSTRAP.PROPERTIES) spring.application.name=blibli-demo spring.cloud.consul.config.fail-fast=true spring.cloud.consul.host=localhost spring.cloud.consul.port=8500

Slide 18

Slide 18 text

DEMO

Slide 19

Slide 19 text

CENTRALIZED CONFIGURATION REFERENCES ▸ https://www.consul.io/ ▸ https://cloud.spring.io/spring-cloud-config/ ▸ https://cloud.spring.io/spring-cloud-consul/ ▸ https://spring.io/guides/gs/centralized-configuration/