ओपनस्टैक में डायनेमिक माइग्रेशन

डायनेमिक माइग्रेशन एक कंप्यूटिंग नोड से दूसरे में काम करने की आवृत्ति का स्थानांतरण है। क्लाउड सेवा प्रशासकों के बीच बेहद लोकप्रिय होने के कारण, इस फ़ंक्शन का उपयोग मुख्य रूप से क्लाउड रखरखाव के लिए शून्य डाउनटाइम प्रदान करने के लिए किया जाता है, और यह समय-समय पर बनाए रखने के लिए भी उपयोगी हो सकता है, आपको एक भारी लोड किए गए कंप्यूटिंग नोड से कम लोड वाले को काम के उदाहरणों को स्थानांतरित करने की अनुमति देता है।

डायनेमिक माइग्रेशन प्लानिंग को आपके ओपनस्टैक परिनियोजन की योजना और डिजाइन में जल्दी किया जाना चाहिए। कृपया निम्नलिखित पर ध्यान दें:
• आज, सभी हाइपरवाइज़र ओपनस्टैक में माइग्रेशन का समर्थन नहीं करते हैं, इसलिए हाइपरविज़रसुपोर्टमैट्रिक्स सूची में यह जांचना सबसे अच्छा है कि आपका हाइपरवाइज़र डायनेमिक माइग्रेशन का समर्थन करता है या नहीं। वर्तमान में इस सुविधा का समर्थन करने वाले हाइपरविजर, उदाहरण के लिए, KVM, QEMU, XenServer / XCP और HyperV शामिल हैं।

• एक मानक ओपनस्टैक तैनाती में, प्रत्येक गणना नोड स्थानीय रूप से एक समर्पित निर्देशिका में अपने उदाहरणों का प्रबंधन करता है (उदाहरण के लिए, / var / lib / nova / instances /), लेकिन डायनेमिक माइग्रेशन के लिए इस फ़ोल्डर को केंद्रीय रूप से संग्रहीत किया जाना चाहिए और सभी कंप्यूट नोड्स में साझा किया जाना चाहिए। इसलिए, डायनामिक माइग्रेशन के लिए फ़ाइल सिस्टम या साझा डेटा ब्लॉक्स के स्टोरेज की मौजूदगी एक महत्वपूर्ण आवश्यकता है। ऐसे डेटा भंडारण के लिए, यह आवश्यक है कि वितरित फ़ाइल सिस्टम जैसे GlusterFS या NFS को सही ढंग से कॉन्फ़िगर किया जाए और माइग्रेशन शुरू होने से पहले इसे चलाया जाए। सैन स्टोरेज प्रोटोकॉल जैसे फाइबर चैनल (FC) और iSCSI का उपयोग साझा मेमोरी के लिए भी किया जा सकता है।

• साझा मेमोरी में सेंट्रलाइज्ड स्टोरेज का उपयोग करते समय फाइलों को एक्सेस अधिकार प्रदान करने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि कंप्युटर (नोवा) का यूआईडी और जीआईडी ​​नियंत्रक नोड पर और सभी कंप्यूटिंग नोड्स पर समान है (यह माना जाता है कि साझा मेमोरी कंट्रोलर नोड में स्थित है)। इसके अलावा, libvirt-qemu के UID और GID भी सभी कंप्यूट नोड्स पर समान होने चाहिए।

• vncserver_listen = 0.0.0.0 को सेट करना महत्वपूर्ण है ताकि vnc सर्वर सभी कंप्यूट नोड्स से कनेक्शन स्वीकार कर सके, भले ही उदाहरण चल रहे हों। यदि यह मान सेट नहीं है, तो vnc के माध्यम से स्थानांतरित उदाहरणों तक पहुंच के साथ समस्याएं हो सकती हैं, क्योंकि लक्ष्य गणना नोड का आईपी पता स्रोत गणना नोड के आईपी पते से मेल नहीं खाएगा।

निम्न निर्देश आपको उबंटू 12.04 LTS और NFS फाइल शेयरिंग सिस्टम पर चल रहे KVM हाइपरविजर का उपयोग करके OpenStack मल्टी-मोड प्लेटफ़ॉर्म को परिनियोजित करने पर डायनेमिक माइग्रेशन करने की अनुमति देगा। यह मार्गदर्शिका मानती है कि एक तैनात और काम करने वाला मल्टी-मोड प्लेटफ़ॉर्म पहले से ही अनअटेंडेड इंस्टॉलेशन सिस्टम जैसे कि मिरांटिस फ्यूल का उपयोग करके कॉन्फ़िगर किया गया है। मैनुअल निम्नलिखित घटकों का उपयोग करके परीक्षणों पर आधारित है: एक क्लाउड नियंत्रक नोड, न्यूट्रॉन नेटवर्क कनेक्शन सेवा का उपयोग कर एक नेटवर्क नोड, और दो कंप्यूटिंग नोड्स।

मैं इस तथ्य पर आपका ध्यान आकर्षित करता हूं कि गाइड गतिशील प्रवास के दौरान सुरक्षा पहलुओं को संबोधित नहीं करता है। इस महत्वपूर्ण प्रश्न का स्वयं अध्ययन करें और सुरक्षा के संदर्भ में कार्रवाई के लिए तैयार गाइड के रूप में इन निर्देशों को न लें।
गाइड में दो चरण शामिल हैं: पहला, एनएफएस कार्यान्वयन प्रक्रिया; दूसरा गतिशील प्रवास का एक प्रदर्शन है।

भाग 1: एनएफएस फ़ाइल शेयरिंग सिस्टम को लागू करना


क्लाउड कंट्रोलर होस्ट एक NFS सर्वर है। लक्ष्य अपने Openstack क्लस्टर में सभी गणना नोड्स के साथ / var / lib / nova / उदाहरण साझा करना है। निर्देशिका में libvirt KVM डिस्क छवि फ़ाइलें इस गणना नोड में स्थित उदाहरणों के लिए हैं। यदि आप साझा संग्रहण वातावरण में क्लाउड का उपयोग नहीं कर रहे हैं, तो यह निर्देशिका सभी कंप्यूट नोड्स के लिए अद्वितीय होगी। ध्यान दें कि यदि आपके माइग्रेशन डायनेमिक माइग्रेशन कॉन्फ़िगरेशन से पहले ही क्लाउड में चल रहे हैं, तो आपको उन इंस्टेंस को ब्लॉक करने से बचने के लिए सावधानी बरतनी चाहिए।

एनएफएस सर्वर / कंट्रोलर नोड पर निम्न कार्य करें:
1. NFS सर्वर स्थापित करें।
रूट @ vmcon-mn: ~ # apt-get install एनएफ़एस-कर्नेल-सर्वर

2. IDMAPD उपयोगकर्ता और समूह आईडी को उनके नाम और इसके विपरीत में अनुवाद करके NFSv4 कर्नेल क्लाइंट और सर्वर कार्यक्षमता प्रदान करता है। संशोधित / / डिफ़ॉल्ट / nfs-कर्नेल-सर्वर और निर्दिष्ट विकल्प का मान सेट करें = हाँ। यह फ़ाइल क्लाइंट और NFS सर्वर दोनों पर समान होनी चाहिए।
NEED_IDMAPD = हां # केवल Ubuntu 11.10 और इससे पहले के लिए आवश्यक है

3. सत्यापित करें कि फ़ाइल /etc/idmapd.conf में निम्नलिखित शामिल हैं:
[मानचित्रण]

कोई नहीं-उपयोगकर्ता = कोई नहीं
कोई नहीं-समूह = नोग्रुप

4. शेयर / var / lib / nova / उदाहरणों के लिए, निम्नलिखित को जोड़ने के लिए / etc / निर्यात:
192.168.122.0/24(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash)

जहां 192.168.122.0/24 आपके ओपनस्टैक क्लस्टर के लिए कंप्यूटिंग नोड्स (आमतौर पर लक्ष्य डेटा नेटवर्क) का नेटवर्क पता है।

5. साझा निर्देशिका में 'निष्पादित' बिट के निम्नलिखित मान को सेट करें ताकि नोड्स को संकलित करने के लिए निर्यात करते समय qemu निर्देशिकाओं के अंदर की छवियों का उपयोग कर सकें।
रूट @ vmcom1-mn: ~ # chmod o + x / var / lib / nova / उदाहरण

6. सेवाओं को पुनरारंभ करें।
रूट @ vmcon-mn: ~ # सेवा nfs-kernel-server पुनः आरंभ
root @ vmcon-mn: ~ # /etc/init.d/idmapd पुनः आरंभ करें

प्रत्येक गणना नोड पर निम्नलिखित चरणों को पूरा करें:
1. NFS क्लाइंट सेवाओं को स्थापित करें।
root @ vmcom1-mn: ~ # apt-get install nfs-common

2. संशोधित / आदि / डिफ़ॉल्ट / एनएफ़एस-सामान्य और निर्दिष्ट विकल्प का मान सेट करें = हाँ।
NEED_IDMAPD = हां # केवल Ubuntu 11.10 या इससे पहले के लिए आवश्यक है

3. NFS सर्वर से फाइल शेयरिंग सिस्टम को माउंट करें।
माउंट एनएफएस-सर्वर: / var / lib / nova / instances / var / lib / nova / उदाहरण
जहां एनएफएस-सर्वर एनएफएस सर्वर का होस्टनाम / आईपी पता है।

4. प्रत्येक रिबूट के बाद इसे वापस नहीं करने के लिए, निम्नलिखित लाइन को / etc / fstab में जोड़ें:
nfs-server: / / var / lib / nova / उदाहरण nfs ऑटो 0 0

5. सभी कंप्यूट नोड्स की जाँच करें और सत्यापित करें कि अनुमतियाँ निम्न मानों पर सेट हैं। इससे पता चलता है कि ऊपर chmod + x कमांड का उपयोग करके कंट्रोलर नोड पर सही अनुमतियाँ सेट की गई हैं।
रूट @ vmcom1-mn: ~ # ls -ld / var / lib / nova / instances /
drwxr-xr-x 8 nova nova 4096 Oct 3 12:41 / var / lib / nova / उदाहरण /

6. सुनिश्चित करें कि निर्यात की गई निर्देशिका को माउंट किया जा सकता है और यह माउंट किया गया है।
रूट @ vmcom1-mn # माउंट -a -v
रूट @ vmcom1-mn: ~ # df -k
फाइलसिस्टम 1 के-ब्लॉक उपलब्ध उपलब्ध उपयोग% पर चल रहा है
/ देव / vda1 6192704 1732332 4145800 30% /
udv 1991628 4 1991624 1% / देव
tmpfs 800176 284 799892 1% / रन
5120 0 5120 0% / रन / लॉक कोई नहीं
कोई नहीं 2000432 0 2000432 0% / रन / shm
cgroup 2000432 0 2000432 0% / sys / fs / cgroup
vmcon-mn: / var / lib / nova / उदाहरण 6192896 2773760 3104512 48% / var / lib / nova / उदाहरण

जाँच करें कि क्या अंतिम पंक्ति सूची में एक से मेल खाती है। इसका अर्थ है कि NFS सर्वर से / var / lib / nova / उदाहरणों का निर्यात सही था। यदि यह रेखा नहीं है, तो आपका एनएफएस साझा फ़ाइल सिस्टम त्रुटियों के साथ काम कर सकता है, और आपको जारी रखने से पहले उन्हें ठीक करने की आवश्यकता है।

7. libvirt सेटिंग अपडेट करें। /Etc/libvirt/libvirtd.conf संशोधित करें। सभी विकल्पों को देखने के लिए, libvirtd सेटिंग्स देखें।
इससे पहले: # सूचीबद्ध_टीएस = 0
बाद: सुनो_टेल्स = 0

इससे पहले: #सूची__ccp = 1
बाद: सुनो_टीकैप = 1

जोड़ें: dif_tcp = "कोई नहीं"

8. संशोधित /etc/init/libvirt-bin.conf।
पहले: निष्पादित / usr / sbin / libvirtd -d
बाद: निष्पादित / usr / sbin / libvirtd -d -l

-एल - सुनने के लिए छोटा

9. संशोधित / आदि / डिफ़ॉल्ट / libvirt- बिन।
इससे पहले: libvirtd_opts = "-d"
के बाद: libvirtd_opts = "-d -l"

10. कामवासना को फिर से शुरू करना। इस आदेश को निष्पादित करने के बाद, सुनिश्चित करें कि libvirt को पुनरारंभ करना सफल है।
$ रोकें libvirt-bin && शुरू करें libvirt-bin
$ ps -ef | grep libvirt

अन्य सेटिंग्स

यदि डायनामिक माइग्रेशन की शुरुआत से ही योजना बनाई गई थी और बुनियादी आवश्यकताओं को पूरा किया गया हो, तो आप नीचे दिए गए चरणों को छोड़ सकते हैं, जैसा कि परिचय में दर्शाया गया है। ये कार्रवाई यह सुनिश्चित करने के लिए की जाती है कि नोवा यूआईडी और जीआईडी ​​नियंत्रक नोड पर और सभी कंप्यूटिंग नोड्स पर समान हैं। इसके अलावा, यूआईडी और जीआईडी ​​पहचानकर्ता libvirt-qemu सभी कंप्यूट नोड्स पर समान होना चाहिए। ऐसा करने के लिए, आपको मैन्युअल रूप से कंप्यूटिंग नोड्स और नियंत्रक पर एकजुट करने के लिए GID और UID को बदलने की आवश्यकता है।
निम्नलिखित कार्य करें:
1. नियंत्रक नोड पर नोवा आईडी मान की जांच करें, फिर सभी कंप्यूट नोड्स पर समान करें:
[रूट @ vmcon-mn ~] # आईडी नोवा
uid = 110 (nova) gid = 117 (nova) समूह = 117 (nova), 113 (libvirtd)

2. अब जब हम नोवा यूआईडी और जीआईडी ​​मूल्यों को जानते हैं, तो हम उन्हें सभी कम्प्यूट नोड्स पर बदल सकते हैं, जैसा कि नीचे दिखाया गया है:
[रूट @ vmcom1-mn ~] # usermod -u 110 नोवा
[रूट @ vmcom1-mn ~] # ग्रुपमोड -g 117 नोवा

सभी कंप्यूट नोड्स के लिए इन चरणों को दोहराएं।

3. libvirt-qemu के लिए भी ऐसा ही करें, लेकिन याद रखें कि नियंत्रक नोड में यह उपयोगकर्ता नहीं है, क्योंकि नियंत्रक हाइपरविजर शुरू नहीं करता है। सुनिश्चित करें कि सभी कंप्यूट नोड्स उपयोगकर्ता के libvirt-qemu के लिए समान UID और GID हैं।

4. चूंकि हमने उपयोगकर्ताओं के यूआईडी और जीआईडी ​​को नोवा और लिब्वर्ट-क्यूमू में बदल दिया है, हमें यह सुनिश्चित करने की आवश्यकता है कि यह इन उपयोगकर्ताओं के स्वामित्व वाली सभी फाइलों में परिलक्षित होता है। ऐसा करने के लिए, निम्नलिखित करें। गणना नोड पर nova-api और libvirt-bin सेवाओं को रोकें। क्रमशः उपयोगकर्ता नोवा और उपयोगकर्ता समूह नोवा के स्वामित्व वाली सभी फाइलों में नए यूआईडी और जीआईडी ​​मूल्यों के साथ बदलें। उदाहरण के लिए:
[रूट @ vmcom1-mn ~] # सेवा nova-api स्टॉप
[रूट @ vmcom1-mn ~] # सेवा से libvirt- बिन रोक
[रूट @ vmcom1-mn ~] #find / -uid 106 -exec chown nova {} \; # नोट बदलने से पहले यहाँ 106 पुराना नोवा यूआईडी है
[रूट @ vmcom1-mn ~] #find / -uid 104 -exec chown libvirt-qemu {} \; # नोट यहाँ 104 परिवर्तन से पहले पुराना नोवा यूआईडी है
[रूट @ vmcom1-mn ~] # / -gid 107 -exec chgrp nova {} \; # नोट बदलने से पहले यहां 107 नंबर पुराना नोवा यूआईडी है
[रूट @ vmcom1-mn ~] #find / -gid 104 -exec chgrp libvirt-qemu {} \; # नोट 104 यहाँ बदलाव से पहले पुराना नोवा यूआईडी है
[रूट @ vmcom1-mn ~] # सेवा nova-api पुनरारंभ करें
[रूट @ vmcom1-mn ~] # सेवा से libvirt- बिन पुनरारंभ करें

भाग 2: एक ओपनस्टैक वर्चुअल मशीन का डायनेमिक माइग्रेशन।


OpenStack क्लस्टर और NFS साझा फ़ाइल सिस्टम को ठीक से कॉन्फ़िगर करने के बाद, आप डायनेमिक माइग्रेशन शुरू कर सकते हैं। नियंत्रक नोड पर निम्नलिखित चरणों को पूरा करें:
1. चल रहे उदाहरणों की आईडी सत्यापित करें।
नोवा सूची
रूट @ vmcon-mn: ~ # नोवा सूची
+ -------------------------------------- + ------ + --- ----- + ------------------------ +
| आईडी | नाम | स्थिति | नेटवर्क |
+ -------------------------------------- + ------ + --- ----- + ------------------------ +
| 0bb04bc1-5535-49e2-8769-53fa42e184c8 | vm1 | सक्रिय | net_proj_one = 10.10.1.4 |
| d93572ec-4796-4795-ade8-cfeb2a770cf2 | vm2 | सक्रिय | net_proj_one = 10.10.1.5 |
+ -------------------------------------- + ------ + --- ----- + ------------------------ +

2. जांच करें कि कौन सी गणना नोड्स को चला रही है।
नोवा-प्रबंधन vm सूची
रूट @ vmcon-mn: ~ # नोवा-प्रबंधन vm सूची

उदाहरण नोड प्रकार स्थिति लॉन्च की गई छवि कर्नेल रैमडिस्क परियोजना उपयोगकर्ता क्षेत्र सूचकांक
vm1 vmcom2-mn m1.tiny सक्रिय 2013-10-03 13:33:52 b353319f-efef-4f1a-a20c-23949c82abd8 419303e31d40475ac5b7d554b28a22f cd516c290d4e4378dd605605/60560511
vm2 vmcom1-mn m1.tiny सक्रिय 2013-10-03 13:34:33 b353319f-efef-4f1a-a20c-23949c82abd8 419303e31d404759c5b7d554b28a22f cd516c290d4e4d8605d605605

हम देखते हैं कि vm1 वर्चुअल मशीन कम्प्यूट नोड 2 (vmcom2-mn) पर चल रही है, और vm2 नोड 1 (vmcom1-mn) पर चल रही है।

3. गतिशील प्रवास करें। हम vm1 को id 0bb04bc1-5535-49e2-8769-53fa42e184c8 (उपरोक्त नोवा सूची से प्राप्त) के साथ गणना करेंगे नोड 2 की गणना के लिए चल रहे नोड 1 (ऊपर vm सूची में nova- प्रबंधन कमांड देखें), vmcom1-mn । कृपया ध्यान दें कि यह एक प्रशासनिक कार्य है, इसलिए, एक नियम के रूप में, आपको पहले व्यवस्थापक क्रेडेंशियल्स के साथ चर या स्रोत फ़ाइल को निर्यात करने की आवश्यकता है।
रूट @ vmcon-mn: ~ # निर्यात OS_TENANT_NAME = व्यवस्थापक
रूट @ vmcon-mn: ~ # निर्यात OS_USERNAME = व्यवस्थापक
रूट @ vmcon-mn: ~ # निर्यात OS_PASSWORD = व्यवस्थापक
रूट @ vmcon-mn: ~ # निर्यात OS_AUTH_URL = " 10.0.0.51 : 5000 / v2.0 /"
रूट @ vmcon-mn: ~ # नोवा लाइव-माइग्रेशन 0bb04bc1-5535-49e2-8769- 53fa42e184c8 vmcom1-mn

सफल होने पर, नोवा लाइव-माइग्रेशन कमांड कुछ भी नहीं देता है।

4. सत्यापित करें कि माइग्रेशन पूर्ण है:
रूट @ vmcon-mn: ~ # नोवा-प्रबंधन vm सूची

उदाहरण नोड प्रकार स्थिति लॉन्च की गई छवि कर्नेल रैमडिस्क परियोजना उपयोगकर्ता क्षेत्र सूचकांक
vm1 vmcom1-mn m1.tiny सक्रिय 2013-10-03 13:33:52 b353319f-efef-4f1a-a20c-23949c82abd8 419303e31d40475ac5b7d554b28a22f cd516c290d4e4378dd605605/60560511
vm2 vmcom1-mn m1.tiny सक्रिय 2013-10-03 13:34:33 b353319f-efef-4f1a-a20c-23949c82abd8 419303e31d404759c5b7d554b28a22f cd516c290d4e4d8605d605605

हम देखते हैं कि दोनों उदाहरण अब एक ही नोड पर काम करते हैं।

निष्कर्ष


डायनेमिक माइग्रेशन शून्य डाउनटाइम सुनिश्चित करने के लिए महत्वपूर्ण है जब आप ओपनस्टैक क्लाउड की सर्विसिंग करते हैं जब आपको कुछ गणना नोड्स को रोकने की आवश्यकता होती है। साझा संग्रहण को कार्यान्वित करने और इंस्टेंस माइग्रेशन को चलाने के लिए ऊपर वर्णित चरणों को NFS फ़ाइल साझाकरण प्रणाली का उपयोग करके Ubuntu 12.04 OS पर चलने वाले ओपनस्टैक ग्रिज़ली क्लाउड पर डायनेमिक माइग्रेशन प्रदर्शित करने के लिए किया गया था।

मूल लेख अंग्रेजी में

Source: https://habr.com/ru/post/In206224/


All Articles