በሲቲሞቢል የ MySQL ዳታቤዝ እንደ ዋና ቋሚ የውሂብ ማከማቻችን እንጠቀማለን። ለተለያዩ አገልግሎቶች እና ዓላማዎች በርካታ የውሂብ ጎታ ስብስቦች አሉን።
የጌታው ቋሚ መገኘት የአጠቃላይ ስርዓቱን እና የነጠላ ክፍሎቹን አፈፃፀም ወሳኝ አመላካች ነው. የማስተርስ ውድቀት በሚከሰትበት ጊዜ የራስ-ሰር ክላስተር ማገገም የአደጋ ምላሽ ጊዜን እና የስርዓት መቋረጥ ጊዜን በእጅጉ ይቀንሳል። በዚህ ጽሑፍ ውስጥ ለ MySQL ክላስተር ከፍተኛ ተገኝነት (HA) ንድፍን በዚህ መሠረት እመለከታለሁ።
ቪአይፒ ላይ የተመሠረተ HA መፍትሔ
በመጀመሪያ ፣ የመረጃ ማከማቻ ስርዓታችን ምን እንደሆነ በአጭሩ እነግርዎታለሁ።
ክላሲክ የማባዛት ዘዴን ከአንድ ፅሁፍ ተደራሽ የሆነ ዋና እና በርካታ ተነባቢ-ብቻ ቅጂዎችን እንጠቀማለን። ክላስተር መካከለኛ ጌታን ሊይዝ ይችላል - መስቀለኛ መንገድ ቅጂ እና ለሌሎች ዋና። ደንበኞች በHAProxy በኩል ቅጂዎችን ያገኛሉ፣ ይህም የጭነት ስርጭትን እና ቀላል ልኬትን እንኳን ይፈቅዳል። የHAProxy አጠቃቀም በታሪካዊ ምክንያቶች የተነሳ ነው፣ እና በአሁኑ ጊዜ ወደ ProxySQL በመሰደድ ላይ ነን።
ላይ ተመስርተው ማባዛት በከፊል-የተመሳሰለ ሁነታ ይከናወናል GTID
. ይህ ማለት ቢያንስ አንድ ቅጂ አንድ ግብይት እንደ ስኬታማ ከመቆጠሩ በፊት መግባት አለበት። ይህ የማባዛት ሁነታ የማስተር ኖድ ውድቀት በሚከሰትበት ጊዜ በአፈፃፀም እና በመረጃ ደህንነት መካከል ጥሩ ሚዛን ይሰጣል። በመሠረቱ ሁሉም ለውጦች ከዋናው ወደ ቅጂዎች እየተጠቀሙ ነው Row Based Replication (RBR)
, ግን አንዳንድ አንጓዎች ሊኖራቸው ይችላል mixed binlog format
.
ኦርኬስትራተሩ በየጊዜው የክላስተር ቶፖሎጂን ሁኔታ ያሻሽላል, የተቀበለውን መረጃ ይመረምራል, እና ችግሮች ከተከሰቱ, አውቶማቲክ የማገገም ሂደትን ሊጀምር ይችላል. በተለያዩ መንገዶች ሊተገበር ስለሚችል ገንቢው ለሂደቱ ራሱ ተጠያቂ ነው-በቪአይፒ ፣ ዲ ኤን ኤስ ፣ የአገልግሎት ፍለጋ አገልግሎቶችን ወይም በራስ የተፃፉ ስልቶችን በመጠቀም።
አንድ ጌታ ካልተሳካ ወደነበረበት ለመመለስ ቀላሉ መንገድ ተንሳፋፊ ቪአይፒ አድራሻዎችን መጠቀም ነው።
ወደ ፊት ከመሄድዎ በፊት ስለዚህ መፍትሄ ማወቅ ያለብዎት ነገር-
- ቪአይፒ ከአንድ የተወሰነ አካላዊ አውታረ መረብ በይነገጽ ጋር ያልተገናኘ የአይፒ አድራሻ ነው። መስቀለኛ መንገድ ካልተሳካ ወይም በታቀደለት ጥገና ወቅት፣ በትንሹ የእረፍት ጊዜ ቪአይፒን ወደ ሌላ መገልገያ መቀየር እንችላለን።
- ምናባዊ አይፒ አድራሻን ነጻ ማድረግ እና መስጠት ርካሽ እና ፈጣን አሰራር ነው።
- ከቪአይፒ ጋር ለመስራት በኤስኤስኤች በኩል ወደ አገልጋዩ መድረስ ወይም ልዩ መገልገያዎችን መጠቀም ያስፈልግዎታል ፣ ለምሳሌ ፣
keepalived
.
ከጠንቋችን ጋር ሊሆኑ የሚችሉ ችግሮችን እንይ እና አውቶማቲክ መልሶ ማግኛ ዘዴ እንዴት እንደሚሰራ አስቡ።
የአውታረ መረብ ግንኙነት ከማስተር ጋር ጠፍቷል፣ ወይም በሃርድዌር ደረጃ ችግር ተፈጥሯል፣ እና አገልጋዩ አይገኝም።
- ኦርኬስትራተሩ የክላስተር ቶፖሎጂን ያሻሽላል፣ እያንዳንዱ ቅጂ ጌታው እንደማይገኝ ሪፖርት ያደርጋል። ኦርኬስትራተሩ ለአዲሱ ጌታ ሚና ተስማሚ የሆነ ቅጂን የመምረጥ ሂደቱን ይጀምራል እና ማገገም ይጀምራል.
- ቪአይፒን ከአሮጌው ጌታ ለማንሳት እየሞከርን ነው - ያለ ስኬት።
- ቅጂው ወደ ጌታው ሚና ይቀየራል። ቶፖሎጂ እንደገና እየተገነባ ነው።
- ከቪአይፒ ጋር አዲስ የአውታረ መረብ በይነገጽ ማከል። ቪአይፒን ማስወገድ ስላልተቻለ በየጊዜው ከበስተጀርባ ጥያቄ መላክ እንጀምራለን። የሚያስደስት ARP. የዚህ አይነት ጥያቄ/ምላሽ በተገናኙት ስዊቾች ላይ የአይ ፒ እና ማክ አድራሻ ካርታ ስራን እንዲያሻሽሉ ይፈቅድልዎታል፣ በዚህም የእኛ ቪአይፒ መንቀሳቀሱን ያሳውቃል። ይህ እድልን ይቀንሳል
split brain
የድሮውን ጌታ ሲመልስ. - ሁሉም አዲስ ግንኙነቶች ወዲያውኑ ወደ አዲሱ ጌታ ይዛወራሉ. የቆዩ ግንኙነቶች አልተሳኩም እና ወደ ዳታቤዝ ተደጋጋሚ ጥሪዎች በመተግበሪያ ደረጃ ይደረጋሉ።
አገልጋዩ በተለመደው ሁነታ እየሰራ ነው, በዲቢኤምኤስ ደረጃ ላይ ውድቀት ተከስቷል
አልጎሪዝም ከቀዳሚው ጉዳይ ጋር ተመሳሳይ ነው: ቶፖሎጂን ማዘመን እና የማገገሚያ ሂደቱን መጀመር. አገልጋዩ ስላለ ቪአይፒን በአሮጌው ጌታ ላይ በተሳካ ሁኔታ እንለቃለን ፣ ወደ አዲሱ እናስተላልፋለን እና ብዙ የ ARP ጥያቄዎችን እንልካለን። የድሮው ጌታ መመለስ የሚቻልበት ሁኔታ እንደገና የተገነባውን ክላስተር እና የመተግበሪያውን አሠራር ላይ ተጽእኖ ማድረግ የለበትም.
ሌሎች ችግሮች
የተባዙ ወይም መካከለኛ ጌቶች ውድቀት አይመራም ወደ አውቶማቲክ ድርጊቶች እና በእጅ ጣልቃ መግባትን ይጠይቃል.
የቨርቹዋል አውታረ መረብ በይነገጽ ሁል ጊዜ በጊዜያዊነት ይታከላል፣ ማለትም፣ አገልጋዩ ዳግም ከተጀመረ በኋላ፣ ቪአይፒ በራስ-ሰር አልተመደበም። እያንዳንዱ የመረጃ ቋት ምሳሌ በነባሪነት በንባብ-ብቻ ሁነታ ይጀምራል፣ ኦርኬስትራተሩ በራስ-ሰር አዲሱን ጌታ ለመፃፍ ይቀይራል እና ለመጫን ይሞክራል። read only
በአሮጌው ጌታ ላይ. እነዚህ እርምጃዎች እድሉን ለመቀነስ የታለሙ ናቸው። split brain
.
በማገገሚያ ሂደት ውስጥ ችግሮች ሊፈጠሩ ይችላሉ, ይህም ከመደበኛ የክትትል መሳሪያዎች በተጨማሪ በኦርኬስትራ UI በኩል ማሳወቅ አለበት. ይህንን ባህሪ በማከል የ REST ኤፒአይን አስፍተናል (
የ HA መፍትሄ አጠቃላይ ንድፍ ከዚህ በታች ቀርቧል.
አዲስ ጌታ መምረጥ
ኦርኬስትራ በቂ ብልህ ነው እና ለመምረጥ ይሞክራል።
- ቅጂው ከጌታው ጀርባ ይዘገያል;
- የ MySQL ስሪት ማስተር እና ቅጂ;
- የማባዛት አይነት (RBR, SBR ወይም ድብልቅ);
- በተመሳሳይ ወይም በተለያዩ የመረጃ ማእከሎች ውስጥ የሚገኝ ቦታ;
- ተገኝነት
errant GTID
- በቅጂው ላይ የተፈጸሙ እና በጌታው ላይ ያልሆኑ ግብይቶች; - ብጁ ምርጫ ደንቦችም ግምት ውስጥ ይገባሉ.
እያንዳንዱ ፍንጭ ለአንድ ጌታ ተስማሚ እጩ አይደለም. ለምሳሌ፣ ቅጂ ውሂብን ለመጠባበቅ መጠቀም ይቻላል፣ ወይም አገልጋዩ ደካማ የሃርድዌር ውቅር አለው። ኦርኬስትራ
ምላሽ እና የማገገሚያ ጊዜ
አንድ ክስተት በሚከሰትበት ጊዜ የስርዓተ-ፆታ ጊዜን መቀነስ አስፈላጊ ነው, ስለዚህ በኦርኬስትራ የክላስተር ቶፖሎጂን መፍጠር እና ማዘመን ላይ ተጽእኖ የሚያሳድሩትን MySQL መለኪያዎችን እናስብ.
- ግንኙነቱ እንደጠፋ እና እንደገና ከመገናኘቱ በፊት ቅጂው አዲስ መረጃ እስኪመጣ ወይም የልብ ምት ምልክት ከጌታው እስኪመጣ የሚጠብቅበት የሰከንዶች ብዛት። እሴቱ ባነሰ መጠን ቅጂው ከጌታው ጋር ያለው ግንኙነት መበላሸቱን ሊወስን ይችላል። ይህንን እሴት ወደ 5 ሰከንድ አዘጋጅተናል.slave_net_timeout
- በዳግም ግንኙነት ሙከራዎች መካከል የሰከንዶች ብዛት። የአውታረ መረብ ችግሮች በሚያጋጥሙበት ጊዜ, ለዚህ ግቤት ዝቅተኛ ዋጋ ፈጣን ግንኙነትን ይፈቅዳል እና የክላስተር መልሶ ማግኛ ሂደት እንዳይጀምር ይከላከላል. የሚመከረው ዋጋ 1 ሰከንድ ነው።MASTER_CONNECT_RETRY
MASTER_RETRY_COUNT
- ከፍተኛው የመልሶ ማገናኘት ሙከራዎች ብዛት።MASTER_HEARTBEAT_PERIOD
- በሰከንዶች ውስጥ ጌታው የልብ ምት ምልክት ይልካል ። እሴቱ በግማሽ ይቀንሳልslave_net_timeout
.
የኦርኬስትራ አማራጮች፡-
DelayMasterPromotionIfSQLThreadNotUpToDate
- እኩል ከሆነtrue
የ SQL ክር ሁሉንም ያልተተገበሩ ግብይቶች ከ Relay Log እስኪጨርስ ድረስ ዋናው ሚና በእጩ ቅጂ ላይ አይተገበርም. ሁሉም የእጩ ቅጂዎች ወደ ኋላ ሲቀሩ ግብይቶችን ላለማጣት ይህንን አማራጭ እንጠቀማለን።InstancePollSeconds
- ቶፖሎጂን የመገንባት እና የማዘመን ድግግሞሽ.RecoveryPollSeconds
- የቶፖሎጂ ትንተና ድግግሞሽ. ችግር ከተገኘ, ቶፖሎጂ ማገገም ተጀምሯል. ይህየማያቋርጥ , ከ 1 ሰከንድ ጋር እኩል ነው.
እያንዳንዱ የክላስተር መስቀለኛ መንገድ በኦርኬስትራ አንድ ጊዜ ይመረመራል። InstancePollSeconds
ሰከንዶች ችግር ሲገኝ የክላስተር ሁኔታ ይገደዳል
የሙከራ ማቆሚያ
የHA እቅድን ከአካባቢያዊ እድገት ጋር መሞከር ጀመርን
በልምምድ ወቅት ከችግሮቹ የማስመሰል ዘዴዎች ውስጥ አንዱን እንመርጣለን፡ በመጠቀም ጌታውን በቅጽበት ተኩሱት። 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