ฉันควรอัพเดทเซิร์ฟเวอร์ Linux บ่อยแค่ไหน?


56

ฉันรับผิดชอบการจัดการทั้งเซิร์ฟเวอร์ที่ใช้งานจริงของเรา (เมล, เว็บ, ฐานข้อมูลทั้งหมดในเซิร์ฟเวอร์เดียว) และเซิร์ฟเวอร์ทดสอบของเรา ทั้งสองถูกสร้างขึ้นบนเดเบียน อย่างไรก็ตามเนื่องจากฉันยังใหม่ต่อการดูแลระบบฉันเพิ่งติดตั้งการอัปเดตเมื่อพบสิ่งที่ต้องอัปเดตเพื่อที่ฉันจะได้มีฟีเจอร์ที่ใหม่กว่าและรับการแก้ไขข้อบกพร่อง ตอนนี้มันเป็นกระบวนการเฉพาะกิจที่สวยงามและฉันต้องการทำให้มันน้อยลง

ดังนั้นฉันสงสัยว่าคนที่รู้ว่าสิ่งที่พวกเขากำลังจัดการกับเรื่องนี้ คุณทำการอัพเกรดบนเซิร์ฟเวอร์บ่อยแค่ไหน? กระบวนการอัพเกรดต่างจากการทดสอบและการผลิตหรือไม่? คุณอัพเกรดเซิร์ฟเวอร์ทดสอบใด ๆ เป็นอันดับแรกเสมอหรือไม่? และคุณทำการอัปเดตซอฟต์แวร์ทั้งหมดหรือคุณเพียงแค่ติดตั้งการอัพเดตที่เลือกไว้?

คำตอบ:


34

ฉันรันapt-get update -qq; apt-get upgrade -duyqทุกวัน การดำเนินการนี้จะตรวจสอบการอัปเดต แต่จะไม่ทำการอัพเดทอัตโนมัติ

จากนั้นฉันสามารถเรียกใช้การอัปเกรดด้วยตนเองในขณะที่ฉันดูและสามารถแก้ไขสิ่งที่อาจผิดพลาดได้

นอกเหนือจากความกังวลด้านความปลอดภัยของการบำรุงรักษาระบบที่มีการติดตั้งฉันพบว่าถ้าฉันปล่อยให้มันยาวเกินไประหว่างแพตช์ฉันลงเอยด้วยแพคเกจทั้งหมดที่ต้องการอัพเกรดและที่ทำให้ฉันกลัวมากกว่าการอัพเกรด สองทุก ๆ สัปดาห์หรือมากกว่านั้น ดังนั้นฉันมักจะทำการอัพเกรดของฉันทุกสัปดาห์หรือหากพวกเขามีความสำคัญสูงทุกวัน นี่เป็นข้อได้เปรียบที่เพิ่มเข้ามาของการรู้ว่าแพ็คเกจใดที่ทำให้ระบบของคุณพัง (เช่นถ้าคุณเพิ่งอัพเกรดเป็นคู่ต่อครั้ง)

ฉันมักจะอัพเกรดระบบที่สำคัญน้อยกว่าเสมอก่อน ฉันยังมี "แผนย้อนกลับ" ในสถานที่ในกรณีที่ฉันไม่สามารถแก้ไขระบบได้ (เนื่องจากเซิร์ฟเวอร์ส่วนใหญ่ของเราเป็นเสมือนแผนย้อนกลับนี้มักจะประกอบด้วยการจับภาพก่อนการอัพเกรดที่ฉันสามารถเปลี่ยนกลับได้หากจำเป็น)

ที่ถูกกล่าวว่าฉันคิดว่าการอัพเกรดได้ทำลายบางสิ่งบางอย่างเพียงครั้งเดียวหรือสองครั้งในช่วง 4 ปีที่ผ่านมาและนั่นเป็นระบบที่มีการปรับแต่งสูง - ดังนั้นคุณไม่จำเป็นต้องเป็นหวาดระแวงเกินไป :)


4
ฉันทำงานอย่างหนักเพื่อสัมผัสเซิร์ฟเวอร์แต่ละเครื่องทุก 30 วัน ตอนนี้ฉันมีเซิร์ฟเวอร์มากกว่า 80 แห่งแล้ว ฉันทำพวกมันเป็นกลุ่มตามหน้าที่หรือตามระบบปฏิบัติการ
Thomas Denton

2
เรามีสคริปต์ cron ที่ทำงานเทียบเท่ากับกล่อง SLES / OpenSuSE ของเราทุกคืน เมื่อพบว่าต้องการแพ็กเกจจะส่งตั๋วไปยังคิวการบริหารระบบในระบบตั๋วปัญหาของเรา (มันจะติดตามคนที่มันส่งมาก่อนในแฟ้มใน / tmp เพื่อที่จะไม่สแปมคิว.)
คาร์ล Katzke

4
Debian มีสองแพ็คเกจคือ apticron และ cron-apt ซึ่งทำสิ่งที่คล้ายกันและส่งอีเมลถึงคุณหากมีการปรับปรุงใด ๆ IME apticron มีความได้เปรียบโดยส่งอีเมลการเปลี่ยนแปลงให้คุณเพื่อให้คุณสามารถเห็นสิ่งที่เปลี่ยนแปลงไป
David Pashley


6

สมมติว่าคุณกำลังใช้งาน Debian รุ่นที่เสถียรโปรแกรมแก้ไขส่วนใหญ่จะเป็นความปลอดภัยหรือข้อผิดพลาดที่เกี่ยวข้องซึ่งหมายความว่าจะไม่มีการเปลี่ยนแปลงที่สำคัญระหว่างเวอร์ชั่นของแพ็คเกจที่ให้ ตามแพทช์แก้ไขนโยบายเดเบียนควรได้รับการทดสอบสำหรับบางครั้งก่อนที่จะถูกย้ายไปยังสาขาที่มั่นคงโดยผู้ดูแล เห็นได้ชัดว่านี่จะไม่หยุดการแตกหักเมื่อทำการปะแก้ แต่ควรป้องกันในกรณีส่วนใหญ่

ควรระมัดระวังเพื่อให้แน่ใจว่าการทดสอบการทดสอบของคุณได้รับการอัปเดตและแพคเกจใด ๆ ที่มีข้อบกพร่องซึ่งส่งผลกระทบต่อคุณและเซิร์ฟเวอร์ของคุณควรได้รับการอัปเดต แพ็คเกจทั้งหมดที่มีคำแนะนำด้านความปลอดภัยควรได้รับการอัปเดตทันทีที่คุณทราบว่าโปรแกรมแก้ไขนั้นเสถียร

เดเบียนมักเป็นระบบปฏิบัติการที่เสถียรและไม่ใช่สิ่งที่คุณควรกังวลเกี่ยวกับการแตกหักมากเกินไปอย่างไรก็ตามควรอ่านสิ่งที่จะได้รับการอัปเดตก่อนที่จะได้รับการอัปเดตและคอยจับตาดูสิ่งที่แปลก ฉันใช้ VCS กับ / etc / dir ของฉันเช่นกันเพื่อให้แน่ใจว่าการเปลี่ยนแปลงไฟล์ config ใด ๆ สามารถเห็นได้ด้วยคำสั่ง 'git diff'


3

ฉันทำแบบแห้ง (ครั้งแรก) เพื่อดูว่าจะมีการปรับปรุงอะไรบ้าง บางครั้งไลบรารี (ขอให้เรียกว่า libfoo สำหรับตัวอย่างนี้) เปลี่ยน API ซึ่งแบ่งโปรแกรมที่เราเขียน / ติดตั้งเอง หากมีการอัปเดตห้องสมุดที่สำคัญฉันจะดึงแหล่งที่มาและลองสร้างเนื้อหาของเราใหม่ก่อนที่จะอัปเดต

ฉันยังตรวจสอบเพื่อดูว่าเราไม่ได้กระโดดไปที่เวอร์ชันกลางของบริการสาธารณะบางอย่างเช่น apache และอื่น ๆ ฉันควรจะอยู่หนึ่งปีข้างหน้าและไม่พบการแตกสุ่มหากไม่ได้รับการอัปเดต

หากคุณเป็นผู้ดูแลระบบคุณควรดึง RSS ฟีดจากเว็บไซต์อย่างSecuniaซึ่งควรแจ้งให้คุณทราบล่วงหน้าหาก distro ของคุณกำลังจะผลักดันแพตช์

อย่าอัปเกรด / อัปเดตทุกครั้ง โชคไม่ดีที่งานของการรู้ว่าอะไรเกิดขึ้นกับคุณไม่ใช่ผู้จัดการแพ็คเกจ distro โดยเฉพาะอย่างยิ่งหากระบบของคุณสนับสนุนโปรแกรมเมอร์


2

ฉันทำงานที่ไหนเรามีกระบวนการมากมายที่เกี่ยวข้องกับการใช้ซอฟต์แวร์ที่เรียกว่า PatchLink เพื่อแจ้งให้เราทราบถึงการปรับปรุงที่เกี่ยวข้องกับความปลอดภัยที่สำคัญที่สุดและเราจะใช้พวกเขาหลังจากการทดสอบบนบรรจุภัณฑ์ตามแพ็คเกจ เรามีเซิร์ฟเวอร์นับพัน

หากคุณมีเซิร์ฟเวอร์เพียงสองเครื่องกระบวนการนั้นง่ายกว่ามาก แม้ว่าฉันไม่คิดว่าการทำ "apt-get update / upgrade" เป็นทางออกที่ดีที่สุดของคุณ

ฉันจะตรวจสอบแพตช์สำหรับซอฟต์แวร์ที่คุณใช้งานอยู่และทำการตัดสินใจโดยอิงตามการแก้ไขในรุ่นที่จะทำการอัปเกรด

เนื่องจากคุณมีเซิร์ฟเวอร์ทดสอบแน่นอนทดสอบการปรับปรุงก่อนที่จะใช้พวกเขาเสมอ


2

การอัปเดตด้วยตนเองจะดีที่สุดดังที่กล่าวไว้ที่นี่ในแง่ที่ว่าคุณสามารถเห็นสิ่งที่เกิดขึ้น อย่างไรก็ตามสำหรับเซิร์ฟเวอร์จำนวนมากที่อาจไม่สามารถใช้งานได้ Dry run เป็นวิธีปฏิบัติมาตรฐานจริง ๆ แล้วผู้จัดการแพคเกจส่วนใหญ่จะถามคุณก่อนดำเนินการต่อ

การอัปเดตเป็นประจำมีแนวโน้มที่จะดีที่สุดแม้ว่าจะเป็นการกระทำที่สมดุล การอัปเดตเป็นประจำหมายถึงการลดลงในครั้งเดียว หากสิ่งผิดปกติมีผู้สมัครน้อยกว่าที่จะตรวจสอบ แพคเกจยังดีกว่าเล็กน้อยในการอัปเดตในขั้นตอนที่เล็กกว่าโดยทั่วไปเมื่อโปรแกรมเมอร์อัปเดตพวกเขากำลังดูจากเวอร์ชันล่าสุดไปเป็นเวอร์ชั่นถัดไปไม่ว่าพวกเขาจะให้ความสนใจมากกว่าเวอร์ชั่นล่าสุดอาจแตกต่างกันไป ส่วนใหญ่สำหรับซอฟต์แวร์ที่พัฒนาอย่างรวดเร็ว

การอัปเดตบางรายการนั้นไม่ใช่แบบไม่ก่อกวน คุณจะต้องระวังสิ่งนี้ บางตัวจะเริ่มบริการใหม่ซึ่งนำไปสู่การหยุดทำงาน

ในการตั้งค่าในอุดมคติคุณอาจมีสิ่งต่อไปนี้:

  • วิธีการสลับเซิร์ฟเวอร์ที่ดูเหมือน (A / B หรือ tick tock) ซึ่งหมายความว่าคุณอัปเดตหนึ่งขณะที่อยู่บนม้านั่งจากนั้นเพียงสลับการรับส่งข้อมูลจากปัจจุบันไปเป็นใหม่ สิ่งนี้อาจซับซ้อนกว่าสำหรับบริการเช่นฐานข้อมูล
  • ความสามารถในการทดสอบการอัปเดต คุณควรมีเซิร์ฟเวอร์ทดสอบที่เป็นกลุ่มการผลิตจริง (แต่ไม่ต้องเชื่อมต่อกับบริการการผลิตใด ๆ ) สิ่งเหล่านี้จะอนุญาตให้คุณทดสอบการอัปเดตก่อน
  • กลยุทธ์การสำรองข้อมูลที่ดีเพิ่มขึ้นเหมาะ คุณไม่เคยรู้. ปลอดภัยกว่าเสียใจเสมอ
  • โปรดระวังว่าช่วงเวลาใดที่มีกิจกรรมมากที่สุดและระดับการหยุดทำงานของเวลาใดบ้างที่ยอมรับได้
  • รู้วิธีย้อนกลับการอัปเดตหรือแพ็คเกจเฉพาะ
  • เตรียมแพ็คเกจของคุณเองเพื่อให้การอัพเดทมีความสอดคล้องและคาดเดาได้ในเซิร์ฟเวอร์ นี่เป็นขั้นตอนแรกสู่ระบบที่ไม่มีใครดูแลที่คุณสามารถไว้วางใจได้ หมายความว่าคุณสามารถอัปเดตมิเรอร์, รันการอัปเดตบนเครื่องทดสอบหนึ่งเครื่องหรือมากกว่านั้นถ้าดีแล้วก็ปล่อยให้มันออกไปโดยอัตโนมัติ ฉันมีเวลาที่ยอดเยี่ยมกับการจัดการเครื่อง EPOS ได้ประมาณ 800 เครื่อง
  • ระดับความสอดคล้องที่ดีเพื่อให้คุณสามารถรู้ว่าหากบางสิ่งบางอย่างจะทำงานที่นี่มันจะทำงานที่นั่น

บางสิ่งเหล่านี้สามารถ overkill ถึงองศาที่แตกต่างกันสำหรับการตั้งค่าขนาดเล็ก แต่ควรเก็บไว้ในใจ

โดยทั่วไปแล้วการอัปเดตมักจะไม่เจ็บปวดสำหรับเซิร์ฟเวอร์ distros นี่เป็นเพราะพวกเขามักจะยึดติดกับการแก้ไขข้อบกพร่องและการปรับปรุงความปลอดภัย อย่างไรก็ตามคุณอาจมีปัญหาหากคนทำสิ่งแปลก ๆ ให้กับระบบหรือคุณเพิ่มแหล่งแพ็กเกจเพิ่มเติม

แม้ว่าจะเป็นของหายากในระดับปานกลาง แต่บางครั้งพวกเขาก็ทำผิดพลาดและหยุดการทำงานร่วมกันระหว่างแพ็คเกจรุ่นรอง


1

ฉันชอบ cron-apt เพื่อทำให้กระบวนการนี้เป็นอัตโนมัติ แต่เมื่อ @dinomite ชี้ให้เห็นคำถามอื่นเกี่ยวกับการอัปเดตการกำหนดค่าโดยเฉพาะเพื่อให้การอัปเดตที่เกี่ยวข้องกับความปลอดภัยโดยอัตโนมัติเป็นแนวคิดที่ฉลาดมาก - จากนั้นคุณสามารถอัพเดตสิ่งที่คุณต้องการ ฉันใช้ cron-apt กับการอัพเดททั้งหมด แต่จริงๆแล้วมันเปลี่ยนไปตามคำตอบของเขา ถ้าคุณชอบคุณควรโหวตคำตอบของเขามากกว่านี้


1

ในเดเบียนฉันติดตั้งcron-aptและแก้ไขไฟล์การกำหนดค่าเพื่อส่งอีเมลฉันหากมีการเปลี่ยนแปลงใด ๆ วิธีนี้ฉันจะได้รับแจ้งหากมีการอัพเดตสำหรับระบบของฉันและทำการอัพเดตด้วยตัวเอง


1

พร้อมสายเดียวกับ cron-ฉลาดคุณควรจะดูที่ที่ไม่ต้องใส่อัพเกรด-แพคเกจhttp://packages.debian.org/lenny/unattended-upgrades

มันง่ายมากในการกำหนดค่าและจะช่วยให้คุณสามารถดาวน์โหลดและอัปเดตการรักษาความปลอดภัยโดยอัตโนมัติ แต่ปล่อยให้การอัปเดตอื่น ๆ สำหรับการอัปเกรดด้วยตนเอง (หรือตามที่คุณต้องการทุกอย่าง!

คู่มือเซิร์ฟเวอร์ Ubuntu อย่างเป็นทางการมีส่วนที่มีรายละเอียดพอสมควรครอบคลุมการใช้แพคเกจการอัปเกรดแบบไม่ต้องใส่ข้อมูลhttps://help.ubuntu.com/9.04/serverguide/C/automatic-updates.html

หมายเหตุ: ขึ้นอยู่กับระดับของความระมัดระวัง / ความหวาดระแวงของคุณคุณสามารถทำการอัพเกรดในกลุ่มของเซิร์ฟเวอร์ทดสอบก่อนจากนั้นหากไม่มีปัญหาอนุญาตให้กล่องการผลิตของคุณอัปเดตแม้ว่าฉันจะไม่เจอปัญหาใด ๆ กับการปรับปรุงความปลอดภัย ทำลายล้างจน (เคาะบนไม้) ...

นอกจากนี้ยังมีตัวเลือกการกำหนดค่าให้ส่งผลการปรับปรุงความปลอดภัยแต่ละรายการให้คุณทางไปรษณีย์เมื่อมีการใช้งาน นอกจากนี้หากมีไดอะล็อกหรือไดอะล็อกแบบโต้ตอบใด ๆ ที่แสดงขึ้นมาในระหว่างการอัพเดตสิ่งที่จะต้องใช้การปรับแต่งด้วยตนเองโดย sysadmin มันจะพูดถึงสิ่งเหล่านี้เช่นกัน


1

ฉันปิดการอัพเดทอัตโนมัติเป็นการส่วนตัวและไม่ทำการอัพเดทแพคเกจบนเซิร์ฟเวอร์ในสภาพแวดล้อมของฉันเป็นประจำเว้นแต่: (a) มีคำแนะนำ CERT ที่สำคัญสำหรับแพ็คเกจหนึ่งในระบบของฉัน; (b) ฉันจำเป็นต้องอัพเกรดแพ็คเกจแต่ละชุดด้วยเหตุผลเฉพาะ (c) ระบบปฏิบัติการหรือแพ็คเกจใกล้ถึงจุดสิ้นสุดแล้วจะไม่ได้รับการสนับสนุนอีกต่อไปและเราจำเป็นต้องได้รับการสนับสนุนต่อไป เหตุผลของฉันคือการอัพเกรดโดยไม่ทราบว่ามีการเปลี่ยนแปลงหรือทำไมจึงเหลือพื้นที่มากเกินไปสำหรับบางสิ่งบางอย่าง ฉันทำสิ่งนี้มานานกว่า 14 ปีแล้วและใช้งานได้ดี


0

นอกจากสิ่งที่กล่าวถึงคุณควรใช้เครื่องมือตรวจสอบ (Nagios หรืออะไรก็ตามที่ลอยเรือ) เพื่อแจ้งเตือนคุณเกี่ยวกับการอัพเดท

เท่าที่ไปบ่อย: ทันทีที่มีการอัปเดต!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.