Consul — distributed tizimlarda service discovery, health checking, key-value configuration va service-to-service aloqani boshqarishga mo‘ljallangan platforma.
Consul service instance’larning qayerda ishlayotganini va sog‘lomligini registry’da saqlaydi. Clientlar DNS yoki HTTP API orqali kerakli service endpointlarini topadi.
Service discovery
Dynamic infratuzilmada server IP manzillari o‘zgaradi.
Application hardcoded manzilga tayanmasdan service nomi orqali endpoint topadi.
Masalan:
payments.service
registry’dan sog‘lom instance’lar manziliga yechiladi.
Agent
Consul agent har node’da client yoki server mode’da ishlashi mumkin.
- local service registration;
- health check;
- DNS;
- API;
- cluster communication
vazifalarini bajaradi.
Application odatda local agent bilan ishlaydi.
Server
Consul serverlar cluster state’ini saqlaydi va consensus orqali boshqaradi.
Ular:
uchun javob beradi.
Yuqori mavjudlik uchun bir nechta server kerak.
Datacenter
Consul cluster’i datacenter tushunchasiga ega.
Bir datacenter ichida serverlar kuchliroq konsistent boshqaruv qiladi.
Bir nechta datacenter o‘rtasida service discovery va federation tashkil qilinishi mumkin.
WAN uzilishi mahalliy datacenter ishini to‘liq to‘xtatmasligi kerak.
Service registration
Service quyidagi ma’lumot bilan ro‘yxatdan o‘tadi:
Bir service nomi ostida ko‘p instance bo‘lishi mumkin.
Health check
Health check instance traffic qabul qilishga tayyorligini bildiradi.
Turlari:
Check passing, warning yoki critical holatga ega bo‘lishi mumkin.
DNS interfeysi
Client service nomini DNS orqali so‘raydi.
DNS javobi sog‘lom instance’larni qaytaradi.
Afzalligi — ko‘p application maxsus SDKsiz ishlaydi.
DNS cache va TTL sabab nosog‘lom instance manzili qisqa vaqt saqlanishi mumkin.
HTTP API
API service catalog, health va configurationni batafsil query qilish imkonini beradi.
bo‘yicha endpointlarni olishi mumkin.
API access ACL bilan himoyalanadi.
Catalog
Catalog node va service’lar haqidagi umumiy registry.
U health holati bilan birga ishlaydi.
Catalogga yozilgan, ammo checki yo‘q service avtomatik sog‘lom deb qabul qilinishi policyga bog‘liq.
Key-value store
Consul oddiy key-value configuration saqlashi mumkin.
Qo‘llanishlar:
Katta object storage yoki database o‘rnida ishlatilmaydi.
Secretni oddiy KVga saqlash access va encryption talab qiladi; maxsus secret manager afzal.
Session va lock
Session node yoki health holatiga bog‘langan vaqtinchalik obyekt.
KV keyni session bilan lock qilish orqali distributed lock yoki leader election qurilishi mumkin.
Network partition va session expiry sabab application fencing yoki ownershipni ehtiyotkor boshqarishi kerak.
Service mesh
Consul service mesh service’lar orasidagi trafficni proxy orqali boshqarishi mumkin.
Imkoniyatlar:
- service identity;
- mutual TLS;
- authorization;
- traffic routing;
- observability;
- intentions yoki policy.
Application to‘g‘ridan-to‘g‘ri boshqa service manzilini bilmasligi mumkin.
Sidecar proxy
Har application instance yonida local proxy ishlaydi.
Application local proxyga ulanadi.
ni bajaradi.
Sidecar resource va operatsion murakkablik qo‘shadi.
Service identity
Service mesh certificate orqali workload identity beradi.
Identity IP manzilga emas, service nomi va policyga bog‘liq.
Certificate rotation avtomatik boshqarilishi mumkin.
Compromised node va control plane xavfi alohida hisobga olinadi.
ACL
huquqlarini cheklaydi.
Har agent va application minimal token oladi.
Management token application configida saqlanmaydi.
Gossip protocol
Node membership va ayrim ma’lumotlar gossip orqali tarqalishi mumkin.
Bu katta clusterda markaziy broadcast yukini kamaytiradi.
Gossip encryption va network segmentatsiyasi clusterga begona node qo‘shilishini qiyinlashtiradi.
Consensus
Serverlar muhim state o‘zgarishlari uchun consensus ishlatadi.
Leader write’larni muvofiqlashtiradi.
Majority yo‘qolsa eski ma’lumotni o‘qish mumkin bo‘lsa ham yangi consistent write cheklanishi mumkin.
Deregistration
Ephemeral service to‘xtaganda registry’dan o‘chirilishi kerak.
Aks holda stale endpoint qoladi.
Agent lifecycle, TTL va critical holatdan keyin avtomatik deregistration siyosati ishlatilishi mumkin.
Prepared query
Service discovery qoidalari prepared query sifatida saqlanishi mumkin. U failover, tag, nearest datacenter va health filterlarni bir nom ostida birlashtiradi.
Cache
Client yoki local agent discovery javobini qisqa muddat cache qilishi mumkin. TTL juda uzun bo‘lsa nosog‘lom endpoint saqlanadi, juda qisqa bo‘lsa control plane query yuki oshadi.
Backup va restore
Consul server state’i muntazam snapshot qilinadi. Restore yangi cluster identifikatori, encryption key, ACL va datacenter konfiguratsiyasi bilan mos bajariladi.
Network partition
Partition paytida node membership va health ma’lum vaqt noaniq bo‘lishi mumkin. Application faqat registry javobiga emas, request timeout va retry siyosatiga ham ega bo‘ladi.
Node maintenance
Node rejalashtirilgan maintenance holatiga o‘tkazilganda uning service’lari discovery javobidan chiqarilishi mumkin. Bu trafficni to‘xtatib, hostni xavfsiz yangilashga yordam beradi. Maintenance tugagach health check tiklanadi va service discovery javoblariga qayta qo‘shiladi.
Bog‘liq tushunchalar
Service discovery, Service registry, Health check, DNS, Key-value store, Service mesh, Sidecar proxy, ACL, Consensus, Nomad, Vault