2008-11-08 24 views
22

Tôi đang nghe podcast # 19 và Joel và Jeff đang tranh cãi về việc chạy SQL Server trên cùng một máy như cài đặt IIS của bạn. Tôi phải nói rằng có vẻ như Jeff đã gấp lại với Joel, nhưng rồi tôi lại chỉ đoán cái nào là cái nào. ;)SQL Server có nên trên cùng một máy như cài đặt IIS của bạn không?

Ưu và nhược điểm của mỗi loại là gì? Cái nào tốt hơn?

Tôi thường chạy chúng một cách riêng biệt (sở thích của Joel) nhưng tôi có thể thấy điểm của Jeff nơi hai người gần nhau hơn.

Trả lời

45

Đối với mục đích bảo mật bạn nên tách riêng các máy cơ sở dữ liệu và web, tốt nhất là có tường lửa giữa hai máy. Một máy chủ web được tiếp xúc với thế giới nói chung. Thật không may có những người thích thú khi ăn cắp hoặc làm hỏng thông tin chứa trên các máy chủ đó.

Sau đó, có khía cạnh hiệu suất. Đó là kiến ​​thức phổ biến mà SQL Server yêu thích bộ nhớ. Vì vậy, IIS, đặc biệt nếu trang web sử dụng rộng rãi bộ nhớ đệm và thông tin phiên. Vì vậy, bạn có một cuộc xung đột tiềm năng ở đây là tốt. Có một máy chuyên dụng cho SQL Server rõ ràng là tốt hơn so với việc có một máy duy nhất làm tất cả các tải.

Sau đó, tách cho phép nhận dạng dễ dàng hơn về nhu cầu điều chỉnh và khả năng điều chỉnh các thành phần phần cứng riêng lẻ.

Tổng hợp, một máy đủ mạnh để đáp ứng nhu cầu của cả IIS và SQL Server trong môi trường sống sẽ không nhất thiết phải rẻ hơn hai máy được yêu cầu cho các yêu cầu cụ thể của từng máy chủ. (Jeff Atwood đã đề cập trong một trong các podcast, rằng việc nâng cấp một máy sẽ có chi phí giống như nhận được một máy thứ hai).

10

Đưa chúng trên cùng một máy:

  • Giảm độ trễ giữa chúng - vì vậy nếu bạn có rất nhiều thắc mắc dễ dàng, điều này có thể cải thiện hiệu suất
  • Hãy phát triển của bạn và kiểm tra hiệu suất dễ dàng hơn vì bạn có thể làm điều đó với một hộp duy nhất (hoặc VM)

Nếu ứng dụng không cần dự phòng và không cần phải mở rộng, đặt chúng trên cùng một hộp là thắng chắc chắn - dễ bảo trì hơn nhiều.

Tôi không nghĩ đối số bảo mật mang bất kỳ trọng lượng nào - tôi không thấy bất kỳ lợi ích bảo mật nào khi tách chúng. Máy chủ web cần phải có đủ quyền truy cập vào cơ sở dữ liệu để xem và sửa đổi tất cả hoặc hầu hết dữ liệu, vì vậy nếu nó bị xâm nhập hoàn toàn, hộp SQL cũng sẽ bị xâm nhập một cách hiệu quả.

+5

Bạn có thể có 10 máy chủ web truy cập một DB duy nhất, mỗi máy chủ có các đặc quyền khác nhau. Vì vậy, nếu 1 trong số các máy chủ web của bạn bị xâm nhập, chỉ có 10% dữ liệu của bạn bị hỏng. Nếu bạn có 100 máy chủ, thì chỉ 1% dữ liệu của bạn bị hỏng. – Pacerier

12

@MarkR

an ninh thực sự được tăng cường bằng cách di chuyển SQL Server để hộp khác và đó là để làm với Surface tấn công tiếp xúc.

Máy chủ web bị truy cập độc hại từ Internet. Một hy vọng nó sẽ không bao giờ xảy ra, nhưng đã có (và có thể trong tương lai, được) lỗ hổng có thể được khai thác thông qua các yêu cầu không đúng định dạng mà đi qua tường lửa.

Khai thác một trong các lỗ hổng này có thể dẫn đến mã tùy ý có thể thực thi.

Trong trường hợp máy chủ web bị xâm nhập theo cách này, bất kỳ thứ gì khác chạy trên máy đó hiện dễ bị tấn công và khai thác phần mềm có khả năng chạy trong ngữ cảnh đặc quyền. Bề mặt tấn công của máy bị xâm nhập rộng hơn nhiều.

Nếu SQL Server được cài đặt trên cùng một máy, mọi cơ sở dữ liệu đều dễ bị tấn công.

Bây giờ, nếu SQL Server được cài đặt trên một máy riêng biệt, nó chỉ có thể được truy cập thông qua giao diện công cộng của nó. Bề mặt đính kèm của cơ sở dữ liệu bị giới hạn ở giao diện đó. Vì vậy, để thỏa hiệp cơ sở dữ liệu, bây giờ bạn phải thỏa hiệp dịch vụ web trước, THEN SQL Server. Đây là MUCH khó khăn hơn so với việc có chúng trên cùng một máy.

Mở rộng thêm nguyên tắc, nó cũng là một đối số cho việc sử dụng các procs được lưu trữ. Nếu máy chủ web chỉ có thể truy cập vào máy chủ cơ sở dữ liệu bằng cách sử dụng procs được lưu trữ, giao diện và do đó bề mặt tấn công, bị hạn chế ồ ạt. Nếu máy chủ web có khả năng thực thi SQL tùy ý đối với máy chủ cơ sở dữ liệu, thì bề mặt tấn công lại lớn hơn rất nhiều rồi nó cần phải có và rủi ro cho dữ liệu được tăng lên rất nhiều.

Trong các hệ thống dữ liệu có giá trị, những rủi ro này, trong khi tương đối nhỏ, rất thực tế và xác định mức độ phơi nhiễm kinh doanh của các rủi ro đó là một khía cạnh thiết yếu của thiết kế giải pháp.

6

Đối với các trang web rất nhạy cảm, lợi thế của các máy chủ riêng biệt với tường lửa giữa chúng có thể hữu ích nhưng nó mang lại một số vấn đề.

  1. Thực hiện truy vấn trên IIS phân tách - Máy chủ SQL có thể chạy rất chậm do cần truyền dữ liệu qua mạng, DNS vẫn có thể là yếu tố ngay cả với máy chủ cách nhau 2 feet. làm để có được một ứng dụng để làm việc cũng như chia.
  2. Quản lý. Nó có thể hiển nhiên nhưng 2 máy chủ của nó, 2 cửa sổ giấy phép và quản lý đó là có liên quan và sự phức tạp của đi qua tường lửa.

khuyến nghị chia server:

  1. Cài đặt một mạng LAN gigabit giữa các máy chủ.
  2. Truy vấn được tối ưu hóa để chạy dưới dạng các quy trình được lưu trữ thay vì
  3. Tối ưu hóa truy vấn để chỉ trả lại số lượng dữ liệu tối thiểu.
  4. Đảm bảo địa chỉ máy chủ lưu trữ sử dụng địa chỉ IP hoặc tra cứu DNS hiệu quả.
  5. Cung cấp cho bộ tải SQL đủ bộ nhớ cho kết quả tạm thời.
Các vấn đề liên quan