Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HashiCorp Consul
Search
Heraud Kevin
May 18, 2017
Technology
21
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HashiCorp Consul
Heraud Kevin
May 18, 2017
More Decks by Heraud Kevin
See All by Heraud Kevin
WebAssembly
aicfr
0
50
Cross Browser Testing
aicfr
0
26
Certificate pinning
aicfr
0
50
Frida : Dynamic instrumentation toolkit
aicfr
0
33
GraphQL
aicfr
0
17
Serverless
aicfr
0
17
Hyperledger Composer
aicfr
0
23
HashiCorp Vault
aicfr
0
25
CDI
aicfr
0
30
Other Decks in Technology
See All in Technology
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
LanceDB入門
mocobeta
9
620
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
130
Genie Codeハンズオン応用編
taka_aki
0
130
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
140
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
110
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
130
AI開発に用いられるHPC技術について
gpuunite_official
0
150
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
330
【GCC2026】鉄拳8でのVFX開発事例
bandainamcostudios
PRO
0
120
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
250
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
490
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
260
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
490
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
660
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
350
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
370
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Transcript
None
Déployer, « scaler » et configurer une application avec Consul
(et docker, consul-template, envconsul, HAProxy, python, …)
None
None
None
None
Provision, secure, and run any infrastructure for any application.
None
Caractéristiques principales Service Discovery (DNS/HTTP) Multi Datacenter KV Storage Failure
Detection + ACL + Web UI + Evènements distribués + « watch » + Métriques / Monitoring + …
Consul = DNS server + etcd + ZooKeeper + Nagios
+ Web UI + …
None
Enregistrement d’un service $ curl \ --request PUT \ --data
@payload.json \ https://consul:8500/v1/agent/service/register { "service": { "id": "api-1", "name": "api", "tags": ["demo"], "address": "127.0.0.1", "port": 5000, "checks": { "name": "Health api", "http": "http://127.0.0.1:5000/api/health", "interval": "10s" } } }
Enregistrement d’un service Ecwid/consul-api OrbitzWorldwide/consul-client gliderlabs/registrator cfg4j kdlan/jconsul
Enregistrement d’un service • SERVICE_5000_NAME=api • SERVICE_CHECK_HTTP=/api/health • SERVICE_CHECK_INTERVAL=15s
Architecture (HA) Gossip protocol : SWIM (Hashicorp Serf) Consensus Protocol
: Raft • Si le client est hors ligne, une seule instance de l’application y sera également • L’application n’a besoin de connaitre qu’une seule adresse : 127.0.0.1:8600
DNS lookup [tag.]<service>.service[.datacenter].<domain> $ dig SRV api.service.consul ; <<>> DiG
9.10.4-P3 <<>> SRV api.service.consul ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52880 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;api.service.consul. IN SRV ;; ANSWER SECTION: api.service.consul. 0 IN SRV 1 1 5000 consul.node.dc1.consul. ;; ADDITIONAL SECTION: consul.node.dc1.consul. 0 IN A 10.0.2.15 ;; Query time: 1 msec ;; SERVER: 10.0.2.15#53(10.0.2.15) ;; WHEN: Thu May 11 13:16:55 UTC 2017 ;; MSG SIZE rcvd: 88
Ajout d’un service --name api-node-1 -P app flask run --host=0.0.0.0
--name api-node-2 -P app flask run --host=0.0.0.0
SRV _service._proto.name. TTL class SRV priority weight port target. Ribbon/Feign
spotify/dns-java
• « Templating » • Rechargement au changement • Intégration
universelle (HAProxy, nginx, …) +
Consul-template + HAProxy
Consul-template {{ range services }} backend {{ .Name }}_backend {{
range service .Name }} server {{ .Node }}-{{ .Port }} {{ .Address }}:{{ .Port }}{{ end }} {{ end }} {{ range services }} acl host_{{ .Name }} hdr_beg(host) -i {{ .Name }}."haproxy.service.consul" use_backend {{ .Name }}_backend if host_{{ .Name }} {{ end }}
Alternatives gliderlabs/connectable 3fs/consul-f5 Consul et IPTables
#cfgfilesless KV Storage
KV Storage (HTTP API) $ curl -X PUT \ -d
50000 \ http://consul:8500/v1/kv/global/config/hazelcast/client/connection_timeout true $ curl http://consul:8500/v1/kv/global/config/hazelcast/client/connection_timeout?raw 50000
KV Storage Ecwid/consul-api OrbitzWorldwide/consul-client cfg4j Magnetme/consultant kdlan/jconsul archaius Library for
configuration management API
III. Configuration Stockez la configuration dans l’environnement https://12factor.net/fr/config envconsul
envconsul $ envconsul -prefix service/$OBJECT_CODE/$ENV -config="/app/config.hcl" flask run --host=0.0.0.0
Script + Interval HTTP + Interval TCP + Interval Time
to Live (TTL) Docker + Interval Failure Detection
Consul watch
Consul watch $ consul watch -type checks -service api /consul/check.sh
None