Bosh sahifa Wiki Consul

Consul

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.

Agent:

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:

  • HTTP;
  • TCP;
  • command;
  • TTL;
  • gRPCga mos tekshiruv;
  • platformaga xos check.

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.

Client:

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:

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.

Proxy:

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

Access Control List:

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