2014-04-02 7 views
5

के साथ iIS सर्वर में आईआईएस सर्वर सिंक्रनाइज़ करना हम लोड-संतुलित, ऑटोस्कलिंग वेब सर्वर (आईआईएस) के साथ अमेज़ॅन ईसी 2 पर अपना वेब एप्लिकेशन चलाते हैं।ऑटोस्कलिंग सर्वोत्तम अभ्यास

ऑटोस्केलिंग से पहले, हमारी परिनियोजन प्रक्रिया कुछ बड़े वेब सर्वरों पर फ़ाइल-कॉपी थी।

अब ऑटोस्केलिंग के साथ हमारे पास 5 से 12 वेबसर्वर से कुछ भी है जो डिस्प्लेमेंट प्रक्रिया को और अधिक कठिन बनाते हुए प्रकट होता है और गायब हो जाता है।

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

तैनाती सर्वर के पुनर्निर्माण के बाद तक सभी अच्छे होने लगते थे, सिंक स्क्रिप्ट वेब साइटों की चलती स्थिति को अपडेट नहीं करती है। तो मैं साइट को रखरखाव मोड में डाल सकता हूं।

मुझे पता करना चाहते हैं:

  • कैसे अन्य लोगों को समस्या दृष्टिकोण (WFF के अभाव में आईआईएस 8 के लिए) (विशेष रूप से आईआईएस सर्वर EC2 autoscaling में सिंक कर रहा है)

  • क्यों शुरू/बंद सिंक विफल हो रहा है

कोड:

Set-AWSCredentials -AccessKey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -SecretKey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
Set-DefaultAWSRegion "us-west-2" 

$date = get-date 
$dateString = $date.ToString("yyyyMMdd-HHmm") 
$name = $dateString + "Web" 
$imageId = new-ec2image -InstanceId x-xxxxxxxx -Name $name -NoReboot 1 

$launchConfiguration = New-ASLaunchConfiguration -LaunchConfigurationName $name -ImageId $imageId -InstanceType "m3.medium" -SecurityGroups @('Web') -InstanceMonitoring_Enabled $false 

Update-AsAutoScalingGroup -AutoScalingGroupName "XxxxxxxxxxxxXxxxxxxxxx" -LaunchConfigurationName $name 

$a = Get-ASAutoScalingInstance | select -expandproperty InstanceId | Get-EC2Instance | select -expandproperty RunningInstance | select -property PrivateIpAddress 

foreach($ip in $a) 
{ 
     $command = "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" 
     $arg = "-dest:webServer,computerName=" + $ip.PrivateIpAddress; 
     $args = @('-verb:sync', '-source:webServer', $arg) 
     &$command $args 
} 
+0

स्वरूपण पर किसी भी मदद की सराहना की। चार वर्णों से कोड इंडेंट किया है लेकिन कोई खुशी नहीं है। – sentece

उत्तर

4

वेब सर्वरों को आजमाएं और "सिंक" न करें। एक बार इंस्टॉल करने पर विचार करें - और सिंक्रनाइज़ेशन को प्रबंधित करने के लिए टूल बूट करने की अनुमति दें।

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

यह एक सीएफएन-हूप अपडेट ट्रिगर करता है, जिससे प्रत्येक सर्वर एस 3 से पैकेज को खींच लेगा और पुनः स्थापित करेगा।

इसके अलावा - अपने स्केलिंग समूह मापता है, यह स्वचालित रूप से नीचे खींच और लोड संतुलन के साथ उदाहरण के पंजीकरण के से पहले पूरी तरह से पैकेज स्थापित करने के लिए CFN-init का प्रयोग करेंगे।

यहाँ

इसके अलावा, मैं दो लेख कई चन्द्रमाओं पहले लिखा यह

के बारे में

यह आपको पर्याप्त देना चाहिए जा रहा करने के लिए।

+0

अब मैं थोड़ा डरा हुआ हूँ! मैं यह जानूंगा कि इसका क्या अर्थ है और वापस आशुलिपि की रिपोर्ट करें। लेकिन आपका शुक्रिया! – sentece

+0

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

+0

धन्यवाद, महान जवाब। मैंने इसे लागू नहीं किया है, लेकिन अगली बार मैं ऐसा कुछ करूंगा जो मैं करूंगा। मैंने मो के लिए अपनी मूल समस्याओं के आसपास काम किया है – sentece

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