Tại sao việc nâng cấp giữa các phiên bản chính của Red Hat và CentOS lại khó khăn đến vậy?


72

"Chúng tôi có thể nâng cấp máy chủ EL5 sản xuất hiện tại của mình lên EL6 không?"

Một yêu cầu nghe có vẻ đơn giản từ hai khách hàng với môi trường hoàn toàn khác nhau đã thôi thúc câu trả lời thực hành tốt nhất thông thường của tôi là "có, nhưng nó sẽ yêu cầu xây dựng lại tất cả các hệ thống của bạn " ...

Cả hai khách hàng đều cảm thấy rằng việc xây dựng lại hoàn toàn hệ thống của họ là một lựa chọn không thể chấp nhận được vì lý do thời gian chết và tài nguyên ... Khi được hỏi tại sao cần phải cài đặt lại hệ thống đầy đủ, tôi không có câu trả lời hay, "đó là cách nó ... "

Tôi không cố gắng gợi ra phản hồi về quản lý cấu hình ("Rối loạn mọi thứ " không phải lúc nào cũng áp dụng ) hoặc làm thế nào để khách hàng có kế hoạch tốt hơn. Đây là một ví dụ thực tế về môi trường đã phát triển và phát triển mạnh về năng lực sản xuất, nhưng không thấy một con đường rõ ràng để chuyển sang phiên bản tiếp theo của HĐH.

Môi trường A:
Tổ chức phi lợi nhuận với 40 x Red Hat Enterprise Linux 5.4 và 5.5 web, máy chủ cơ sở dữ liệu và máy chủ thư, chạy một ngăn xếp ứng dụng web Java, bộ cân bằng tải phần mềm và cơ sở dữ liệu Postgres. Tất cả các hệ thống được ảo hóa trên hai cụm VMWare vSphere ở các vị trí khác nhau, mỗi cụm có HA, DRS, v.v.

Môi trường B:
Công ty kinh doanh tài chính tần số cao với hệ thống 200 x CentOS 5.x trong nhiều cơ sở đồng địa điều hành hoạt động giao dịch sản xuất, hỗ trợ phát triển nội bộ và các chức năng hỗ trợ văn phòng. Các máy chủ giao dịch đang chạy trên phần cứng máy chủ hàng hóa kim loại trần. Họ có rất nhiều sysctl.conf, rtctlđiều chỉnh ràng buộc và điều chỉnh trình điều khiển để giảm độ trễ nhắn tin. Một số có hạt nhân tùy chỉnh và / hoặc thời gian thực. Các máy trạm của nhà phát triển cũng đang chạy một phiên bản tương tự của CentOS.


Trong cả hai trường hợp, các môi trường đều chạy tốt. Mong muốn nâng cấp xuất phát từ nhu cầu về một ứng dụng hoặc tính năng mới hơn có sẵn trong EL6.

  • Đối với công ty phi lợi nhuận, nó gắn liền với Apache, kernel và một số thứ sẽ khiến các nhà phát triển hài lòng.
  • Trong công ty thương mại, đó là về một số cải tiến trong kernel, stack stack và GLIBC, điều này sẽ khiến các nhà phát triển hài lòng.

Cả hai đều là những thứ không thể dễ dàng đóng gói hoặc cập nhật mà không làm thay đổi mạnh hệ điều hành .

Là một kỹ sư hệ thống, tôi đánh giá cao Red Hat khuyên bạn nên xây dựng lại toàn bộ khi di chuyển giữa các phiên bản chính. Một khởi đầu sạch sẽ buộc bạn phải cấu trúc lại và chú ý đến các cấu hình trên đường đi.

Nhạy cảm với nhu cầu kinh doanh của khách hàng, tôi tự hỏi tại sao điều này cần phải là một nhiệm vụ khó khăn như vậy . Hệ thống đóng gói RPM không chỉ có khả năng xử lý các nâng cấp tại chỗ, nhưng đó là những chi tiết nhỏ giúp bạn: /bootyêu cầu nhiều không gian hơn, hệ thống tập tin mặc định mới, RPM có thể phá vỡ các gói nâng cấp giữa, không dùng nữa và không còn tồn tại ...

Câu trả lời ở đây là gì? Các bản phân phối khác (dựa trên .deb, Arch và Gentoo) dường như có khả năng này hoặc một con đường tốt hơn. Hãy nói rằng chúng tôi tìm thấy thời gian chết để hoàn thành nhiệm vụ này đúng cách:

  • Những khách hàng này nên làm gì để tránh vấn đề tương tự khi EL7 được phát hành và ổn định?
  • Hay đây là một trường hợp mà mọi người cần phải từ chức để xây dựng lại hoàn toàn cứ sau vài năm?
  • Điều này dường như đã trở nên tồi tệ hơn khi Enterprise Linux đã phát triển ... Hay tôi chỉ đang tưởng tượng điều đó?
  • Điều này có ngăn cản bất cứ ai sử dụng Red Hat và các hệ điều hành phái sinh không?

Tôi cho rằng có góc quản lý cấu hình, nhưng hầu hết các cài đặt Puppet tôi thấy không dịch tốt vào môi trường với các máy chủ ứng dụng được tùy chỉnh cao ( Môi trường B có thể có một máy chủ duy nhất có ifconfigđầu ra trông như thế này ). Tuy nhiên, tôi rất thú vị khi nghe các đề xuất về cách quản lý cấu hình có thể được sử dụng để giúp các tổ chức vượt qua phiên bản chính của RHEL.


16
Tôi chuẩn bị đánh dấu điều này để đóng cửa là "không mang tính xây dựng", khi tôi thấy tên của tác giả và đại diện, và vì tôn trọng tôi sẽ không làm như vậy. Tôi vẫn nghĩ đó là một câu hỏi ngớ ngẩn, bởi vì câu trả lời là "Red Hat đã quyết định nó phải như vậy". 4-> 5 nâng cấp là hoàn toàn có thể thông qua khởi động DVD và có các quy trình để thực hiện nó với một hệ điều hành trực tiếp bằng cách sử dụng yum, hầu hết thời gian làm việc cho tôi. Hy vọng duy nhất của tôi là RH đã thực hiện một khổng lồ hit của thanh đau từ khách hàng trả tiền của họ cho quyết định của mình không có đường dẫn nâng cấp được hỗ trợ 5> 6, và sẽ suy nghĩ lại này cho 6-> 7.
MadHatter

1
Điều đó nói rằng, bạn có biết đường dẫn nâng cấp không được hỗ trợ hoạt động thông qua khởi động DVD từ C5-> C6 bằng upgradeanytham số thời gian khởi động, đúng không? Tôi đã thử nghiệm nó hai lần, một lần trên bản cài đặt C5 sạch, nơi nó hoạt động tốt; một lần trên (bản sao thử nghiệm của một) bản cũ "đã từng là bản C4 và được nâng cấp" khi cài đặt thất bại một cách đáng kể.
MadHatter

2
Tôi biết rõ các tùy chọn nâng cấp và chắc chắn đã buộc cài đặt bằng cách sử dụng phương pháp RPM trực tiếp (thay đổi repo *-release filesvà tất cả). Nhưng những câu hỏi từ khách hàng trong tuần này khiến tôi suy nghĩ nhiều hơn về việc môi trường cố thủ có thể trở thành như thế nào với một phiên bản cụ thể và không có lối thoát.
ewwhite

Câu trả lời:


42

(Lưu ý của tác giả: Câu trả lời này đề cập đến RHEL 6 và các phiên bản trước. Hiện tại, RHEL 7 có đường dẫn nâng cấp được hỗ trợ đầy đủ từ RHEL 6, các chi tiết ở cuối.)


Để bắt đầu, tôi cần lưu ý rằng có hai cách để thực hiện nâng cấp tại chỗ:

  1. Thả vào DVD cài đặt (hoặc sử dụng hình ảnh DVD qua iLO / iDRAC), khởi động từ nó và chọn Nâng cấp, ví dụ linux upgradeany.
  2. Cập nhật redhat-releaseRPM bằng tay, chạy yum distro-sync(cái này được đơn giản hóa một chút) và khởi động lại.

Phương pháp 1 chỉ đơn thuần là không được hỗ trợ. Phương pháp 2 là dành cho những chàng cao bồi thực thụ. Ngoài các cài đặt mới được đề xuất, tôi đã thực hiện cả hai ...


Tôi có cần hỗ trợ không?

Hỗ trợ có hai ý nghĩa bổ sung trong thế giới của chúng tôi. Đầu tiên là một sản phẩm có một tính năng nhất định (ví dụ: "Postfix hỗ trợ SMTP"). Thứ hai là nhà cung cấp sẽ nói chuyện với bạn về nó. Những định nghĩa có nghĩa là không phải lúc nào cũng rõ ràng từ bối cảnh.

Để hoàn thành một nhiệm vụ, rõ ràng bạn cần hỗ trợ theo nghĩa đầu tiên. Trường hợp hỗ trợ nhà cung cấp đến là hỗ trợ bạn giải quyết các vấn đề và đưa ra phản hồi của nhà cung cấp về các tính năng cần tồn tại hoặc được cải thiện. Nhiều trang web trả nhiều tiền cho hỗ trợ của nhà cung cấp khi họ có chuyên môn nội bộ để giải quyết mọi vấn đề có thể phát sinh, nhanh hơn và thậm chí rẻ hơn so với nhà cung cấp có thể. Có nên mua hỗ trợ của nhà cung cấp hay không cuối cùng là một quyết định kinh doanh mà bạn sẽ phải đưa ra (hoặc tư vấn cho quản lý).


Tại sao không làm một nâng cấp tại chỗ?

Đây là những gì Red Hat nói về nó :

Red Hat không hỗ trợ nâng cấp tại chỗ giữa bất kỳ phiên bản chính nào của Red Hat Enterprise Linux. Một phiên bản chính được biểu thị bằng sự thay đổi toàn bộ phiên bản số. Ví dụ, Red Hat Enterprise Linux 5 và Red Hat Enterprise Linux 6 đều là phiên bản chính của Red Hat Enterprise Linux.

Nâng cấp tại chỗ trên các bản phát hành chính không bảo toàn tất cả các cài đặt hệ thống, dịch vụ hoặc cấu hình tùy chỉnh. Do đó, Red Hat khuyến nghị mạnh mẽ cài đặt mới khi nâng cấp từ phiên bản chính này sang phiên bản chính khác.

Họ cảnh báo thêm:

Tuy nhiên, lưu ý các hạn chế sau trước khi bạn chọn nâng cấp hệ thống của mình:

  • Các tệp cấu hình gói riêng lẻ có thể hoặc không thể hoạt động sau khi thực hiện nâng cấp do thay đổi trong các định dạng hoặc bố cục tệp cấu hình khác nhau.
  • Nếu bạn đã cài đặt một trong các sản phẩm được xếp lớp của Red Hat (chẳng hạn như Cluster Suite), thì có thể cần phải nâng cấp thủ công sau khi hoàn thành nâng cấp Red Hat Enterprise Linux.
  • Các ứng dụng của bên thứ ba hoặc ISV có thể không hoạt động chính xác sau khi nâng cấp.

Tất nhiên, sau đó họ mô tả cách thực hiện nâng cấp tại chỗ thông qua phương pháp 1, chỉ trong trường hợp bạn thực sự muốn làm điều đó. Tính năng này tồn tại và Red Hat đặt thời gian phát triển vào nó, vì vậy nó được hỗ trợ trong đó tính năng tồn tại. Nhưng nếu có sự cố xảy ra, Red Hat sẽ bảo bạn cài đặt mới; họ sẽ không cung cấp hỗ trợ của nhà cung cấp cho những thứ bị hỏng do nâng cấp.

Đối với hồ sơ, tôi chưa bao giờ thực sự gặp vấn đề với việc nâng cấp tại chỗ hệ thống RHEL / CentOS hoặc Fedora mà tôi không thể tự giải quyết. Các vấn đề điển hình đến từ các gói được đổi tên, kho lưu trữ của bên thứ ba và phiên bản không thường xuyên không khớp giữa kiến ​​trúc i386 và x86_64 của gói. Trình cài đặt tốt hơn một chút trong việc xử lý những thứ này hơn yum, tôi nghĩ vậy.


Tôi nên nâng cấp như thế nào?

Tôi thường cảnh báo mọi người rằng họ nên lập kế hoạch cho một cửa sổ bảo trì cứ sau 3-4 năm để cập nhật các hệ thống RHEL từ một phiên bản chính sang phiên bản tiếp theo. Trong khi việc nâng cấp thường diễn ra suôn sẻ, điều bất ngờ luôn có thể xảy ra.

Đối với cả hai môi trường của bạn, tôi hy vọng việc nâng cấp tại chỗ sẽ hoạt động, mặc dù tôi thực sự khuyên bạn nên kiểm tra kỹ lưỡng trước. P2V một mẫu đại diện của các máy chủ và chạy qua bản nâng cấp tại chỗ trên các hệ thống ảo để xem bạn sẽ gặp phải vấn đề gì. Sau đó, bạn có thể lập kế hoạch nâng cấp sản xuất thực tế dựa trên kiến ​​thức tốt hơn về những gì sẽ xảy ra.

Đối với một triển khai lớn như bạn có ở đây, hãy xem xét sử dụng phương pháp "một-nhiều-nhiều" của Limoncelli. Nâng cấp một máy, xem có vấn đề gì xảy ra, giải quyết chúng, sau đó sử dụng bài học kinh nghiệm khi nâng cấp một lô máy nhỏ, lặp lại các bài học kinh nghiệm, sau đó khi bạn tin rằng bạn đã giải quyết xong, hãy nâng cấp các lô lớn.

Vào thời điểm như thế này, tôi cũng khuyên bạn nên xem xét kỹ quá trình triển khai ứng dụng của bạn. Nếu nó không đủ tự động để bạn có thể khởi động nó bằng một lệnh duy nhất và chắc chắn chắc chắn rằng ứng dụng sẽ được triển khai chính xác, thì có lẽ các nhà phát triển cần phải làm việc với điều đó. Có một quy trình triển khai như vậy sẽ giúp việc cài đặt phiên bản EL mới hơn và sau đó triển khai lên nó dễ dàng hơn nhiều.


Chuyển đổi phân phối sẽ giúp?

Các bản phân phối dựa trên Debian có phương pháp nâng cấp tại chỗ được hỗ trợ và phần lớn hoạt động, nhưng nó không tránh khỏi các vấn đề. Chẳng hạn, rất nhiều thứ đã bị phá vỡ đối với những người nâng cấp từ Ubuntu 10.04 LTS lên 12.04 LTS thông qua phương thức được hỗ trợ. Không rõ rằng Debian hay Canonical đang dành đủ thời gian phát triển để "hỗ trợ" tính năng này, tức là đảm bảo nó hoạt động. Và bạn vẫn thực sự phải mua hỗ trợ của nhà cung cấp cho bản phân phối này nếu bạn muốn ai đó nắm tay bạn. Vì vậy, tôi nghi ngờ bạn sẽ đạt được nhiều từ việc chuyển sang phân phối như vậy.

Bạn có thể đạt được bằng cách chuyển sang phân phối phát hành như Gentoo hoặc Arch. Tuy nhiên, điều này cũng không làm cho bạn miễn nhiễm với các vấn đề; điều đó chỉ có nghĩa là bạn phải giải quyết các vấn đề nâng cấp liên tục trong suốt vòng đời của máy chủ (ví dụ: bất cứ khi nào bạn hoặc nhà phát triển quyết định cập nhật một cái gì đó trên hệ thống), thay vì tất cả cùng một lúc tại thời điểm nâng cấp phân phối được lên kế hoạch tốt. Bạn cũng không có nhà cung cấp để cung cấp hỗ trợ.


Tương lai giữ gì?

Dự án Fedora đang làm việc trên một công cụ để cải thiện nâng cấp tại chỗ. Họ có một công cụ được gọi preupgradelà bị bỏ rơi và được thay thế bằng một công cụ mới gọi là fedup bắt đầu với Fedora 18 . Điều này đã được thêm vào RHEL7 và hiện tại các bản nâng cấp tại chỗ đã hỗ trợ đầy đủ , ít nhất là từ RHEL 6 đến RHEL 7 . Từ kinh nghiệm của riêng tôi, tôi có thể nói rằng trong khi fedupvẫn còn một số kink , nó được định hình là một công cụ rất hữu ích.

CentOS cũng đang thử nghiệm loại kho lưu trữ phát hành , nhưng nó chỉ áp dụng giữa các phiên bản nhỏ (ví dụ: 6.3-6.4).


1
Công cụ nâng cấp mới của Fedora được gọi là fedup . Ba đến bốn năm nghe có vẻ tích cực đối với tôi đối với các nâng cấp lớn, phải cài đặt tôi thấy còn nhiều hơn nữa đối với vòng đời hơn 10 năm của RHEL, vì vậy tôi khuyến khích các nâng cấp nhỏ thường xuyên hơn.
Dominic Cleal

3
Đối với những người cần các tính năng mới trên cơ sở liên tục, 3-4 năm là gần như quá dài.
Michael Hampton

3
Những thứ đơn giản như PHP, Apache, sửa đổi kernel và GLIBC ... Mọi người có xu hướng muốn những thay đổi đó thường xuyên hơn.
ewwhite

2
Quá trình nâng cấp của Debian / Ubuntu không hoàn hảo, nhưng thực tế đó là cơ chế nâng cấp ưa thích và Red Hat không có cơ chế nâng cấp được hỗ trợ chính thức nào nói lên nhiều điều với tôi.
Paul Gear

1
Không có nhiều như việc nâng cấp tại chỗ có tồn tại hay không, nhưng rõ ràng là có, nhưng liệu các nhà cung cấp tương ứng có cung cấp hỗ trợ cho họ hay không.
Michael Hampton

6

Tôi đưa vào đoạn cuối của bạn:

Tôi cho rằng có góc quản lý cấu hình, nhưng hầu hết các cài đặt Puppet tôi thấy không dịch tốt vào môi trường với các máy chủ ứng dụng được tùy chỉnh cao (Môi trường B có thể có một máy chủ duy nhất có đầu ra ifconfig trông như thế này). Tuy nhiên, tôi rất thú vị khi nghe đề xuất về cách quản lý cấu hình có thể được sử dụng để giúp các tổ chức vượt qua phiên bản chính của RHEL.

Tôi nghĩ giá trị thực sự của các hệ thống quản lý cấu hình, đặc biệt là trong bối cảnh của Môi trường B, là chúng cung cấp các công cụ để xây dựng một dịch vụ độc lập với các máy chủ chạy nó. Nếu một CMS không được sử dụng để tạo ra các dịch vụ hiện có, thì có lẽ nó sẽ không giúp ích nhiều trong việc tạo lại các dịch vụ.

Tôi biết điều này không giải quyết được vấn đề trước mắt của bạn, nhưng với tôi nó bắt nguồn từ suy nghĩ của tổ chức về mặt máy chủ hơn là dịch vụ. Trong tư duy tập trung vào dịch vụ, tính cách của các máy chủ riêng lẻ không cần phải được duy trì miễn là dịch vụ tiếp tục hoạt động. Nếu một CMS được sử dụng một cách có kỷ luật để xây dựng toàn bộ dịch vụ, thì việc chuyển dịch vụ đó sang một hệ thống khác sẽ tương đối đơn giản, bởi vì tất cả tính cách của máy sẽ được xây dựng bởi CMS.

PS Tôi không chắc chắn chính xác những gì có ý nghĩa về đầu ra ifconfig trong ngữ cảnh này - nó được tạo bởi một tệp cấu hình và một số tập lệnh (nếu không nó sẽ không có trên boot) và những thứ đó có thể được quản lý bởi CMS, nếu cần.


1
Bạn nói đúng về dịch vụ so với máy chủ theo nghĩa chung. Môi trường B có một số phần cứng máy chủ chuyên dụng (10GbE NIC, thư viện giảm tải) có giao diện với các nhà cung cấp ngược dòng. Đó là thứ không thể cân bằng tải hoặc di chuyển dễ dàng mà không có thời gian chết. Một ví dụ phi tài chính sẽ là một cái gì đó giống như một máy chủ được gắn dưới dạng bộ điều khiển cho một số máy móc sản xuất có liên quan. Trường hợp đặc biệt, có thể với thẻ giao diện PCIe chuyên dụng. Rất nhiều thiết lập một lần duy nhất cho máy chủ. Trong Puppet, bạn có thể nói: "Đây là cấu hình cho một máy chủ / vai trò này" và sống với nó không?
ewwhite

1
Đồng ý, một số điều không dễ phù hợp với các trường hợp chung, đặc biệt nếu bạn có môi trường với các yêu cầu phần cứng cụ thể. Với con rối, đẩy càng nhiều vai trò càng tốt có ý nghĩa tốt. Nhưng cuối cùng thì nó cũng phải hoạt động, vì vậy nếu một cái gì đó không hoàn hảo làm cho nó hoạt động, thì tôi chỉ sống với nó là không phù hợp. Phần lớn thời gian, chúng ta phải sống với những thứ không phù hợp chỉ vì chúng ta không có thời gian để làm cho chúng "đúng".
Paul Gear
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.