Orchestrator don MySQL: me yasa ba za ku iya gina aikin da zai iya jurewa ba tare da shi ba

Duk wani babban aiki ya fara da sabar sabar guda biyu. Da farko akwai uwar garken DB guda ɗaya, sannan aka ƙara bayi a ciki don auna karatun. Sannan - tsaya! Maigida ɗaya ne, amma bayi da yawa; idan daya daga cikin bayi ya tafi, to komai zai yi kyau, amma idan maigidan ya tafi, zai yi kyau: downtime, admins suna ƙoƙarin tayar da uwar garken. Me za a yi? Ajiye maigida. Abokin aikina Pavel ya riga ya rubuta game da wannan labarin, Ba zan maimaita ba. Madadin haka, zan gaya muku dalilin da yasa kuke buƙatar Orchestrator don MySQL!

Bari mu fara da babbar tambaya: "Ta yaya za mu canza lambar zuwa sabon na'ura lokacin da maigidan ya tafi?"

  • Ina son makirci tare da VIP (Virtual IP) mafi, za mu yi magana game da shi a kasa. Shi ne mafi sauƙi kuma mafi bayyane, kodayake yana da ƙayyadaddun ƙayyadaddun ƙayyadaddun bayanai: maigidan da za mu ajiye dole ne ya kasance a cikin sashin L2 tare da sabon na'ura, wato, zamu iya manta game da DC na biyu. Kuma, a cikin hanyar jin dadi, idan kun bi ka'idar cewa babban L2 yana da mugunta, saboda L2 kawai ta kowace tara, kuma L3 yana tsakanin raƙuman, kuma irin wannan makirci yana da ƙarin hani.
  • Kuna iya rubuta sunan DNS a cikin lambar kuma ku warware shi ta hanyar /etc/hosts. A gaskiya ma, ba za a sami ƙuduri ba. Amfanin makirci: babu wata ƙayyadaddun ƙayyadaddun halayen hanyar farko, wato, yana yiwuwa a tsara giciye-DC. Amma a bayyane tambaya ta taso: ta yaya da sauri za mu iya isar da canjin zuwa /etc/hosts via Puppet-Ansible?
  • Kuna iya canza hanya ta biyu kadan: shigar da caching DNS akan duk sabar yanar gizo, ta inda lambar za ta je babban bayanan bayanai. Kuna iya saita TTL 60 don wannan shigarwa a cikin DNS. Da alama idan an aiwatar da shi daidai, hanyar tana da kyau.
  • Makirci tare da gano sabis, yana nuna amfani da Consul da sauransu.
  • Zaɓin mai ban sha'awa tare da ProxySQL. Kuna buƙatar tafiyar da duk zirga-zirga zuwa MySQL ta hanyar ProxySQL; ProxySQL kanta na iya tantance wanene maigidan. Af, zaku iya karanta game da ɗayan zaɓuɓɓukan amfani da wannan samfur a cikin na labarin.

Marubucin Orchestrator, yana aiki a Github, ya fara aiwatar da tsarin farko tare da VIP, sannan ya canza shi zuwa makirci tare da consul.

Tsarin gine-gine na yau da kullun:

Orchestrator don MySQL: me yasa ba za ku iya gina aikin da zai iya jurewa ba tare da shi ba
Nan da nan zan bayyana filayen yanayi waɗanda ke buƙatar la'akari:

  • Ba za a yi rajistar adireshin VIP a cikin saitin kan kowane sabar ba. Bari mu yi tunanin wani yanayi: maigidan ya sake kunnawa, kuma yayin da ake lodawa, Orchestrator ya shiga yanayin rashin nasara kuma ya sanya ɗaya daga cikin bayi ya zama master; sai tsohon maigida ya tashi, yanzu kuma VIP na kan motoci biyu. Wannan ba daidai ba ne.
  • Don mawaƙa, kuna buƙatar rubuta rubutun don kiran tsohon maigida da sabon ubangida. A kan tsohon maigidan kana buƙatar gudu ifdown, kuma a kan sabon maigidan - ifup vip. Zai yi kyau kuma a haɗa a cikin wannan rubutun cewa a cikin yanayin rashin nasara, tashar jiragen ruwa a kan tsohuwar maɓalli ta tsohuwa tana kashewa kawai don guje wa kowane rarrabuwa.
  • Bayan Orchestrator ya kira rubutun ku don fara cire VIP da / ko kashe tashar jiragen ruwa a kan maɓalli, sannan kuma a kira rubutun haɓakawa na VIP akan sabon master, kar ku manta da yin amfani da umarnin arping don gaya wa kowa cewa sabon VIP ya kasance yanzu. nan.
  • Duk bayi yakamata su karanta_only=1, kuma da zarar kun tallata bawa ga ubangiji, yakamata ya karanta_only=0.
  • Kar ku manta cewa duk wani bawa da muka zaba don wannan zai iya zama jagora (Makasanta yana da tsarin fifiko wanda bawa zai yi la'akari da shi a matsayin dan takarar sabon ubangiji a farkon wuri, wanda a matsayi na biyu, kuma wane bawa ne ya kamata ya zama mai mulki. ba za a zaba kwata-kwata a kowane hali master). Idan bawa ya zama shugaba, to kayan bawa zai zauna akansa kuma a kara nauyin maigida, sai a yi la'akari da haka.

Me yasa kuke buƙatar Orchestrator idan ba ku da ɗaya?

  • Orchestrator yana da kyakkyawar mu'amala mai hoto mai sauƙin amfani wacce ke nuni da duka topology (duba hoton allo a ƙasa).
  • Orchestrator na iya bin diddigin abin da bayi ke baya, kuma inda kwafi ya lalace gabaɗaya (muna da rubutun da aka haɗe zuwa Orchestrator don aika SMS).
  • Orchestrator ya gaya muku waɗanne bayi ke da kuskuren GTID.

Interface Mai Kaɗa:

Orchestrator don MySQL: me yasa ba za ku iya gina aikin da zai iya jurewa ba tare da shi ba
Menene kuskuren GTID?

Akwai manyan buƙatu guda biyu don Orchestrator don yin aiki:

  • Ya zama dole a kunna GTID na pseudo akan duk injuna a cikin gungu na MySQL; muna da kunna GTID.
  • Wajibi ne a sami nau'in binlogs guda ɗaya a ko'ina, zaku iya amfani da sanarwa. Muna da tsari wanda maigidan da yawancin bayi ke da Row, kuma biyu a tarihi sun kasance a cikin yanayin gauraya. Sakamakon haka, Orchestrator kawai ba ya son haɗa waɗannan bayi da sabon ubangidan.

Ka tuna cewa abu mafi mahimmanci a cikin bawa na samarwa shine daidaito da maigidan! Idan kuna da ID na Kasuwancin Duniya (GTID) wanda aka kunna akan maigidanku da bawa, to zaku iya amfani da aikin gtid_subset don gano ko ainihin buƙatun canjin bayanai an aiwatar da su akan waɗannan injinan. Kuna iya karanta ƙarin game da wannan a nan.

Don haka, Orchestrator yana nuna maka ta hanyar kuskuren GTID cewa akwai ma'amala akan bawa da ba a kan maigidan ba. Me yasa hakan ke faruwa?

  • Read_only=1 ba a kunna bawan, wani ya haɗa kuma ya kammala buƙatar canza bayanai.
  • Super_read_only=1 ba a kunna bawa ba, sai admin, bayan ya ruɗe uwar garken, ya shiga ya aiwatar da buƙatar a can.
  • Idan kun yi la'akari da duka abubuwan da suka gabata, to akwai ƙarin dabara guda ɗaya: a cikin MySQL, buƙatun don flush binlogs shima yana zuwa binlog ɗin, don haka a farkon farawa, kuskuren GTID zai bayyana akan maigidan da duk bayi. Yadda za a kauce wa wannan? Perona-5.7.25-28 ya gabatar da saitin binlog_skip_flush_commands=1, wanda ya hana rubuta ruwa zuwa binlogs. Akwai wanda aka kafa akan gidan yanar gizon mysql.com kwaro.

Bari in taƙaita duka abubuwan da ke sama. Idan ba kwa son amfani da Orchestrator a yanayin gazawa tukuna, to sanya shi cikin yanayin kallo. Sannan koyaushe za ku sami taswirar mu'amalar injin MySQL da bayanan gani game da nau'in maimaitawa akan kowace na'ura, ko bayin suna da baya, kuma mafi mahimmanci, yadda suke daidai da maigidan!

Tambayar a bayyane ita ce: "Yaya ya kamata Orchestrator yayi aiki?" Dole ne ya zabi sabon ubangida daga cikin bayin da ke yanzu, sannan ya sake hada dukkan bayi da shi (wannan shi ne abin da ake bukata na GTID; idan ka yi amfani da tsohon tsarin da binlog_name da binlog_pos, sai ka canza bawa daga maigidan na yanzu zuwa wani sabo. shi ne kawai ba zai yiwu ba!). Kafin mu sami Orchesttor, Na taɓa yin duk wannan da hannu. Tsohon maigidan yana rataye ne saboda mai kula da Adaptec mai buggy; yana da bayi kusan 10. Ina buƙatar canja wurin VIP daga maigidan zuwa ɗaya daga cikin bayi kuma in sake haɗa duk sauran bayi da shi. Nawa consoles na bude, umarni nawa a lokaci guda na shiga... Sai da na jira har karfe 3 na safe, na cire lodin daga dukkan bayi sai biyu, na yi injin farko daga cikin master biyu, nan da nan na haɗa na'ura ta biyu. gare shi, don haka ku haɗa dukan sauran bayi ga sabon ubangijin ku mayar da kaya. Gabaɗaya, munanan...

Ta yaya Orchestrator ke aiki idan ya shiga yanayin gazawa? Ana kwatanta wannan cikin sauƙi ta misalin yanayin da muke so mu mai da maigida ya zama na'ura mai ƙarfi, mafi zamani fiye da yadda muke da shi a yanzu.

Orchestrator don MySQL: me yasa ba za ku iya gina aikin da zai iya jurewa ba tare da shi ba
Hoton yana nuna tsakiyar tsari. Me aka riga aka yi har zuwa wannan lokaci? Muka ce muna so mu mai da wani bawa sabon ubangida, Orchestrator ya fara haɗa duk sauran bayi da shi kawai, sabon ubangidan yana aiki azaman injin wucewa. Da wannan makirci, babu kurakurai da suka faru, duk bayi suna aiki, Orchestrator ya cire VIP daga tsohon maigidan, ya tura shi zuwa sabon, ya karanta_only=0 kuma ya manta da tsohon maigidan. Duka! Lokacin raguwar sabis ɗinmu shine lokacin canja wurin VIP, wanda shine 2-3 seconds.

Shi ke nan na yau, na gode kowa. Za a sami labari na biyu game da Orchestrator nan ba da jimawa ba. A cikin sanannen fim din Soviet "Garage," wani hali ya ce, "Ba zan ci gaba da bincike tare da shi ba!" Don haka, Orchesttor, zan tafi tare da ku don bincike!

source: www.habr.com

Add a comment