Máy chủ và trung tâm dữ liệu thực sự là gì?
Một website lớn hôm nay có nằm trong một máy không?
Website đầu tiên trên đời chạy trên một chiếc máy NeXT ở CERN vào cuối năm 1990.
Trên máy có một tờ nhãn viết tay:
This machine is a server. DO NOT POWER IT DOWN!!
Nghĩa là:
Máy này là máy chủ. Đừng tắt nó!
Lời nhắc đó cho thấy vấn đề rất rõ: nếu ai đó tắt chiếc máy này, website cũng biến mất.
Ngày nay một website lớn không thể phụ thuộc vào một chiếc máy như vậy.
Nhưng trước hết:
Máy chủ thực ra là gì?
Máy chủ vẫn chỉ là một máy tính
Một máy chủ (server) vật lý vẫn có CPU, RAM, ổ lưu trữ và card mạng giống máy tính cá nhân.
CPU vẫn thực thi các lệnh. Bộ nhớ vẫn giữ dữ liệu mà chương trình đang dùng. Card mạng vẫn gửi và nhận dữ liệu.
Không có linh kiện đặc biệt nào biến một chiếc máy tính thành máy chủ.
Khác biệt chủ yếu nằm ở cách chiếc máy được sử dụng.
Máy chủ thường chạy liên tục ngày đêm. Nó không cần màn hình hay bàn phím vì quản trị viên có thể truy cập qua mạng. Máy cũng thường được làm thành dạng dẹt để xếp vào tủ rack, thay vì một thùng máy đứng dưới bàn.
Một tủ rack tiêu chuẩn rộng 19 inch. Chiều cao thiết bị được tính bằng đơn vị U; 1U cao khoảng 4,45 cm. Nhờ vậy hàng chục máy có thể được xếp sát nhau trong một tủ.
Nhưng càng xếp nhiều máy vào cùng một chỗ, một vấn đề mới xuất hiện.
Vài chục máy chủ cần rất nhiều thứ ngoài máy chủ
Một máy tính ở nhà mất điện vài phút có thể chỉ gây khó chịu.
Một phòng chứa hàng trăm máy chủ thì khác.
Có ba thứ phải hoạt động liên tục.
Điện. Nếu nguồn điện bên ngoài bị mất, máy vẫn phải chạy. Vì vậy thường có bộ lưu điện để cấp nguồn trong thời gian ngắn và máy phát điện để duy trì lâu hơn.
Làm mát. Điện đi vào máy chủ cuối cùng phần lớn trở thành nhiệt. Một máy không đáng kể, nhưng hàng trăm hay hàng nghìn máy cùng chạy tạo ra lượng nhiệt rất lớn. Nhiệt đó phải được đưa ra ngoài liên tục.
Mạng. Máy chủ phải kết nối ra Internet với dung lượng lớn. Một đường mạng duy nhất cũng trở thành điểm hỏng, nên hệ thống lớn thường có nhiều kết nối và nhiều tuyến dự phòng.
Tự xây tất cả những thứ này chỉ để đặt vài máy chủ rất tốn kém.
Vì vậy xuất hiện một cách đơn giản hơn.
Thuê chỗ đặt máy
Thay vì tự xây phòng máy, một công ty có thể mang máy chủ tới một cơ sở đã chuẩn bị sẵn điện, làm mát và mạng, rồi thuê một phần không gian trong đó.
Cách này gọi là thuê chỗ đặt máy (colocation).
Equinix, thành lập năm 1998 ở Silicon Valley, là một trong những công ty phát triển mô hình này. Nhiều khách hàng và nhiều nhà mạng cùng đặt thiết bị trong một cơ sở. Nhờ đó một công ty nhỏ không cần tự xây máy phát điện, hệ thống làm mát hay kéo nhiều đường mạng riêng.
Những toà nhà được thiết kế để chứa và vận hành lượng lớn thiết bị tính toán như vậy được gọi là trung tâm dữ liệu (data center).
Trung tâm dữ liệu giúp chiếc máy có điện, được làm mát và luôn có mạng.
Nhưng nó không giải quyết được một vấn đề khác:
Nếu chính chiếc máy chủ đó hỏng thì sao?
Một máy vẫn là một điểm hỏng
Giả sử website chỉ chạy trên một máy chủ.
Nếu ổ đĩa lỗi, hệ điều hành treo hoặc máy phải khởi động lại, website sẽ biến mất dù cả trung tâm dữ liệu vẫn hoạt động bình thường.
Khi lượng người dùng tăng, còn thêm một giới hạn nữa: một CPU và một lượng RAM hữu hạn chỉ xử lý được một lượng công việc hữu hạn.
Cách tự nhiên là chạy website trên nhiều máy chủ.
Nhưng lúc đó lại phải quyết định:
Yêu cầu của người dùng sẽ được gửi tới máy nào?
Phía trước các máy chủ thường có một bộ cân bằng tải (load balancer).
Người dùng gửi yêu cầu tới một địa chỉ. Bộ cân bằng tải nhận yêu cầu đó rồi chọn một máy phía sau để xử lý.
Nếu có bốn máy với khả năng gần giống nhau, thay vì dồn 8.000 yêu cầu vào một máy, bộ cân bằng tải có thể chia chúng ra, khoảng 2.000 yêu cầu cho mỗi máy.
Nhìn từ trái sang phải để thấy điều gì xảy ra khi lượng người dùng tăng:

Thêm máy giúp tăng khả năng xử lý và giảm phụ thuộc vào một máy chủ.
Nhưng nếu có hàng nghìn máy, một vấn đề khác xuất hiện.
Với hàng nghìn máy, hỏng hóc là chuyện bình thường
Nếu chỉ có ba máy chủ và mỗi máy khá đáng tin cậy, có thể nhiều tháng mới thấy một máy hỏng.
Nếu có hàng chục nghìn máy, chuyện một vài máy đang hỏng ở bất kỳ thời điểm nào lại trở nên bình thường.
Một cách xử lý là mua từng máy chủ rất đắt, dùng linh kiện tốt và thêm nhiều phần cứng dự phòng để cố làm cho mỗi máy hiếm khi hỏng nhất có thể.
Google thời kỳ đầu chọn hướng khác.
Google dùng máy rẻ và chấp nhận chúng sẽ hỏng
Cuối những năm 1990, Google xây hệ thống từ các linh kiện máy tính phổ thông thay vì dựa hoàn toàn vào những máy chủ doanh nghiệp đắt tiền.
Một trong những cụm máy đời đầu của Google gồm các khay chứa bo mạch và ổ đĩa, với những tấm bần mỏng đặt giữa các tầng để cách điện.
Vì thế nó thường được gọi là máy chủ lót bần (corkboard server).
Linh kiện rẻ có thể hỏng thường xuyên hơn.
Google giải quyết chuyện đó bằng cách thiết kế hệ thống với giả định ngay từ đầu rằng máy sẽ hỏng.
Dữ liệu và công việc được phân tán ra nhiều máy. Khi một máy chết, phần mềm phát hiện ra và chuyển công việc sang những máy còn lại.
Đến năm 2003, các kỹ sư Google mô tả một cụm hơn 15.000 máy tính phổ thông vận hành theo cách này.
Thay vì cố làm từng chiếc máy gần như không bao giờ hỏng, họ làm cho toàn bộ hệ thống vẫn chạy khi một số máy bên trong hỏng.
Đó là lý do một website lớn ngày nay không nên được hình dung như một chiếc máy tính khổng lồ.
Nó có thể chạy trên hàng trăm hoặc hàng nghìn máy chủ, đặt trong một hay nhiều trung tâm dữ liệu. Một vài máy bên trong có thể tắt hoặc hỏng mà người dùng bên ngoài không nhận ra.
Nhưng dù có bao nhiêu máy, chúng vẫn nằm ở những địa điểm thật trên bản đồ.
Nếu máy chủ nằm ở Mỹ còn người đang mở trang ở Việt Nam thì sao?
Mỗi tấm ảnh có phải đi hàng chục nghìn kilomet từ Mỹ tới Việt Nam mỗi lần bạn mở trang?
Nguồn bài viết (6)
- A short history of the Web · CERN
- Load Balancing at the Frontend (Site Reliability Engineering, chương 19) · Google
- About Equinix · Equinix
- Google server assembly (catalog 102662167) · Computer History Museum
- Google "Corkboard" Server, 1999 · Smithsonian National Museum of American History
- Web Search for a Planet: The Google Cluster Architecture (IEEE Micro, 2003) · Google Research