Thứ sáu, 30/05/2014 | 00:00 GMT+7

5 Thiết lập server Chung cho Ứng dụng Web của Bạn

Khi quyết định sử dụng kiến trúc server nào cho môi trường của bạn, có nhiều yếu tố cần xem xét, chẳng hạn như hiệu suất, khả năng mở rộng, tính khả dụng, độ tin cậy, chi phí và dễ quản lý.

Dưới đây là danh sách các cài đặt server thường được sử dụng, với mô tả ngắn gọn về từng loại, bao gồm cả ưu và nhược điểm. Lưu ý tất cả các khái niệm được đề cập ở đây được dùng trong nhiều cách kết hợp với nhau và mọi môi trường đều có các yêu cầu khác nhau, vì vậy không có cấu hình duy nhất, chính xác.

1. Mọi thứ trên một server

Toàn bộ môi trường nằm trên một server duy nhất. Đối với một ứng dụng web điển hình, điều đó sẽ bao gồm web server , server ứng dụng và server database . Một biến thể phổ biến của cài đặt này là LAMP , viết tắt của Linux, Apache, MySQL và PHP, trên một server duy nhất.

Trường hợp sử dụng : Tốt để cài đặt ứng dụng một cách nhanh chóng, vì đây là cách cài đặt đơn giản nhất có thể, nhưng nó cung cấp ít khả năng mở rộng và cách ly thành phần.

Mọi thứ trên một  server  duy nhất

Ưu điểm :

  • Đơn giản

Nhược điểm :

  • Ứng dụng và database cạnh tranh cho cùng một tài nguyên server (CPU, Bộ nhớ, I / O, v.v.), ngoại trừ hiệu suất kém, có thể gây khó khăn cho việc xác định nguồn (ứng dụng hoặc database ) của hiệu suất kém
  • Không thể mở rộng theo chiều ngang dễ dàng

Hướng dẫn liên quan :

2. Server database riêng biệt

Hệ thống quản lý database (DBMS) có thể được tách biệt khỏi phần còn lại của môi trường để loại bỏ tranh chấp tài nguyên giữa ứng dụng và database , đồng thời để tăng tính bảo mật bằng cách loại bỏ database khỏi DMZ hoặc internet công cộng.

Trường hợp sử dụng : Tốt để cài đặt ứng dụng một cách nhanh chóng, nhưng giữ cho ứng dụng và database không tranh giành tài nguyên hệ thống giống nhau.

 Server  database  riêng biệt

Ưu điểm :

  • Các cấp ứng dụng và database không tranh giành cùng một tài nguyên server (CPU, Bộ nhớ, I / O, v.v.)
  • Bạn có thể chia tỷ lệ theo chiều dọc từng cấp riêng biệt, bằng cách thêm nhiều tài nguyên hơn vào bất kỳ server nào cần tăng dung lượng
  • Tùy thuộc vào cài đặt của bạn, nó có thể tăng cường bảo mật bằng cách xóa database của bạn khỏi DMZ

Nhược điểm :

  • Cài đặt phức tạp hơn một chút so với server đơn
  • Các vấn đề về hiệu suất có thể phát sinh nếu kết nối mạng giữa hai server có độ trễ cao (tức là các server cách xa nhau về mặt địa lý) hoặc băng thông quá thấp đối với lượng dữ liệu được truyền

Hướng dẫn liên quan :

3. Cân bằng tải (Reverse Proxy)

Bộ cân bằng tải có thể được thêm vào môi trường server để cải thiện hiệu suất và độ tin cậy bằng cách phân phối dung lượng công việc trên nhiều server . Nếu một trong các server được cân bằng tải không thành công, các server khác sẽ xử lý lưu lượng đến cho đến khi server bị lỗi hoạt động trở lại. Nó cũng được dùng để phục vụ nhiều ứng dụng thông qua cùng một domain và cổng, bằng cách sử dụng Reverse Proxy lớp 7 (lớp ứng dụng).

Ví dụ về phần mềm có khả năng cân bằng tải ngược proxy: HAProxy, Nginx và Varnish.

Trường hợp sử dụng : Hữu ích trong môi trường yêu cầu mở rộng quy mô bằng cách thêm nhiều server hơn, còn gọi là horizontal partitioning .

Cân bằng tải

Ưu điểm :

  • Cho phép horizontal partitioning , tức làdung lượng môi trường có thể được mở rộng bằng cách thêm nhiều server hơn vào nó
  • Có thể bảo vệ chống lại các cuộc tấn công DDOS bằng cách giới hạn các kết nối client ở một số lượng và tần suất hợp lý

Nhược điểm :

  • Bộ cân bằng tải có thể trở thành nút cổ chai hiệu suất nếu nó không có đủ tài nguyên hoặc nếu nó được cấu hình kém
  • Có thể đưa ra những phức tạp cần xem xét thêm, chẳng hạn như nơi thực hiện kết thúc SSL và cách xử lý các ứng dụng yêu cầu phiên cố định
  • Bộ cân bằng tải là một điểm hư hỏng duy nhất; nếu nó đi xuống, toàn bộ dịch vụ của bạn có thể đi xuống. Cài đặt tính khả dụng cao (HA) là một cơ sở hạ tầng không có một điểm lỗi nào. Để tìm hiểu cách triển khai cài đặt HA, bạn có thể đọc phần Cách sử dụng IP nổi này .

Hướng dẫn liên quan :

4. Trình tăng tốc HTTP (Caching Reverse Proxy)

Một bộ tăng tốc HTTP, hoặc Reverse Proxy HTTP bộ nhớ đệm, được dùng để giảm thời gian cung cấp nội dung cho user thông qua nhiều kỹ thuật. Kỹ thuật chính được sử dụng với bộ tăng tốc HTTP là lưu vào bộ nhớ đệm các phản hồi từ web server hoặc ứng dụng trong bộ nhớ, vì vậy các yêu cầu trong tương lai cho cùng một nội dung có thể được phục vụ nhanh chóng, ít tương tác không cần thiết với web server hoặc ứng dụng.

Ví dụ về phần mềm có khả năng tăng tốc HTTP: Varnish, Squid, Nginx.

Trường hợp sử dụng : Hữu ích trong môi trường có các ứng dụng web động chứa nhiều nội dung hoặc với nhiều file thường được truy cập.

Trình tăng tốc HTTP

Ưu điểm :

  • Tăng hiệu suất trang web bằng cách giảm tải CPU trên web server , thông qua bộ nhớ đệm và nén, do đó tăng dung lượng user
  • được dùng như một bộ cân bằng tải Reverse Proxy
  • Một số phần mềm bộ nhớ đệm có thể bảo vệ khỏi các cuộc tấn công DDOS

Nhược điểm :

  • Yêu cầu điều chỉnh để đạt được hiệu suất tốt nhất
  • Nếu tỷ lệ truy cập bộ nhớ cache thấp, nó có thể làm giảm hiệu suất

Hướng dẫn liên quan :

5. Nhân rộng database chính-bản sao

Một cách để cải thiện hiệu suất của hệ thống database thực hiện nhiều lần đọc so với ghi, chẳng hạn như CMS, là sử dụng bản sao database chính. Việc sao chép yêu cầu một nút chính và một hoặc nhiều nút sao chép. Trong cài đặt này, tất cả các bản cập nhật được gửi đến nút chính và các lần đọc có thể được phân phối trên tất cả các node .

Trường hợp sử dụng : Tốt để tăng hiệu suất đọc cho tầng database của một ứng dụng.

Dưới đây là một ví dụ về cài đặt bản sao chính, với một nút bản sao duy nhất:

Nhân bản database  chính-bản sao

Ưu điểm :

  • Cải thiện hiệu suất đọc database bằng cách trải rộng lượt đọc trên các bản sao
  • Có thể cải thiện hiệu suất ghi bằng cách sử dụng chính dành riêng cho các bản cập nhật (nó không tốn thời gian phục vụ các yêu cầu đọc)

Nhược điểm :

  • Ứng dụng truy cập database phải có cơ chế xác định các node database mà nó sẽ gửi cập nhật và đọc các yêu cầu tới
  • Các bản cập nhật cho các bản sao là không đồng bộ, vì vậy có khả năng nội dung của chúng có thể bị lỗi thời
  • Nếu chính không thành công, không có bản cập nhật nào có thể được thực hiện trên database cho đến khi sự cố được khắc phục
  • Không có chuyển đổi dự phòng tích hợp trong trường hợp nút chính bị lỗi

Hướng dẫn liên quan :

Ví dụ: Kết hợp các khái niệm

Có thể cân bằng tải các server bộ nhớ đệm, ngoài các server ứng dụng và sử dụng nhân bản database trong một môi trường duy nhất.Mục đích của việc kết hợp các kỹ thuật này là để thu được lợi ích của mỗi kỹ thuật mà không đưa ra quá nhiều vấn đề hoặc phức tạp. Dưới đây là một sơ đồ ví dụ về môi trường server có thể trông như thế nào:

Load Balancer, HTTP Accelerator và Database Replication được kết hợp

Giả sử rằng bộ cân bằng tải được cấu hình để nhận ra các yêu cầu tĩnh (như hình ảnh, css, javascript, v.v.) và gửi các yêu cầu đó trực tiếp đến server bộ nhớ đệm và gửi các yêu cầu khác đến server ứng dụng.

Dưới đây là mô tả về những gì sẽ xảy ra khi user gửi yêu cầu nội dung động:

  1. User yêu cầu nội dung động từ http://example.com/ (bộ cân bằng tải)
  2. Trình cân bằng tải gửi yêu cầu đến phần mềm backend ứng dụng
  3. app-backend đọc từ database và trả về nội dung được yêu cầu để tải cân bằng
  4. Bộ cân bằng tải trả về dữ liệu được yêu cầu cho user

Nếu user yêu cầu nội dung tĩnh:

  1. Bộ cân bằng tải kiểm tra bộ nhớ đệm-backend để xem nội dung được yêu cầu có được lưu vào bộ nhớ đệm (cache-hit) hay không (cache-miss)
  2. Nếu cache-hit : trả lại nội dung được yêu cầu cho bộ cân bằng tải và chuyển sang Bước 7. Nếu bộ nhớ cache-miss : server bộ nhớ cache chuyển tiếp yêu cầu tới app-backend, thông qua bộ cân bằng tải
  3. Bộ cân bằng tải chuyển tiếp yêu cầu đến phần backend ứng dụng
  4. app-backend đọc từ database , sau đó trả về nội dung được yêu cầu cho bộ cân bằng tải
  5. Bộ cân bằng tải chuyển tiếp phản hồi tới phần backend bộ nhớ cache
  6. cache-backend lưu vào bộ nhớ cache nội dung sau đó trả nó về bộ cân bằng tải
  7. Bộ cân bằng tải trả về dữ liệu được yêu cầu cho user

Môi trường này vẫn có hai điểm lỗi duy nhất (bộ cân bằng tải và server database chính), nhưng nó cung cấp tất cả các lợi ích về độ tin cậy và hiệu suất khác đã được mô tả trong mỗi phần ở trên.

Kết luận

Đến đây bạn đã quen với một số cài đặt server cơ bản, bạn nên có một ý tưởng tốt về loại cài đặt bạn sẽ sử dụng cho (các) ứng dụng của riêng mình. Nếu bạn đang cố gắng cải thiện môi trường của chính mình, hãy nhớ rằng một quy trình lặp đi lặp lại là tốt nhất để tránh đưa ra quá nhiều phức tạp quá nhanh.

Hãy cho ta biết về bất kỳ cài đặt nào bạn đề xuất hoặc muốn tìm hiểu thêm trong các comment bên dưới!


Tags:

Các tin liên quan

Cách sử dụng npm để quản lý gói Node.js trên server Linux
2014-05-14
Cách sử dụng npm để xây dựng và xuất bản các gói Node.js trên server Linux
2014-05-14
Cách khắc phục sự cố trang web thường gặp trên server Linux
2014-05-09
Cách Fail2Ban hoạt động để bảo vệ các dịch vụ trên server Linux
2014-05-07
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Ubuntu 14.04
2014-04-25
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 14.04
2014-04-18
Thiết lập server ban đầu với Ubuntu 14.04
2014-04-17
Giới thiệu về công cụ nén tệp trên server Linux
2014-04-15
Cách tải phần mềm và nội dung lên VPS Linux của bạn
2014-04-14
Cách bảo vệ server của bạn chống lại lỗ hổng bảo mật OpenSSL.
2014-04-08