2016-10-06 10 views
5

विफल रहता है मैंने 5 नोड स्टैंडअलोन क्लस्टर में एक एप्लिकेशन तैनात किया है। तैनाती सफल सफल रही। लेकिन आवेदन में कुछ बग की वजह से एप्लिकेशन शुरू नहीं हुआ था। मैंने सेवा फैब्रिक एक्सप्लोरर का उपयोग करके क्लस्टर से एप्लिकेशन को हटाने का प्रयास किया लेकिन यह विफल हो गया।सेवा फैब्रिक एप्लिकेशन को हटाने में

आवेदन का स्वास्थ्य राज्य "त्रुटि" है और स्थिति "हटाना" एप्लिकेशन में 9 सेवाएं हैं। 6 सेवाएं एक प्रश्न चिह्न के साथ एक स्वास्थ्य राज्य "अज्ञात" और एक स्थिति "अज्ञात" दिखाती हैं। 3 सेवाएं एक स्वास्थ्य स्थिति "ठीक है" दिखाती हैं लेकिन स्थिति "हटाना" के साथ।

मैं भी powershell उपयोग करके उसे निकालने की कोशिश की है:

Remove-ServiceFabricApplication -ApplicationName fabric:/appname -Force -ForceRemove 

परिणाम एक कार्रवाई का समय समाप्त हो गया था।

मैंने नीचे दी गई लिपि की भी कोशिश की जो मुझे किसी अन्य पोस्ट में मिली।

Connect-ServiceFabricCluster -ConnectionEndpoint localhost:19000 

$nodes = Get-ServiceFabricNode 

foreach($node in $nodes) 
{ 
    $replicas = Get-ServiceFabricDeployedReplica -NodeName $node.NodeName - ApplicationName "fabric:/MyApp" 

    foreach ($replica in $replicas) 
    { 
     Remove-ServiceFabricReplica -ForceRemove -NodeName $node.NodeName -PartitionId $replica.Partitionid -ReplicaOrInstanceId $replica.ReplicaOrInstanceId 
    } 
} 

इसके परिणामस्वरूप, स्क्रिप्ट को हटाने के लिए कोई प्रतिकृति नहीं मिली।

उसी समय हमने सिस्टम सेवाओं में से एक को भी हटा दिया। कपड़े:/सिस्टम/नामकरण सेवा सेवा एक "चेतावनी" स्वास्थ्य स्थिति दिखाती है। यह विभाजन 00000000-0000-0000-0000-000000001002 पर है। प्राथमिक प्रतिकृति दिखाता है:
अस्वास्थ्यकर घटना: SourceId = 'System.NamingService', संपत्ति = 'अवधि_PrimaryRecovery', हेल्थस्टेट = 'चेतावनी', ThinkWarningAsError = false। प्राथमिक रिकवरी 2016-10-06 07: 55: 21.252 को 30: 00.000 से अधिक समय ले रही है।

मैंने बिना किसी परिणाम के प्रत्येक नोड (उस समय 1) को भी पुनरारंभ किया।

क्लस्टर को पुनर्निर्माण किए बिना एप्लिकेशन को हटाने के लिए कैसे बल देना है क्योंकि यह उत्पादन वातावरण के लिए एक विकल्प नहीं है।

उत्तर

4

हाँ यह तब हो सकता है जब आप अपने कोड को RunAsync से बाहर निकलने या आपके ICOMunicationListener के बंद/बंद करने की अनुमति न दें।

कुछ पृष्ठभूमि:

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

जब आप एक सेवा हटाते हैं, तो हम आपकी सेवा को भूमिका और करीब बदलने के लिए कहते हैं। यदि आपका कोड जवाब नहीं देता है, तो वह उस स्थिति में फंस जाएगा।

उस स्थिति से बाहर निकलने के लिए, आप Remove-ServiceFabricReplica -ForceRemove चला सकते हैं। यह अनिवार्य रूप से सिस्टम से प्रतिकृति को छोड़ देता है - जहां तक ​​सेवा फैब्रिक का संबंध है, प्रतिकृति खत्म हो गई है। लेकिन आपकी प्रक्रिया अभी भी चल रही है। तो आपको प्रक्रिया में भी जाना होगा और मारना होगा।

+0

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

संबंधित मुद्दे