ሞርተምን በ Quay.io አይገኝም

ማስታወሻ. ትርጉምበነሀሴ ወር መጀመሪያ ላይ ሬድ ኮፍያ ባለፉት ወራት የአገልግሎቱ ተጠቃሚዎች ያጋጠሟቸውን የተደራሽነት ችግሮችን ለመፍታት በይፋ ተናግሯል Quay.io (ኩባንያው ከCoreOS ግዢ ጋር የተቀበለው ለመያዣ ምስሎች መዝገብ ላይ የተመሰረተ ነው). በዚህ አገልግሎት ላይ ፍላጎትዎ ምንም ይሁን ምን የኩባንያው SRE መሐንዲሶች የአደጋውን መንስኤዎች ለመመርመር እና ለማስወገድ የወሰዱት መንገድ አስተማሪ ነው.

ሞርተምን በ Quay.io አይገኝም

በሜይ 19፣ በማለዳ (የምስራቃዊ የቀን ብርሃን ሰዓት፣ EDT)፣ የ quay.io አገልግሎት ተበላሽቷል። አደጋው quay.io የሶፍትዌር ግንባታ እና ማከፋፈያ መድረክ በመጠቀም ሁለቱንም የ quay.io ተጠቃሚዎችን እና የክፍት ምንጭ ፕሮጄክቶችን ነካ። ቀይ ኮፍያ የሁለቱም እምነት ዋጋ አለው።

የኤስአርአይ መሐንዲሶች ቡድን ወዲያውኑ ተሳተፈ እና በተቻለ ፍጥነት የኳይ አገልግሎትን ለማረጋጋት ሞክሯል። ነገር ግን፣ ይህን በሚያደርጉበት ጊዜ ደንበኞቻቸው አዳዲስ ምስሎችን የመግፋት ችሎታቸውን አጥተዋል፣ እና አልፎ አልፎ ነባሮቹን መጎተት ይችሉ ነበር። ባልታወቀ ምክንያት የ quay.io ዳታቤዝ አገልግሎቱን ወደ ሙሉ አቅም ካሳደገ በኋላ ታግዷል።

«ምን ተለውጧል?"- ይህ በአብዛኛው እንደዚህ ባሉ ጉዳዮች ላይ የሚነሳው የመጀመሪያው ጥያቄ ነው. ከጉዳዩ ትንሽ ቀደም ብሎ፣ የOpenShift Dedicated cluster (quay.io ን የሚያስኬድ) ወደ ስሪት 4.3.19 ማዘመን እንደጀመረ አስተውለናል። quay.io በ Red Hat OpenShift Dedicated (OSD) ላይ ስለሚሄድ መደበኛ ዝመናዎች የተለመዱ ነበሩ እና በጭራሽ ችግር አላመጡም። ከዚህም በላይ ባለፉት ስድስት ወራት የኳይ ክላስተሮችን በአገልግሎት ላይ ያለምንም መቆራረጥ ብዙ ጊዜ አሻሽለናል።

አገልግሎቱን ወደነበረበት ለመመለስ እየሞከርን እያለ ሌሎች መሐንዲሶች አንድ ነገር ከተፈጠረ ሁሉንም ነገር በእሱ ላይ ማሰማራት እንዲችሉ ከቀድሞው የሶፍትዌር ስሪት ጋር አዲስ የ OSD ክላስተር ማዘጋጀት ጀመሩ።

መንስኤ ትንተና

የውድቀቱ ዋና ምልክት በአስር ሺዎች የሚቆጠሩ የውሂብ ጎታ ግንኙነቶች መጨናነቅ ነበር፣ ይህም MySQL ምሳሌን በትክክል እንዳይሰራ አድርጎታል። ይህም ችግሩን ለመመርመር አስቸጋሪ አድርጎታል. የኤስአርአይ ቡድን ጉዳዩን እንዲገመግም ለማገዝ ከደንበኞች የሚደርሰውን ከፍተኛ የግንኙነቶች ብዛት ላይ ገደብ አውጥተናል። ወደ ዳታቤዝ ምንም አይነት ያልተለመደ ትራፊክ አላስተዋልንም፤ እንደውም አብዛኞቹ ጥያቄዎች ተነበዋል፣ እና ጥቂቶች ብቻ ተጽፈዋል።

እንዲሁም ይህን ከባድ ዝናብ ሊያስከትል የሚችል የውሂብ ጎታ ትራፊክን ንድፍ ለመለየት ሞክረናል። ሆኖም፣ በምዝግብ ማስታወሻዎች ውስጥ ምንም አይነት ቅጦችን ማግኘት አልቻልንም። አዲሱን ክላስተር ከ OSD 4.3.18 ጋር ዝግጁ እንዲሆን እየጠበቅን ሳለ፣ quay.io pods ለመጀመር መሞከሩን ቀጠልን። ክላስተር ሙሉ አቅም በደረሰ ቁጥር የመረጃ ቋቱ ይቀዘቅዛል። ይህ ማለት ከሁሉም quay.io pods በተጨማሪ የ RDS ምሳሌን እንደገና ማስጀመር አስፈላጊ ነበር ማለት ነው።

ምሽት ላይ አገልግሎቱን በንባብ-ብቻ ሁነታ አረጋጋን እና በተቻለ መጠን ብዙ አስፈላጊ ያልሆኑ ተግባራትን (ለምሳሌ የስም ቦታ ቆሻሻ ማሰባሰብ) በመረጃ ቋቱ ላይ ያለውን ጫና ለመቀነስ አሰናክለናል። ማቀዝቀዣዎች ቆመዋል ግን ምክንያቱ በጭራሽ አልተገኘም. አዲሱ የ OSD ክላስተር ተዘጋጅቷል፣ እና አገልግሎቱን ፈለስን፣ ትራፊክ አገናኘን እና ክትትልን ቀጠልን።

Quay.io በአዲሱ OSD ክላስተር ላይ በተረጋጋ ሁኔታ ሰርቷል፣ስለዚህ ወደ ዳታቤዝ ምዝግብ ማስታወሻዎች ተመለስን፣ነገር ግን እገዳዎቹን የሚያብራራ ዝምድና ማግኘት አልቻልንም። OpenShift መሐንዲሶች በ Red Hat OpenShift 4.3.19 ላይ ለውጦች በኳይ ላይ ችግር ሊፈጥሩ እንደሚችሉ ለመረዳት ከእኛ ጋር ሠርተዋል። ሆኖም ግን, ምንም ነገር አልተገኘም, እና በቤተ ሙከራ ሁኔታዎች ውስጥ ችግሩን እንደገና ማባዛት አልተቻለም.

ሁለተኛ ውድቀት

በሜይ 28፣ ከቀትር በኋላ EDT፣ quay.io በተመሳሳይ ምልክት እንደገና ተበላሽቷል፡ የመረጃ ቋቱ ታግዷል። እናም በድጋሚ ጥረታችንን ሁሉ ወደ ምርመራው ወረወርነው። በመጀመሪያ ደረጃ አገልግሎቱን ወደነበረበት መመለስ አስፈላጊ ነበር. ቢሆንም በዚህ ጊዜ RDS ዳግም ማስጀመር እና quay.io pods እንደገና ማስጀመር ምንም አላደረገምሌላ የግንኙነቶች መጨናነቅ መሰረቱን አጥፍቶታል። ግን ለምን?

ኩዋይ የተፃፈው በፓይዘን ነው እና እያንዳንዱ ፖድ እንደ ነጠላ ነጠላ መያዣ ነው የሚሰራው። የመያዣው አሂድ ጊዜ ብዙ ትይዩ ተግባራትን በአንድ ጊዜ ያካሂዳል። ቤተ መፃህፍቱን እንጠቀማለን gevent በታች gunicorn የድር ጥያቄዎችን ለማስኬድ. ጥያቄ ወደ ኩዋይ ሲመጣ (በእኛ በራሳችን ኤፒአይ ወይም በDocker's API) የጀቬንት ሰራተኛ ይመደብለታል። በተለምዶ ይህ ሰራተኛ የውሂብ ጎታውን ማግኘት አለበት። ከመጀመሪያው ውድቀት በኋላ የጌቬንት ሰራተኞች ነባሪ መቼቶችን በመጠቀም ከመረጃ ቋቱ ጋር እየተገናኙ መሆናቸውን ደርሰንበታል።

በሴኮንድ ከፍተኛ ቁጥር ያላቸውን የኳይ ፖድስ እና በሺዎች የሚቆጠሩ ገቢ ጥያቄዎችን ከግምት ውስጥ በማስገባት ብዙ ቁጥር ያላቸው የውሂብ ጎታ ግንኙነቶች በንድፈ ሀሳብ MySQL ምሳሌን ሊያሸንፉ ይችላሉ። ለክትትል ምስጋና ይግባውና ኩዋይ በአማካይ 5 ሺህ ጥያቄዎችን በሰከንድ እንደሚያስተናግድ ታውቋል ። ከመረጃ ቋቱ ጋር ያለው የግንኙነት ብዛት በግምት ተመሳሳይ ነበር። 5 ግንኙነቶች በ RDS ምሳሌአችን አቅም ውስጥ ጥሩ ነበሩ (ይህም በአስር ሺዎች ገደማ ሊባል አይችልም)። በሆነ ምክንያት በግንኙነቶች ብዛት ውስጥ ያልተጠበቁ ሹልፎች ነበሩ።ነገር ግን ከገቢ ጥያቄዎች ጋር ምንም አይነት ግንኙነት አላየንም።

በዚህ ጊዜ የችግሩን ምንጭ ለማግኘት እና ለማስወገድ ቆርጠን ነበር፣ እና እራሳችንን ዳግም ማስጀመር ላይ ብቻ አንወሰንም። ወደ Quay codebase ለእያንዳንዱ ሠራተኛ ከመረጃ ቋቱ ጋር ያለውን የግንኙነት ብዛት ለመገደብ ለውጦች ተደርገዋል። gevent ይህ ቁጥር በማዋቀሪያው ውስጥ መለኪያ ሆነ፡ አዲስ የመያዣ ምስል ሳይገነባ በበረራ ላይ መቀየር ተቻለ። ምን ያህል ግንኙነቶች በተጨባጭ ሊስተናገዱ እንደሚችሉ ለማወቅ፣ ይህ የጭነት ሙከራ ሁኔታዎችን እንዴት እንደሚጎዳ ለማየት የተለያዩ እሴቶችን በማዘጋጀት በዝግጅት አካባቢ ውስጥ ብዙ ሙከራዎችን አደረግን። በዚህም ምክንያት እንደሆነ ታወቀ የግንኙነቶች ብዛት ከ 502 ሺህ በላይ በሚሆንበት ጊዜ ኩዋይ 10 ስህተቶችን መጣል ይጀምራል።

ወዲያውኑ ይህን አዲስ እትም ወደ ምርት አሰማርተን የውሂብ ጎታውን የግንኙነት መርሃ ግብር መከታተል ጀመርን። ቀደም ሲል, መሰረቱ ከ 20 ደቂቃዎች በኋላ ተቆልፏል. ከ 30 ችግር-ነጻ ደቂቃዎች በኋላ ተስፋ ነበረን ፣ እና ከአንድ ሰዓት በኋላ በራስ መተማመን አለን። ወደ ጣቢያው ትራፊክ መልሰን እና የድህረ ሞት ትንተና ጀመርን።

ወደ እገዳው የሚያመራውን ችግር በማለፍ ፣ ትክክለኛ ምክንያቶቹን አላገኘንም።. በ OpenShift 4.3.19 ላይ ከተደረጉት ለውጦች ጋር ምንም ግንኙነት እንደሌለው ተረጋግጧል, ምክንያቱም በ 4.3.18 ስሪት ላይ ተመሳሳይ ነገር ተከስቷል, ይህም ቀደም ሲል ከኳይ ጋር ያለምንም ችግር ይሠራ ነበር.

በክላስተር ውስጥ ሌላ ተደብቆ እንዳለ ግልጽ ነው።

ዝርዝር ጥናት

Quay.io ያለ ምንም ችግር ለስድስት አመታት ከዳታቤዝ ጋር ለመገናኘት ነባሪ ቅንጅቶችን ተጠቅሟል። ምን ተለወጠ? በዚህ ጊዜ ሁሉ በ quay.io ላይ ያለው ትራፊክ ያለማቋረጥ እያደገ እንደመጣ ግልጽ ነው። በእኛ ሁኔታ፣ የግንኙነቶች መጨናነቅ መቀስቀሻ ሆኖ የሚያገለግለው የተወሰነ የመነሻ እሴት ላይ የደረሰ ይመስላል። ከሁለተኛው ውድቀት በኋላ የውሂብ ጎታ ምዝግብ ማስታወሻዎችን ማጥናት ቀጠልን, ነገር ግን ምንም አይነት ቅጦች ወይም ግልጽ ግንኙነቶች አላገኘንም.

ይህ በእንዲህ እንዳለ፣ የSRE ቡድን የኳይ ጥያቄ ታዛቢነት እና አጠቃላይ የአገልግሎት ጤና ላይ ማሻሻያ ለማድረግ እየሰራ ነው። አዲስ መለኪያዎች እና ዳሽቦርዶች ተሰማርተዋል።የትኞቹ የኳይ ክፍሎች ከደንበኞች በጣም እንደሚፈለጉ ያሳያል።

Quay.io እስከ ሰኔ 9 ድረስ በጥሩ ሁኔታ ሰርቷል። ዛሬ ጠዋት (ኤዲቲ) በዳታቤዝ ግንኙነቶች ቁጥር ላይ ጉልህ የሆነ ጭማሪ አየን። በዚህ ጊዜ ምንም የእረፍት ጊዜ አልነበረምአዲሱ ግቤት ቁጥራቸውን ስለሚገድብ እና ከ MySQL ውፅዓት እንዲበልጡ ስላልፈቀደላቸው። ነገር ግን፣ ለግማሽ ሰዓት ያህል፣ ብዙ ተጠቃሚዎች የ quay.io አፈጻጸም አዝጋሚ መሆኑን አስተውለዋል። የተጨመሩትን የክትትል መሳሪያዎች በመጠቀም ሁሉንም በተቻለ ፍጥነት ሰብስበናል። በድንገት አንድ ጥለት ብቅ አለ።

የግንኙነቶች መብዛት ጥቂት ቀደም ብሎ፣ ለመተግበሪያ ምዝገባ ኤፒአይ ብዙ ጥያቄዎች ቀርበዋል።. የመተግበሪያ ምዝገባ ብዙም የማይታወቅ የ quay.io ባህሪ ነው። እንደ Helm charts እና ኮንቴይነሮች የበለፀጉ ሜታዳታ ያሉ ነገሮችን እንዲያከማቹ ያስችልዎታል። አብዛኛዎቹ የ quay.io ተጠቃሚዎች ከዚህ ባህሪ ጋር አይሰሩም ፣ ግን Red Hat OpenShift በንቃት ይጠቀምበታል። OperatorHub እንደ OpenShift አካል ሁሉንም ኦፕሬተሮች በመተግበሪያ መዝገብ ውስጥ ያከማቻል። እነዚህ ኦፕሬተሮች ለOpenShift የስራ ጫና ስነ-ምህዳር እና አጋር-ተኮር የአሰራር ሞዴል (ቀን 2 ኦፕሬሽኖች) መሰረት ይመሰርታሉ።

እያንዳንዱ የOpenShift 4 ክላስተር ለመጫኛ የሚገኙትን የኦፕሬተሮች ካታሎግ ለማተም እና ለተጫኑት ማሻሻያዎችን ለማቅረብ አብሮ ከተሰራው OperatorHub ኦፕሬተሮችን ይጠቀማል። የOpenShift 4 ተወዳጅነት እየጨመረ በመምጣቱ በዓለም ዙሪያ ያሉ የክላስተር ብዛትም ጨምሯል። እነዚህ ዘለላዎች እያንዳንዳቸው በ quay.io ውስጥ ያለውን የመተግበሪያ መዝገብ እንደ ደጋፊ በመጠቀም አብሮ የተሰራውን OperatorHub ለማስኬድ የኦፕሬተር ይዘትን ያወርዳሉ። የችግሩን ምንጭ ለማግኘት በምናደርገው ፍለጋ፣ OpenShift ቀስ በቀስ ተወዳጅነት እያሳየ ሲሄድ፣ አልፎ አልፎ ጥቅም ላይ ከዋሉት የ quay.io ተግባራት በአንዱ ላይ ያለው ጭነትም እየጨመረ መምጣቱን አምልጦናል።.

ስለ App Registry ጥያቄ ትራፊክ አንዳንድ ትንታኔ አድርገናል እና የመመዝገቢያ ኮድን ተመልክተናል። ወዲያውኑ ፣ ጉድለቶች ተገለጡ ፣ በዚህ ምክንያት የውሂብ ጎታው ላይ ያሉ ጥያቄዎች በጥሩ ሁኔታ አልተፈጠሩም። ሸክሙ ሲቀንስ ምንም አይነት ችግር አላመጡም, ነገር ግን ጭነቱ ሲጨምር, የችግር ምንጭ ሆኑ. የመተግበሪያ መዝገብ ቤት ለጭነት መጨመር ጥሩ ምላሽ ያልሰጡ ሁለት ችግር ያለባቸው የመጨረሻ ነጥቦች አሉት፡ የመጀመሪያው በማጠራቀሚያው ውስጥ ያሉትን ሁሉንም ፓኬጆች ዝርዝር አቅርቧል፣ ሁለተኛው ደግሞ ለጥቅሉ ሁሉንም ነጠብጣቦች መለሰ።

መንስኤዎችን ማስወገድ

በሚቀጥለው ሳምንት የመተግበሪያ መዝገብ ቤቱን እና አካባቢውን ኮድ በማሻሻል አሳልፈናል። በግልጽ ውጤታማ ያልሆኑ የSQL መጠይቆች እንደገና ተሠርተዋል እና አላስፈላጊ የትዕዛዝ ጥሪዎች ተወግደዋል። tar (ብሎኮች በተነሱ ቁጥር ይካሄድ ነበር)፣ መሸጎጫ በሚቻልበት ቦታ ሁሉ ታክሏል። ከዚያም ሰፊ የአፈጻጸም ሙከራ አደረግን እና ከለውጦቹ በፊት እና በኋላ ያለውን የመተግበሪያ መዝገብ ቤት ፍጥነት አወዳድረናል።

ከዚህ ቀደም እስከ ግማሽ ደቂቃ የወሰዱ የኤፒአይ ጥያቄዎች አሁን በሚሊሰከንዶች ተጠናቀዋል. በሚቀጥለው ሳምንት ለውጦቹን ወደ ምርት አሰማርተናል፣ እና ከዚያን ጊዜ ጀምሮ quay.io በተረጋጋ ሁኔታ እየሰራ ነው። በዚህ ጊዜ፣ በመተግበሪያ መዝገብ መጨረሻ ነጥብ ላይ በትራፊክ ውስጥ ብዙ ሹል ፍጥነቶች ነበሩ፣ ነገር ግን ማሻሻያዎቹ የውሂብ ጎታ መቆራረጥን ተከልክለዋል።

ምን ተማርን?

ማንኛውም አገልግሎት የእረፍት ጊዜን ለማስወገድ እንደሚሞክር ግልጽ ነው. በእኛ ሁኔታ፣ የቅርብ ጊዜ መቋረጥ quay.io የተሻለ እንዲሆን ረድቷል ብለን እናምናለን። ልናካፍላቸው የምንፈልጋቸውን ጥቂት ቁልፍ ትምህርቶች ተምረናል፡-

  1. አግልግሎትዎን ማን እንደሚጠቀም እና እንዴት እንደሚጠቀሙበት የሚገልጽ መረጃ መቼም አጉልቶ የሚታይ አይደለም።. ምክንያቱም ኩዋይ “አሁን ስለሰራ” ትራፊክን ለማመቻቸት እና ሸክምን ለመቆጣጠር ጊዜ ማሳለፍ አላስፈለገንም ። ይህ ሁሉ አገልግሎቱ ላልተወሰነ ጊዜ ሊመዘን የሚችል የተሳሳተ የደህንነት ስሜት ፈጠረ።
  2. አገልግሎቱ ሲቀንስ፣ ወደነበረበት መመለስ እና ማስኬድ ቅድሚያ የሚሰጠው ጉዳይ ነው።. ምክንያቱም ኩዋይ በመጀመሪያው ማቋረጥ ወቅት በተቆለፈ የውሂብ ጎታ መሰቃየቱን ስለቀጠለ፣ የእኛ መደበኛ አሰራር የታሰበውን ውጤት አላመጣም እና እነሱን ተጠቅመን አገልግሎቱን ወደነበረበት መመለስ አልቻልንም። ዋናውን ምክንያት ለማግኘት ተስፋ በማድረግ መረጃን በመተንተን እና በመሰብሰብ ጊዜ ማሳለፍ ያለበትን ሁኔታ አስከተለ - ሁሉንም ጥረቶች ወደነበረበት መመለስ ላይ ከማተኮር ይልቅ።
  3. የእያንዳንዱን አገልግሎት ባህሪ ተፅእኖ ይገምግሙ. ደንበኞች የመተግበሪያ ምዝገባን እምብዛም አይጠቀሙም ነበር፣ ስለዚህ ለቡድናችን ቅድሚያ የሚሰጠው ጉዳይ አልነበረም። አንዳንድ የምርት ባህሪያት እምብዛም ጥቅም ላይ በማይውሉበት ጊዜ የእነሱ ስህተቶች እምብዛም አይታዩም, እና ገንቢዎች ኮዱን መከታተል ያቆማሉ. ይህ መሆን አለበት በሚለው የተሳሳተ ግንዛቤ ውስጥ መውደቅ ቀላል ነው - በድንገት ያ ተግባር በትልቅ ክስተት መሃል ላይ እስኪገኝ ድረስ።

ቀጥሎ ምንድነው?

የአገልግሎቱን መረጋጋት የማረጋገጥ ስራ አይቆምም እና በየጊዜው እያሻሻልን እንገኛለን። በ quay.io ላይ የትራፊክ መጠን ማደጉን እንገነዘባለን። ስለዚህ, በአሁኑ ጊዜ በሚከተሉት ተግባራት ላይ እየሰራን ነው.

  1. በዋና RDS ምሳሌ ላይ ችግር በሚፈጠርበት ጊዜ አገልግሎቱ ተገቢውን ትራፊክ እንዲይዝ ለማገዝ ተነባቢ-ብቻ የውሂብ ጎታ ቅጂዎችን አሰማር።
  2. የ RDS ምሳሌን በማዘመን ላይ። አሁን ያለው ስሪት ራሱ ችግሩ አይደለም. ይልቁንም የውሸት ዱካውን (በውድቀት ወቅት የተከተልነውን) በቀላሉ ማስወገድ እንፈልጋለን። ሶፍትዌሩን ወቅታዊ ማድረግ ለወደፊቱ መቋረጥ በሚከሰትበት ጊዜ ሌላ ምክንያት ያስወግዳል።
  3. ተጨማሪ መሸጎጫ በመላው ክላስተር። መሸጎጫ በመረጃ ቋቱ ላይ ያለውን ጫና የሚቀንስባቸውን ቦታዎች መፈለግ እንቀጥላለን።
  4. ማን ከ quay.io ጋር እንደሚገናኝ እና ለምን እንደሆነ ለማየት የድር መተግበሪያ ፋየርዎልን (WAF) ማከል።
  5. ከሚቀጥለው ልቀት ጀምሮ፣ Red Hat OpenShift ስብስቦች በ quay.io ላይ በሚገኙ የመያዣ ምስሎች ላይ በመመስረት የኦፕሬተር ካታሎጎችን በመደገፍ የመተግበሪያ ምዝገባን ይተዋሉ።
  6. የመተግበሪያ መዝገብ ቤት የረጅም ጊዜ መተካት የክፍት ኮንቴይነር ተነሳሽነት (OCI) የቅርስ ዝርዝሮች ድጋፍ ሊሆን ይችላል። በአሁኑ ጊዜ እንደ ቤተኛ Quay ተግባር ነው የሚተገበረው እና መግለጫው እራሱ ሲጠናቀቅ ለተጠቃሚዎች ይገኛል።

ከትንሽ "ጅምር-ስታይል" ቡድን ወደ ብስለት SRE-የሚመራ መድረክ ስንሸጋገር ከላይ ያሉት ሁሉም በ quay.io ውስጥ የቀይ ኮፍያ ቀጣይነት ያለው ኢንቨስትመንት አካል ናቸው። ብዙ ደንበኞቻችን በዕለት ተዕለት ሥራቸው (ቀይ ኮፍያ ጨምሮ!) ላይ በ quay.io ላይ እንደሚተማመኑ እናውቃለን እናም በቅርብ ጊዜ ስላጋጠሙት መቋረጥ እና ለማሻሻል እየተደረጉ ያሉ ጥረቶች በተቻለ መጠን ግልጽ ለመሆን እንሞክራለን።

PS ከተርጓሚ

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ