ኦርኬስትራ እና ቪአይፒ ለ MySQL ክላስተር እንደ HA መፍትሄ

በሲቲሞቢል የ MySQL ዳታቤዝ እንደ ዋና ቋሚ የውሂብ ማከማቻችን እንጠቀማለን። ለተለያዩ አገልግሎቶች እና ዓላማዎች በርካታ የውሂብ ጎታ ስብስቦች አሉን።

የጌታው ቋሚ መገኘት የአጠቃላይ ስርዓቱን እና የነጠላ ክፍሎቹን አፈፃፀም ወሳኝ አመላካች ነው. የማስተርስ ውድቀት በሚከሰትበት ጊዜ የራስ-ሰር ክላስተር ማገገም የአደጋ ምላሽ ጊዜን እና የስርዓት መቋረጥ ጊዜን በእጅጉ ይቀንሳል። በዚህ ጽሑፍ ውስጥ ለ MySQL ክላስተር ከፍተኛ ተገኝነት (HA) ንድፍን በዚህ መሠረት እመለከታለሁ። MySQL ኦርኬስትራ እና ምናባዊ አይፒ አድራሻዎች (ቪአይፒ)።

ኦርኬስትራ እና ቪአይፒ ለ MySQL ክላስተር እንደ HA መፍትሄ

ቪአይፒ ላይ የተመሠረተ HA መፍትሔ

በመጀመሪያ ፣ የመረጃ ማከማቻ ስርዓታችን ምን እንደሆነ በአጭሩ እነግርዎታለሁ።

ክላሲክ የማባዛት ዘዴን ከአንድ ፅሁፍ ተደራሽ የሆነ ዋና እና በርካታ ተነባቢ-ብቻ ቅጂዎችን እንጠቀማለን። ክላስተር መካከለኛ ጌታን ሊይዝ ይችላል - መስቀለኛ መንገድ ቅጂ እና ለሌሎች ዋና። ደንበኞች በHAProxy በኩል ቅጂዎችን ያገኛሉ፣ ይህም የጭነት ስርጭትን እና ቀላል ልኬትን እንኳን ይፈቅዳል። የHAProxy አጠቃቀም በታሪካዊ ምክንያቶች የተነሳ ነው፣ እና በአሁኑ ጊዜ ወደ ProxySQL በመሰደድ ላይ ነን።

ላይ ተመስርተው ማባዛት በከፊል-የተመሳሰለ ሁነታ ይከናወናል GTID. ይህ ማለት ቢያንስ አንድ ቅጂ አንድ ግብይት እንደ ስኬታማ ከመቆጠሩ በፊት መግባት አለበት። ይህ የማባዛት ሁነታ የማስተር ኖድ ውድቀት በሚከሰትበት ጊዜ በአፈፃፀም እና በመረጃ ደህንነት መካከል ጥሩ ሚዛን ይሰጣል። በመሠረቱ ሁሉም ለውጦች ከዋናው ወደ ቅጂዎች እየተጠቀሙ ነው Row Based Replication (RBR), ግን አንዳንድ አንጓዎች ሊኖራቸው ይችላል mixed binlog format.

ኦርኬስትራተሩ በየጊዜው የክላስተር ቶፖሎጂን ሁኔታ ያሻሽላል, የተቀበለውን መረጃ ይመረምራል, እና ችግሮች ከተከሰቱ, አውቶማቲክ የማገገም ሂደትን ሊጀምር ይችላል. በተለያዩ መንገዶች ሊተገበር ስለሚችል ገንቢው ለሂደቱ ራሱ ተጠያቂ ነው-በቪአይፒ ፣ ዲ ኤን ኤስ ፣ የአገልግሎት ፍለጋ አገልግሎቶችን ወይም በራስ የተፃፉ ስልቶችን በመጠቀም።

አንድ ጌታ ካልተሳካ ወደነበረበት ለመመለስ ቀላሉ መንገድ ተንሳፋፊ ቪአይፒ አድራሻዎችን መጠቀም ነው።

ወደ ፊት ከመሄድዎ በፊት ስለዚህ መፍትሄ ማወቅ ያለብዎት ነገር-

  • ቪአይፒ ከአንድ የተወሰነ አካላዊ አውታረ መረብ በይነገጽ ጋር ያልተገናኘ የአይፒ አድራሻ ነው። መስቀለኛ መንገድ ካልተሳካ ወይም በታቀደለት ጥገና ወቅት፣ በትንሹ የእረፍት ጊዜ ቪአይፒን ወደ ሌላ መገልገያ መቀየር እንችላለን።
  • ምናባዊ አይፒ አድራሻን ነጻ ማድረግ እና መስጠት ርካሽ እና ፈጣን አሰራር ነው።
  • ከቪአይፒ ጋር ለመስራት በኤስኤስኤች በኩል ወደ አገልጋዩ መድረስ ወይም ልዩ መገልገያዎችን መጠቀም ያስፈልግዎታል ፣ ለምሳሌ ፣ keepalived.

ከጠንቋችን ጋር ሊሆኑ የሚችሉ ችግሮችን እንይ እና አውቶማቲክ መልሶ ማግኛ ዘዴ እንዴት እንደሚሰራ አስቡ።

የአውታረ መረብ ግንኙነት ከማስተር ጋር ጠፍቷል፣ ወይም በሃርድዌር ደረጃ ችግር ተፈጥሯል፣ እና አገልጋዩ አይገኝም።

  1. ኦርኬስትራተሩ የክላስተር ቶፖሎጂን ያሻሽላል፣ እያንዳንዱ ቅጂ ጌታው እንደማይገኝ ሪፖርት ያደርጋል። ኦርኬስትራተሩ ለአዲሱ ጌታ ሚና ተስማሚ የሆነ ቅጂን የመምረጥ ሂደቱን ይጀምራል እና ማገገም ይጀምራል.
  2. ቪአይፒን ከአሮጌው ጌታ ለማንሳት እየሞከርን ነው - ያለ ስኬት።
  3. ቅጂው ወደ ጌታው ሚና ይቀየራል። ቶፖሎጂ እንደገና እየተገነባ ነው።
  4. ከቪአይፒ ጋር አዲስ የአውታረ መረብ በይነገጽ ማከል። ቪአይፒን ማስወገድ ስላልተቻለ በየጊዜው ከበስተጀርባ ጥያቄ መላክ እንጀምራለን። የሚያስደስት ARP. የዚህ አይነት ጥያቄ/ምላሽ በተገናኙት ስዊቾች ላይ የአይ ፒ እና ማክ አድራሻ ካርታ ስራን እንዲያሻሽሉ ይፈቅድልዎታል፣ በዚህም የእኛ ቪአይፒ መንቀሳቀሱን ያሳውቃል። ይህ እድልን ይቀንሳል split brain የድሮውን ጌታ ሲመልስ.
  5. ሁሉም አዲስ ግንኙነቶች ወዲያውኑ ወደ አዲሱ ጌታ ይዛወራሉ. የቆዩ ግንኙነቶች አልተሳኩም እና ወደ ዳታቤዝ ተደጋጋሚ ጥሪዎች በመተግበሪያ ደረጃ ይደረጋሉ።

አገልጋዩ በተለመደው ሁነታ እየሰራ ነው, በዲቢኤምኤስ ደረጃ ላይ ውድቀት ተከስቷል

አልጎሪዝም ከቀዳሚው ጉዳይ ጋር ተመሳሳይ ነው: ቶፖሎጂን ማዘመን እና የማገገሚያ ሂደቱን መጀመር. አገልጋዩ ስላለ ቪአይፒን በአሮጌው ጌታ ላይ በተሳካ ሁኔታ እንለቃለን ፣ ወደ አዲሱ እናስተላልፋለን እና ብዙ የ ARP ጥያቄዎችን እንልካለን። የድሮው ጌታ መመለስ የሚቻልበት ሁኔታ እንደገና የተገነባውን ክላስተር እና የመተግበሪያውን አሠራር ላይ ተጽእኖ ማድረግ የለበትም.

ሌሎች ችግሮች

የተባዙ ወይም መካከለኛ ጌቶች ውድቀት አይመራም ወደ አውቶማቲክ ድርጊቶች እና በእጅ ጣልቃ መግባትን ይጠይቃል.

የቨርቹዋል አውታረ መረብ በይነገጽ ሁል ጊዜ በጊዜያዊነት ይታከላል፣ ማለትም፣ አገልጋዩ ዳግም ከተጀመረ በኋላ፣ ቪአይፒ በራስ-ሰር አልተመደበም። እያንዳንዱ የመረጃ ቋት ምሳሌ በነባሪነት በንባብ-ብቻ ሁነታ ይጀምራል፣ ኦርኬስትራተሩ በራስ-ሰር አዲሱን ጌታ ለመፃፍ ይቀይራል እና ለመጫን ይሞክራል። read only በአሮጌው ጌታ ላይ. እነዚህ እርምጃዎች እድሉን ለመቀነስ የታለሙ ናቸው። split brain.

በማገገሚያ ሂደት ውስጥ ችግሮች ሊፈጠሩ ይችላሉ, ይህም ከመደበኛ የክትትል መሳሪያዎች በተጨማሪ በኦርኬስትራ UI በኩል ማሳወቅ አለበት. ይህንን ባህሪ በማከል የ REST ኤፒአይን አስፍተናል (PR በአሁኑ ጊዜ በግምገማ ላይ).

የ HA መፍትሄ አጠቃላይ ንድፍ ከዚህ በታች ቀርቧል.

ኦርኬስትራ እና ቪአይፒ ለ MySQL ክላስተር እንደ HA መፍትሄ

አዲስ ጌታ መምረጥ

ኦርኬስትራ በቂ ብልህ ነው እና ለመምረጥ ይሞክራል። በጣም ተስማሚ የሆነ ቅጂ በሚከተለው መስፈርት መሰረት እንደ አዲስ ማስተር፡-

  • ቅጂው ከጌታው ጀርባ ይዘገያል;
  • የ MySQL ስሪት ማስተር እና ቅጂ;
  • የማባዛት አይነት (RBR, SBR ወይም ድብልቅ);
  • በተመሳሳይ ወይም በተለያዩ የመረጃ ማእከሎች ውስጥ የሚገኝ ቦታ;
  • ተገኝነት errant GTID - በቅጂው ላይ የተፈጸሙ እና በጌታው ላይ ያልሆኑ ግብይቶች;
  • ብጁ ምርጫ ደንቦችም ግምት ውስጥ ይገባሉ.

እያንዳንዱ ፍንጭ ለአንድ ጌታ ተስማሚ እጩ አይደለም. ለምሳሌ፣ ቅጂ ውሂብን ለመጠባበቅ መጠቀም ይቻላል፣ ወይም አገልጋዩ ደካማ የሃርድዌር ውቅር አለው። ኦርኬስትራ ድጋፎች የእጩ ምርጫ ምርጫዎችዎን በጣም ከተመረጡት እስከ ችላ ከተባሉት ማበጀት የሚችሉባቸው በእጅ ህጎች።

ምላሽ እና የማገገሚያ ጊዜ

አንድ ክስተት በሚከሰትበት ጊዜ የስርዓተ-ፆታ ጊዜን መቀነስ አስፈላጊ ነው, ስለዚህ በኦርኬስትራ የክላስተር ቶፖሎጂን መፍጠር እና ማዘመን ላይ ተጽእኖ የሚያሳድሩትን MySQL መለኪያዎችን እናስብ.

  • slave_net_timeout - ግንኙነቱ እንደጠፋ እና እንደገና ከመገናኘቱ በፊት ቅጂው አዲስ መረጃ እስኪመጣ ወይም የልብ ምት ምልክት ከጌታው እስኪመጣ የሚጠብቅበት የሰከንዶች ብዛት። እሴቱ ባነሰ መጠን ቅጂው ከጌታው ጋር ያለው ግንኙነት መበላሸቱን ሊወስን ይችላል። ይህንን እሴት ወደ 5 ሰከንድ አዘጋጅተናል.
  • MASTER_CONNECT_RETRY - በዳግም ግንኙነት ሙከራዎች መካከል የሰከንዶች ብዛት። የአውታረ መረብ ችግሮች በሚያጋጥሙበት ጊዜ, ለዚህ ግቤት ዝቅተኛ ዋጋ ፈጣን ግንኙነትን ይፈቅዳል እና የክላስተር መልሶ ማግኛ ሂደት እንዳይጀምር ይከላከላል. የሚመከረው ዋጋ 1 ሰከንድ ነው።
  • MASTER_RETRY_COUNT - ከፍተኛው የመልሶ ማገናኘት ሙከራዎች ብዛት።
  • MASTER_HEARTBEAT_PERIOD - በሰከንዶች ውስጥ ጌታው የልብ ምት ምልክት ይልካል ። እሴቱ በግማሽ ይቀንሳል slave_net_timeout.

የኦርኬስትራ አማራጮች፡-

  • DelayMasterPromotionIfSQLThreadNotUpToDate - እኩል ከሆነ trueየ SQL ክር ሁሉንም ያልተተገበሩ ግብይቶች ከ Relay Log እስኪጨርስ ድረስ ዋናው ሚና በእጩ ቅጂ ላይ አይተገበርም. ሁሉም የእጩ ቅጂዎች ወደ ኋላ ሲቀሩ ግብይቶችን ላለማጣት ይህንን አማራጭ እንጠቀማለን።
  • InstancePollSeconds - ቶፖሎጂን የመገንባት እና የማዘመን ድግግሞሽ.
  • RecoveryPollSeconds - የቶፖሎጂ ትንተና ድግግሞሽ. ችግር ከተገኘ, ቶፖሎጂ ማገገም ተጀምሯል. ይህ የማያቋርጥ, ከ 1 ሰከንድ ጋር እኩል ነው.

እያንዳንዱ የክላስተር መስቀለኛ መንገድ በኦርኬስትራ አንድ ጊዜ ይመረመራል። InstancePollSeconds ሰከንዶች ችግር ሲገኝ የክላስተር ሁኔታ ይገደዳል ዘምኗል, እና ከዚያ በኋላ መልሶ ማገገምን ለማከናወን የመጨረሻው ውሳኔ ይደረጋል. በተለያዩ የውሂብ ጎታ እና ኦርኬስትራ መለኪያዎች በመሞከር የምላሽ እና የማገገሚያ ጊዜን ወደ 30 ሰከንድ መቀነስ ችለናል።

የሙከራ ማቆሚያ

የHA እቅድን ከአካባቢያዊ እድገት ጋር መሞከር ጀመርን የሙከራ አግዳሚ ወንበር እና በፈተና እና በምርት አካባቢዎች ውስጥ ተጨማሪ ትግበራ. የአካባቢያዊ መቆሚያው በዶከር ላይ ተመስርቶ ሙሉ በሙሉ በራስ ሰር የሚሰራ ሲሆን በኦርኬስትራ እና በኔትወርክ አወቃቀሮች ላይ እንዲሞክሩ፣ ክላስተርን ከ2-3 አገልጋዮች ወደ ብዙ ደርዘን እንዲያሳድጉ እና ደህንነቱ በተጠበቀ አካባቢ ልምምዶችን እንዲያካሂዱ ይፈቅድልዎታል።

በልምምድ ወቅት ከችግሮቹ የማስመሰል ዘዴዎች ውስጥ አንዱን እንመርጣለን፡ በመጠቀም ጌታውን በቅጽበት ተኩሱት። kill -9፣ ሂደቱን በቀስታ ያቋርጡ እና አገልጋዩን ያቁሙ (docker-compose stop) በመጠቀም የኔትወርክ ችግሮችን አስመስሎ መስራት iptables -j REJECT ወይም iptables -j DROP. የሚከተለውን ውጤት እንጠብቃለን።

  • ኦርኬስትራ በጌታው ላይ ችግሮችን ፈልጎ ያገኛል እና ከ 10 ሰከንድ ባልበለጠ ጊዜ ውስጥ ቶፖሎጂን ያዘምናል ።
  • የመልሶ ማግኛ ሂደቱ በራስ-ሰር ይጀምራል-የአውታረ መረቡ ውቅር ይለወጣል ፣ የጌታው ሚና ወደ ቅጂው ያልፋል ፣ ቶፖሎጂ እንደገና ይገነባል ፣
  • አዲሱ ጌታ ሊጻፍ የሚችል ይሆናል, በእንደገና ግንባታው ሂደት የቀጥታ ቅጂዎች አይጠፉም.
  • መረጃ ለአዲሱ ጌታ መፃፍ እና መድገም ይጀምራል;
  • አጠቃላይ የማገገሚያ ጊዜ ከ 30 ሰከንድ ያልበለጠ ይሆናል.

እንደሚታወቀው ስርዓቱ በተለያዩ የሃርድዌር እና የኔትወርክ አወቃቀሮች፣ በሰው ሰራሽ እና በእውነተኛ ጭነት ወዘተ ምክንያት በሙከራ እና በምርት አካባቢዎች የተለየ ባህሪ ሊኖረው ይችላል። ስለዚህ የኔትወርክ ግኑኝነት ሲጠፋ ወይም የነጠላ ክፍሎቹ ሲበላሹ ስርዓቱ ምን እንደሚመስል በመፈተሽ በእውነተኛ ሁኔታዎች ውስጥ ልምምዶችን እንሰራለን። ለወደፊቱ፣ ለሁለቱም አከባቢዎች ሙሉ ለሙሉ ተመሳሳይ የሆነ መሠረተ ልማት መገንባት እና መሞከሪያውን በራስ ሰር መስራት እንፈልጋለን።

ግኝቶች

የዋናው የማከማቻ ስርዓት መስቀለኛ መንገድ ጤና የ SRE እና የኦፕሬሽን ቡድን ዋና ተግባራት አንዱ ነው. በቪአይፒ ላይ የተመሰረተው የኦርኬስትራ እና የHA መፍትሄ ትግበራ የሚከተሉትን ውጤቶች እንድናገኝ አስችሎናል::

  • የውሂብ ጎታ ክላስተር ቶፖሎጂ ላይ ያሉ ችግሮችን አስተማማኝ ማወቂያ;
  • ራስ-ሰር እና ፈጣን ምላሽ ከዋና ጋር በተያያዙ ክስተቶች, የስርዓት መቋረጥን ይቀንሳል.

ሆኖም ፣ መፍትሄው የራሱ ገደቦች እና ጉዳቶች አሉት-

  • የ HA እቅድን ወደ ብዙ የውሂብ ማእከሎች ማመጣጠን በመካከላቸው አንድ L2 አውታረ መረብ ያስፈልገዋል.
  • ቪአይፒን በአዲሱ ጌታ ላይ ከመመደብ በፊት፣ በአሮጌው ላይ መልቀቅ አለብን። ሂደቱ በቅደም ተከተል ነው, ይህም የማገገሚያ ጊዜን ይጨምራል;
  • ቪአይፒን መልቀቅ የ SSH አገልጋይን ወይም ሌላ ማንኛውንም የርቀት ሂደቶችን የመጥራት ዘዴን ይፈልጋል። አገልጋዩ ወይም ዳታቤዙ የመልሶ ማግኛ ሂደቱን ያስከተለ ችግር እያጋጠመው ስለሆነ፣ የቪአይፒ መወገድ በተሳካ ሁኔታ እንደሚጠናቀቅ እርግጠኛ መሆን አንችልም። እና ይሄ ተመሳሳይ ምናባዊ አይፒ አድራሻ እና ችግር ያላቸው ሁለት አገልጋዮች እንዲታዩ ሊያደርግ ይችላል split brain.

ለማስወገድ split brain, ዘዴውን መጠቀም ይችላሉ ስቶኒት ("ሌላውን ኖድ በጭንቅላቱ ውስጥ ያንሱ")፣ ይህም የችግሩን መስቀለኛ መንገድ ሙሉ ለሙሉ የሚለይ ወይም የሚያሰናክል ነው። ክላስተር ከፍተኛ ተገኝነትን ለመተግበር ሌሎች መንገዶች አሉ፡ የቪአይፒ እና ዲ ኤን ኤስ ጥምረት፣ የአገልግሎት ግኝት እና የተኪ አገልግሎቶች፣ የተመሳሰለ ማባዛት እና ሌሎች የራሳቸው ጉዳቶች እና ጥቅሞች ያላቸው ዘዴዎች።

የ MySQL አለመሳካት ክላስተር የመፍጠር አቀራረባችንን ተናገርኩ። ለመተግበር ቀላል እና አሁን ባሉ ሁኔታዎች ውስጥ ተቀባይነት ያለው የአስተማማኝነት ደረጃ ያቀርባል. አጠቃላይ ስርዓቱ እና መሠረተ ልማት በተለይ እየጎለበተ ሲሄድ ይህ አካሄድ ያለጥርጥር ይሻሻላል።

ምንጭ: hab.com

አስተያየት ያክሉ