Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Kuring nyarankeun anjeun maca transkrip laporan Alexander Sigachev Service Discovery dina sistem anu disebarkeun nganggo Konsul salaku conto.

Service Discovery diciptakeun supados kalayan biaya minimal anjeun tiasa nyambungkeun aplikasi énggal ka lingkungan urang anu tos aya. Ngagunakeun Service Discovery, urang tiasa sacara maksimal misahkeun wadah docker atanapi jasa virtual tina lingkungan dimana éta dijalankeun.

Abdi ngabagéakeun sadayana! Abdi Alexander Sigachev, abdi damel di Inventos. Sareng ayeuna kuring bakal ngenalkeun anjeun kana konsép sapertos Service Discovery. Hayu urang tingali Service Discovery nganggo Consul sabagé conto.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Masalah naon anu direngsekeun ku Service Discovery? Service Discovery diciptakeun supados kalayan biaya minimal anjeun tiasa nyambungkeun aplikasi énggal ka lingkungan urang anu tos aya. Ngagunakeun Service Discovery, urang tiasa sacara maksimal misahkeun wadah docker atanapi jasa virtual tina lingkungan dimana éta dijalankeun.

Kumaha rupana? Dina conto klasik dina wéb, ieu mangrupikeun tungtung payun anu nampi pamundut pangguna. Lajeng eta ruteu ka backend nu. Dina conto ieu, beban-balancer ieu balances dua backends.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Di dieu urang ningali yén urang ngaluncurkeun conto katilu tina aplikasi. Sasuai, nalika aplikasi dimimitian, éta ngadaptar sareng Service Discovery. Service Discovery ngabéjaan load-balancer. Load-balancer ngarobah config na otomatis tur backend anyar ieu nempatkeun kana operasi. Ku cara kieu, backends bisa ditambahkeun, atawa, Sabalikna, kaasup ti pagawean.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Naon deui anu tiasa dilakukeun sareng Service Discovery? Service Discovery tiasa nyimpen konfigurasi nginx, sertipikat, sareng daptar server backend anu aktip.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander SigachevService Discovery ogé ngamungkinkeun anjeun pikeun ngadeteksi gagal sareng ngadeteksi gagal. Naon skéma anu mungkin pikeun ngadeteksi gagal?

  • Aplikasi ieu anu kami kembangkeun sacara otomatis ngabéjaan Service Discovery yén éta masih tiasa dianggo.
  • Service Discovery, pikeun bagian na, polling aplikasi pikeun kasadiaan.
  • Atanapi kami nganggo skrip atanapi aplikasi pihak katilu anu mariksa kasadiaan aplikasi kami sareng ngabéjaan Service Discovery yén sadayana henteu kunanaon sareng tiasa jalan, atanapi, sabalikna, yén sadayana goréng sareng conto aplikasi ieu kedah dikaluarkeun tina kasaimbangan.

Unggal skéma tiasa dianggo gumantung kana parangkat lunak anu kami anggo. Salaku conto, urang nembé ngamimitian ngembangkeun proyék énggal, teras urang tiasa kalayan gampang nyayogikeun skéma nalika aplikasi urang ngabéjaan Service Discovery. Atanapi urang tiasa nyambungkeun yén Service Discovery mariksa.

Upami urang diwariskeun aplikasina atanapi dikembangkeun ku batur, maka pilihan katilu cocog nalika urang nyerat panangan, sareng sadayana ieu otomatis asup kana padamelan urang.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Ieu salah sahiji conto. Load-balancer dina bentuk nginx rebooted. Ieu mangrupikeun utilitas pilihan anu disayogikeun sareng Konsul. Ieu konsul-template. Urang ngajelaskeun aturan. Kami nyarios yén kami nganggo citakan (Golang Template Engine). Nalika kajadian lumangsung, nalika béwara yén parobahan geus lumangsung, éta regenerated sarta paréntah "reload" dikirim ka Service Discovery. Conto pangbasajanna nyaéta nalika nginx dikonfigurasi deui ku hiji acara sareng di-restart.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Naon Konsul?

  • Anu mimiti, ieu Service Discovery.

  • Éta gaduh mékanisme cek kasadiaan - Mariksa Kaséhatan.

  • Éta ogé gaduh Toko KV.

  • Sareng dumasar kana kamampuan ngagunakeun Multi Datacenter.

Naon anu tiasa dianggo sadayana ieu? Dina KV Store urang tiasa nyimpen conto configs. Mariksa Kaséhatan urang tiasa pariksa jasa lokal sareng ngabéjaan. Multi Datacenter dianggo supados peta jasa tiasa diwangun. Salaku conto, Amazon gaduh sababaraha zona sareng rute lalu lintas dina cara anu paling optimal supados henteu aya pamundut anu teu perlu antara pusat data, anu ditagihkeun sacara misah ti lalu lintas lokal sareng, sasuai, gaduh latency kirang.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Hayu urang ngartos saeutik ngeunaan istilah nu dipaké dina Konsul.

  • Konsul mangrupikeun jasa anu ditulis dina Go. Salah sahiji kaunggulan program Go nyaéta 1 file binér anu anjeun unduh. Diluncurkeun ti mana waé sareng anjeun henteu ngagaduhan katergantungan.
  • Teras, nganggo konci, urang tiasa ngamimitian jasa ieu dina modeu klien atanapi dina modeu server.
  • Ogé, atribut "datacenter" ngamungkinkeun anjeun nyetél bandéra anu mana pusat data server ieu milik.
  • Konsensus - dumasar kana protokol rakit. Mun saha kabetot, Anjeun bisa maca leuwih lengkep tentang ieu dina ramatloka Konsul. Ieu protokol nu ngidinan Anjeun pikeun nangtukeun pamimpin jeung nangtukeun mana duit dianggap valid tur diaksés.
  • Gosip nyaéta protokol anu ngamungkinkeun interaksi antara titik. Leuwih ti éta, sistem ieu desentralisasi. Dina hiji pusat data, sadaya titik komunikasi sareng tatanggana. Jeung, sasuai, informasi ngeunaan kaayaan ayeuna dikirimkeun ka unggal lianna. Urang bisa nyebutkeun yén ieu téh gosip antara tatangga.
  • LAN Gosip - bursa data lokal antara tatanggana dina puseur data sarua.
  • WAN Gossip - dianggo nalika urang kedah nyinkronkeun inpormasi antara dua pusat data. Inpormasi ngalir antara titik anu ditandaan salaku server.
  • RPC - ngidinan Anjeun pikeun ngaéksekusi requests ngaliwatan klien dina server a.

Katerangan ngeunaan RPC. Hayu urang nyebutkeun Konsul ngajalankeun salaku klien dina mesin virtual atawa server fisik. Urang ngahubungan anjeunna lokal. Teras klien lokal nyuhunkeun inpormasi ti server sareng disingkronkeun. Gumantung kana setelan, informasi bisa Dimeunangkeun tina cache lokal, atawa bisa nyingkronkeun jeung pamimpin, jeung master server.

Dua skéma ieu gaduh pro sareng kontra. Upami urang damel sareng cache lokal, éta gancang. Upami urang damel sareng data anu disimpen dina server, peryogi langkung lami, tapi urang nampi inpormasi anu langkung relevan.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Upami anjeun ngagambarkeun ieu sacara grafis, maka ieu mangrupikeun gambar situs éta. Urang nempo yén urang boga tilu Masters ngajalankeun. Hiji ditandaan ku tanda bintang salaku pamimpin. Dina conto ieu, aya tilu klien nu tukeur informasi lokal saling via UDP / TCP. Sareng inpormasi antara pusat data ditransferkeun antara server. Di dieu klien berinteraksi saling lokal.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

API naon anu disayogikeun Konsul? Pikeun kéngingkeun inpormasi, Konsul gaduh dua jinis API.

Ieu teh DNS API. Sacara standar, Konsul jalan dina port 8600. Urang bisa ngonpigurasikeun pamundut proxying sarta nyadiakeun aksés ngaliwatan resolusi lokal, ngaliwatan DNS lokal. Urang tiasa naroskeun ku domain sareng nampi inpormasi alamat IP pikeun ngaréspon.

HTTP API - atanapi urang lokal bisa menta informasi ngeunaan layanan husus dina port 8500 sarta nampa respon JSON, naon IP server boga, naon host, naon port didaptarkeun. Sareng inpormasi tambahan tiasa dikirimkeun via token.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Naon anu anjeun peryogikeun pikeun ngajalankeun Konsul?

Dina pilihan kahiji, dina mode pamekar urang nunjukkeun bandéra yén ieu téh mode pamekar. Agen dimimitian salaku server. Sarta eta ngalakukeun sakabéh fungsi bebas dina hiji mesin. Merenah, gancang sareng praktis henteu aya setélan tambahan anu diperyogikeun pikeun mimiti.

Modeu kadua nyaéta peluncuran dina produksi. Ieu dimana ngamimitian meunang saeutik pajeulit. Upami urang henteu ngagaduhan versi konsul, maka urang kedah nyangking mesin munggaran kana bootstrap, nyaéta mesin ieu, anu bakal nyandak tanggung jawab pamimpin. Urang ngangkat éta, teras urang ngangkat conto kadua server, ngalirkeun eta informasi dimana master urang aya. Urang angkat anu katilu. Saatos urang gaduh tilu mesin up, urang balikan deui dina modeu normal dina mesin munggaran ti bootstrap ngajalankeun. Data disingkronkeun sareng klaster awal parantos naék.

Disarankeun ngajalankeun tilu nepi ka tujuh instansi dina modeu server. Ieu disababkeun ku kanyataan yén upami jumlah server naék, waktosna pikeun nyingkronkeun inpormasi antara aranjeunna ningkat. Jumlah titik kedah ganjil pikeun mastikeun quorum.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Kumaha Cék Kaséhatan disadiakeun? Urang nulis aturan verifikasi dina bentuk Json dina diréktori konfigurasi Konsul. Pilihan kahiji nyaéta kasadiaan domain google.com dina conto ieu. Sareng kami nyarios yén pamariksaan ieu kedah dilakukeun dina interval 30 detik. Ku cara kieu urang pariksa yen titik urang boga aksés ka jaringan éksternal.

Pilihan kadua nyaéta mariksa diri. Kami nganggo curl biasa pikeun nelepon localhost dina port anu ditangtukeun dina interval 10 detik.

Cék ieu diringkeskeun sareng dikirim ka Service Discovery. Dumasar kasadiaan, titik-titik ieu teu kaasup atanapi muncul dina daptar mesin anu sayogi sareng leres.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Konsul ogé nyadiakeun antarbeungeut UI, nu dibuka ku bandéra misah tur bakal sadia dina mesin. Hal ieu ngamungkinkeun anjeun ningali inpormasi sareng anjeun ogé tiasa ngadamel sababaraha parobihan.

Dina conto ieu, tab "Service" dibuka. Ditingalikeun aya tilu jasa anu ngajalankeun, salah sahijina nyaéta Konsul. Jumlah cék anu dilakukeun. Sareng aya tilu pusat data dimana mesinna aya.

Service Discovery dina sistem disebarkeun ngagunakeun conto Konsul. Alexander Sigachev

Ieu conto tina tab Nodes. Kami ningali yén aranjeunna gaduh nami sanyawa ngalibetkeun pusat data. Éta ogé nunjukkeun jasa mana anu dijalankeun, nyaéta urang ningali yén teu aya tag anu disetél. Tag tambahan ieu tiasa masihan sababaraha inpormasi anu tiasa dianggo ku pamekar pikeun nangtukeun parameter tambahan.

Anjeun ogé tiasa ngirimkeun inpormasi ka Konsul ngeunaan status disk sareng beban rata-rata.

patarosan

Patarosan: Simkuring gaduh wadahna docker, kumaha carana make eta kalawan Konsul?

Jawaban: Aya sababaraha pendekatan pikeun wadah docker. Salah sahiji anu paling umum nyaéta ngagunakeun wadah docker pihak katilu anu tanggung jawab pikeun pendaptaran. Dina ngamimitian, soket docker dialirkeun ka dinya. Kabéh pendaptaran wadahna sarta acara de-publikasi kacatet dina Konsul.

Patarosan: Janten Konsul nyalira ngamimitian wadah docker?

Jawaban: Henteu. Kami ngajalankeun wadah docker. Sareng nalika ngonpigurasikeun kami nunjukkeun - ngadangukeun stop kontak sapertos kitu. Ieu kirang langkung sami sareng kumaha urang damel sareng sertipikat, nalika urang unggah inpormasi ngeunaan dimana sareng naon anu urang gaduh.

Patarosan: Tétéla yén di jero wadah Docker anu urang cobian sambungkeun ka Service Discovery kedah aya sababaraha jinis logika anu tiasa ngirim data ka Konsul?

Ngajawab: Teu bener. Nalika éta dimimitian, urang lulus variabel ngaliwatan variabel lingkungan. Sebutkeun nami jasa, port jasa. Register ngadangukeun inpormasi ieu sareng ngalebetkeun kana Konsul.

Patarosan: Abdi gaduh patarosan sanés ngeunaan UI. Urang nyebarkeun UI, contona, dina server produksi. Kumaha upami kaamanan? Dimana data disimpen? Éta mungkin pikeun kumaha bae ngumpulkeun data?

Jawaban: Dina UI aya data tina database sareng ti Service Discovery. Urang nyetel sandi dina setélan sorangan.

Patarosan: Naha ieu tiasa diterbitkeun dina Internét?

Jawaban: Sacara standar, Konsul dimimitian dina localhost. Pikeun nyebarkeun dina Internét, anjeun kedah masang sababaraha jinis proxy. Kami tanggung jawab aturan kaamanan sorangan.

Patarosan: Dupi éta nyadiakeun data sajarah out of the box? Éta pikaresepeun pikeun ningali statistik ngeunaan Cék Kaséhatan. Anjeun oge bisa nangtukeun jenis panyakitna masalah lamun server mindeng gagal.

Jawaban: Kaula teu yakin aya rinci ngeunaan cék aya.

Patarosan: Kaayaan ayeuna henteu penting pisan tibatan dinamika.

Jawaban: Pikeun analisis - enya.

Patarosan: Naha langkung saé henteu nganggo Service Discovery pikeun docker Konsul?

Jawaban: Abdi henteu nyarankeun ngagunakeun éta. Tujuan tina laporan éta pikeun ngawanohkeun naon konsep misalna aya. Dina sajarahna, éta parantos jalan, dina pamanggih kuring, kana versi 1st. Ayeuna parantos aya solusi anu langkung lengkep, contona, Kubernetes, anu ngagaduhan sadayana ieu di handapeun tiung. Salaku bagian tina Kubernetes Service Discovery langkung handap tibatan Etcd. Tapi Kaula teu wawuh jeung eta sakumaha Kami kalawan Konsul. Ku alatan éta, kuring mutuskeun nyieun Service Discovery ngagunakeun Konsul salaku conto.

Patarosan: Naha skéma sareng server pamimpin ngalambatkeun ngamimitian aplikasi sacara gembleng? Sareng kumaha Konsul nangtukeun pamimpin énggal upami ieu bohong?

Jawaban: Aranjeunna gaduh sadayana protokol anu dijelaskeun. Upami anjeun kabetot, anjeun tiasa maca.

Patarosan: Konsul tindakan salaku server full-fledged pikeun urang jeung sagala requests ngapung ngaliwatan eta?

walon: Teu meta salaku server full-fledged, tapi nyokot leuwih hiji zone husus. Biasana ditungtungan ku jasa.konsul. Lajeng urang ngaléngkah logis. Kami henteu nganggo nami domain dina produksi, tapi infrastruktur internal, anu biasana disumputkeun tukangeun cache server upami urang damel nganggo DNS.

Patarosan: Maksudna, upami urang hoyong ngaksés pangkalan data, teras kumaha waé urang bakal narik Konsul pikeun milarian pangkalan data ieu heula, leres?

Ngajawab: Enya. Upami urang damel nganggo DNS, maka jalanna sami sareng tanpa Konsul nalika urang nganggo nami DNS. Ilaharna, aplikasi modéren henteu narik nami domain dina unggal pamundut, sabab kami dipasang nyambung, sadayana jalan sareng dina waktos anu caket urang praktis henteu nganggo éta. Upami sambungan rusak, teras enya, urang naroskeun deui dimana dasarna sareng angkat ka dinya.

obrolan produk hashicorp - Obrolan pamaké Hashicorp: Konsul, Nomad, Terraform

PS Ngeunaan cek kaséhatan. Konsul, sapertos Kubernetes, nganggo sistem anu sami pikeun mariksa status kasalametan jasa dumasar kana status kode.

200 OK for healthy
503 Service Unavailable for unhealthy

sumber:
https://www.consul.io/docs/agent/checks.html
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
https://thoslin.github.io/microservice-health-check-in-kubernetes/

sumber: www.habr.com

Tambahkeun komentar