Xây dựng cho Sản xuất: Ứng dụng Web - Tổng quan
Hướng dẫn 6 phần này sẽ chỉ cho bạn cách xây dựng một cài đặt ứng dụng production nhiều server từ đầu. Cài đặt cuối cùng sẽ được hỗ trợ bởi các hệ thống backup , giám sát và ghi log tập trung, điều này sẽ giúp bạn đảm bảo bạn có thể phát hiện các vấn đề và khôi phục chúng. Mục tiêu cuối cùng của loạt bài này là xây dựng các khái niệm quản trị hệ thống độc lập và giới thiệu cho bạn một số cân nhắc thực tế khi tạo cài đặt server production .Nếu bạn quan tâm đến việc xem xét một số khái niệm sẽ được đề cập trong loạt bài này, hãy đọc các hướng dẫn sau:
- 5 Cài đặt Server Chung cho Ứng dụng Web của Bạn
- 5 cách cải thiện cài đặt server ứng dụng web production của bạn
Trong khi các bài viết được liên kết cung cấp các hướng dẫn chung về cài đặt ứng dụng production , loạt bài này sẽ trình bày cách lập kế hoạch và cài đặt một ứng dụng mẫu từ đầu đến cuối. Hy vọng rằng điều này sẽ giúp bạn lập kế hoạch và triển khai môi trường server production của riêng mình, ngay cả khi bạn đang chạy một ứng dụng khác trên một nền tảng công nghệ hoàn toàn khác. Vì hướng dẫn này bao gồm nhiều chủ đề quản trị hệ thống khác nhau, nên nó thường sẽ trì hoãn phần giải thích chi tiết cho các bài viết hỗ trợ bên ngoài cung cấp thông tin bổ sung.
Mục tiêu của ta
Vào cuối tập hợp hướng dẫn này, ta sẽ có một cài đặt server production cho một ứng dụng PHP, WordPress cho mục đích demo , có thể truy cập qua https://www.example.com/ . Ta cũng sẽ bao gồm các server sẽ hỗ trợ các server ứng dụng production . Cài đặt cuối cùng sẽ trông giống như sau (DNS riêng tư và các bản backup từ xa không có trong hình):
Trong cài đặt này, các server trong hộp Ứng dụng được coi là cần thiết để ứng dụng chạy đúng cách. Ngoài kế hoạch khôi phục và server backup từ xa, các thành phần còn lại — backup , giám sát và ghi log — sẽ được thêm vào để hỗ trợ cài đặt ứng dụng production . Mỗi thành phần sẽ được cài đặt trên một server Ubuntu 14.04 riêng biệt trong cùng một khu vực DigitalOcean, NYC3 trong ví dụ của ta , đã bật Mạng riêng.
Tập hợp các server soạn ứng dụng sẽ được gọi là các tên server sau:
- lb1: HAProxy Load Balancer, có thể truy cập qua https://example.com/
- app1: Server ứng dụng Apache và PHP
- app2: Server ứng dụng Apache và PHP
- db1: Server database MySQL
Điều quan trọng cần lưu ý là cài đặt kiểu này được chọn để chứng minh cách các thành phần của ứng dụng có thể được xây dựng trên nhiều server ; cài đặt của bạn nên được tùy chỉnh dựa trên nhu cầu của bạn . Cài đặt server cụ thể này có một số điểm lỗi duy nhất có thể được loại bỏ bằng cách thêm một bộ cân bằng tải khác (và DNS tổng hợp ) và sao chép server database hoặc thêm một IP tĩnh trỏ đến một bộ cân bằng tải chủ động hoặc thụ động được đề cập bên dưới mà ta sẽ trình bày ngắn gọn.
Các thành phần sẽ hỗ trợ server Ứng dụng sẽ được gọi là tên server sau:
- backup : server backup Bacula
- giám sát: server giám sát Nagios
- ghi log : ngăn xếp Elasticsearch, Logstash, Kibana (ELK) để ghi log tập trung
Ngoài ra, ba thành phần hỗ trợ sau không được minh họa trong sơ đồ:
- ns1: Máy chủ định danh BIND chính cho DNS riêng
- ns2: Máy chủ định danh BIND phụ cho DNS riêng
- backup từ xa : Server từ xa, nằm ở một khu vực khác, để lưu trữ các bản sao của các bản backup Bacula trong trường hợp xảy ra thảm họa vật lý trong trung tâm dữ liệu production - === \
Ta cũng sẽ phát triển các kế hoạch khôi phục cơ bản cho các lỗi trong các thành phần khác nhau của ứng dụng.
Khi ta đạt được mục tiêu cài đặt , ta sẽ có tổng cộng 10 server . Ta sẽ tạo tất cả chúng cùng một lúc (điều này đơn giản hóa những thứ như cài đặt DNS), nhưng bạn có thể tạo từng cái nếu cần. Nếu bạn đang có kế hoạch sử dụng backup DigitalOcean làm giải pháp backup của bạn , ngoài hoặc thay cho Bacula, hãy đảm bảo chọn tùy chọn đó khi tạo Server.
Tính khả dụng cao (Tùy chọn)
Một điểm thất bại duy nhất là khi một phần của cơ sở hạ tầng của bạn đi xuống có thể khiến toàn bộ trang web hoặc dịch vụ của bạn không khả dụng. Nếu bạn muốn giải quyết các điểm thất bại duy nhất mà bạn cài đặt này, bạn có thể làm cho nó khả dụng cao bằng cách thêm một bộ cân bằng tải khác. Các dịch vụ khả dụng cao sẽ tự động chuyển sang hệ thống dự phòng hoặc thụ động trong trường hợp bị lỗi. Có hai bộ cân bằng tải trong một cài đặt sẵn sàng cao sẽ bảo vệ khỏi thời gian chết bằng cách đảm bảo một bộ cân bằng tải luôn sẵn sàng thụ động để chấp nhận lưu lượng nếu bộ cân bằng tải hoạt động không khả dụng.
Có một số cách để triển khai cài đặt tính khả dụng cao. Để tìm hiểu thêm, hãy đọc phần Cách sử dụng IP nổi này .
Mạng riêng ảo (Tùy chọn)
Nếu bạn muốn bảo mật thông tin liên lạc mạng giữa các server của bạn , bạn có thể cân nhắc cài đặt VPN. Bảo mật đường truyền mạng bằng mã hóa đặc biệt quan trọng khi dữ liệu được truyền qua Internet. Một lợi ích khác của việc sử dụng VPN là danh tính của các server được xác thực bằng quy trình xác thực khóa, quy trình này sẽ bảo vệ dịch vụ của bạn khỏi các nguồn trái phép.
Nếu bạn đang tìm kiếm một giải pháp VPN open-souce , bạn có thể cần xem xét Tinc hoặc OpenVPN. Trong trường hợp cụ thể này, Tinc, sử dụng định tuyến lưới, là giải pháp tốt hơn. Có thể tìm thấy hướng dẫn về cả hai giải pháp VPN tại đây:
- Cách cài đặt Tinc và cài đặt VPN cơ bản trên Ubuntu 14.04
- Cách bảo mật lưu lượng truy cập giữa các VPS bằng OpenVPN
Yêu cầu
Mỗi server Ubuntu 14.04 phải có một superuser không phải root, có thể được cài đặt theo hướng dẫn này: Cài đặt server ban đầu với Ubuntu 14.04 . Tất cả các lệnh sẽ được chạy với quyền user này, trên mỗi server .
Ta sẽ giả định bạn có một số kiến thức về các khái niệm bảo mật cơ bản của Linux, mà ta sẽ không trình bày chi tiết. Nếu bạn cần một phần mềm bảo mật Linux nhanh chóng, hãy đọc bài viết này: 7 Biện pháp Bảo mật để Bảo vệ Server của bạn .
Tên domain
Ta sẽ giả định ứng dụng của bạn sẽ được phân phát qua một domain , chẳng hạn như “example.com”. Nếu bạn chưa sở hữu một cái, hãy mua một cái từ công ty đăng ký domain .
Khi bạn đã chọn domain của bạn , bạn có thể làm theo hướng dẫn này để sử dụng nó với DNS DigitalOcean: Cách trỏ đến server tên DigitalOcean từ các công ty đăng ký domain chung .
Ngoài việc giúp trang web dễ tiếp cận hơn (so với địa chỉ IP), domain là bắt buộc để đạt được lợi ích xác thực domain và danh tính khi sử dụng certificate SSL, certificate này cũng cung cấp mã hóa cho giao tiếp giữa ứng dụng của bạn và user .
Chứng chỉ SSL
TLS / SSL cung cấp mã hóa và xác thực domain giữa ứng dụng của bạn và user , vì vậy ta sẽ sử dụng certificate SSL trong quá trình cài đặt của bạn .Trong ví dụ của ta , vì ta muốn user truy cập trang web của ta tại “ www.example.com ”, đó là những gì ta sẽ chỉ định làm Tên chung (CN) của certificate . Chứng chỉ sẽ được cài đặt trên server HAProxy, lb1 , vì vậy bạn có thể cần tạo khóa certificate và CSR ở đó để thuận tiện.
Nếu bạn certificate request cung cấp xác thực danh tính, bạn có thể nhận certificate SSL miễn phí bằng Let's Encrypt hoặc mua một certificate từ Tổ chức phát hành certificate thương mại. Để biết chi tiết về tùy chọn Let's Encrypt, vui lòng đọc Cách cài đặt certificate SSL từ Tổ chức phát hành certificate thương mại . Bỏ qua phần Cài đặt Chứng chỉ trên Server Web .
Ngoài ra, bạn cũng có thể sử dụng certificate SSL tự ký, có thể được tạo bằng lệnh này:
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/www.example.com.key -out ~/www.example.com.crt
Các bước để đạt được mục tiêu của ta
Bây giờ ta đã có phác thảo về cài đặt ứng dụng production của bạn , hãy tạo một kế hoạch chung để đạt được mục tiêu của ta .
Các thành phần bao gồm ứng dụng là quan trọng nhất, vì vậy ta muốn những thành phần đó được cài đặt và chạy sớm. Tuy nhiên, vì ta đang có kế hoạch sử dụng phân giải địa chỉ dựa trên tên cho các kết nối mạng riêng của bạn , ta nên cài đặt DNS trước .
Khi DNS của ta đã sẵn sàng, để mọi thứ bắt đầu và chạy, ta sẽ cài đặt các server bao gồm ứng dụng. Vì database được yêu cầu bởi ứng dụng và ứng dụng được yêu cầu bởi bộ cân bằng tải, ta sẽ cài đặt các thành phần theo thứ tự sau:
- Server database
- Server ứng dụng
- Cân bằng tải
Khi ta đã thực hiện xong các bước cài đặt ứng dụng của bạn , ta sẽ có thể đưa ra kế hoạch khôi phục cho các tình huống khác nhau. Kế hoạch này sẽ hữu ích trong việc xác định chiến lược backup của ta .
Sau khi ta có các kế hoạch khôi phục khác nhau, ta sẽ muốn hỗ trợ nó bằng cách cài đặt các bản backup . Sau đó, ta có thể cài đặt giám sát đảm bảo các server và dịch vụ của ta ở trạng thái OK. Cuối cùng, ta sẽ cài đặt ghi log tập trung để có thể giúp ta xem log của bạn , khắc phục sự cố và xác định xu hướng.
Kết luận
Với kế hoạch chung đã sẵn sàng, ta đã sẵn sàng triển khai cài đặt ứng dụng production của bạn . Lưu ý cài đặt này, mặc dù hoàn toàn hoạt động, là một ví dụ mà bạn có thể thu thập thông tin hữu ích từ đó và sử dụng những gì bạn đã học để cải thiện cài đặt ứng dụng của bạn .
Tiếp tục đến phần hướng dẫn tiếp theo để bắt đầu cài đặt ứng dụng: Xây dựng cho Sản xuất: Ứng dụng Web - Triển khai .
Các tin liên quan
Xây dựng cho Sản xuất: Ứng dụng Web - Giám sát2015-06-01
Xây dựng cho Sản xuất: Ứng dụng Web - backup
2015-06-01
Xây dựng cho Sản xuất: Ứng dụng Web - Triển khai
2015-06-01
Xây dựng cho sản xuất: Ứng dụng web - Ghi log tập trung
2015-06-01
Xây dựng cho Sản xuất: Ứng dụng Web - Lập kế hoạch khôi phục
2015-06-01
Cách cài đặt control panel lưu trữ web Sentora trên Ubuntu 14.04
2015-04-27
Cách cài đặt web server OpenLiteSpeed trên CentOS 7
2015-04-16
Cách cài đặt web server OpenLiteSpeed trên Ubuntu 14.04
2015-04-15
Cách cài đặt Bacula-Web trên Ubuntu 14.04
2015-04-03
Khái niệm cơ bản về bộ nhớ đệm trên web: Thuật ngữ, Tiêu đề HTTP và Chiến lược lưu vào bộ đệm
2015-04-01