Làm cách nào để thiết lập Apache Proxy cho một nhóm nhỏ các phiên bản EC2?


0

Tôi đã thiết lập các phiên bản Amazon EC2 cho một dự án sắp tới sẽ liên quan đến việc lưu trữ nhiều trang web trên nhiều máy chủ web. Chúng đều là các phiên bản vi mô, chạy Ubuntu Server 64 bit.

Đây là những gì tôi có cho đến nay:

  • Máy chủ web - Apache
  • Máy chủ cơ sở dữ liệu - MySQL
  • Máy chủ phát triển - Apache & MySQL
  • Máy chủ tệp - SVN & Bacula (sao lưu được thực hiện cho các thùng S3)

Hiện tại chỉ có một máy chủ Web, nhưng tôi đã tạo một hình ảnh về nó, vì vậy khi dự án bắt đầu, tôi có thể khởi chạy bao nhiêu phiên bản mà tôi cần và định cấu hình chúng riêng lẻ.

Mọi thứ đã diễn ra suôn sẻ, nhưng tôi đã gặp phải một số trở ngại.

Vấn đề của tôi là tôi muốn chạy nhiều phiên bản máy chủ web, nhưng với sự hạn chế của Amazon đối với 5 địa chỉ IP đàn hồi, tôi biết rằng điều đó sẽ không đủ. Tôi đã nghiên cứu cách lưu trữ các trang web trên nhiều máy chủ web từ một địa chỉ IP duy nhất và chạy trên mod_proxy cho Apache. Tôi chưa thử, nhưng tôi nghĩ đó là thứ tôi cần. Tôi chỉ muốn ai đó xác nhận rằng tôi đang đi đúng hướng.

Có ai đã sử dụng Apache với mod_proxy chưa? Có thực sự cho phép bạn lưu trữ nhiều trang web từ nhiều địa chỉ bằng một địa chỉ IP không?

Giả sử tôi đang đi đúng hướng ở đây, tất cả những gì tôi cần là một địa chỉ IP đàn hồi chỉ đến một cá thể EC2 đang chạy Apache, đúng không?


Sau nhiều nghiên cứu và thử nghiệm, có vẻ như tôi có thể không cần sử dụng máy chủ proxy Apache. Tôi sẽ trao câu trả lời chính xác cho Bond, vì câu trả lời của anh ấy là chi tiết nhất và có lẽ sẽ hữu ích nhất nếu tôi tiếp tục đi trên con đường đó.
ks78

Câu trả lời:


1

Những gì bạn đã hỏi là một tình huống rất phổ biến trong đó trong các ứng dụng có thể không chạy trên Gateway và chúng có thể đang chạy trên một số máy chủ trong mạng LAN nhưng với thế giới thì có vẻ như nó đến từ Request_url.com

Tôi điều hành 4 trang web với proxy mod Apaches và ít nhất 15 dịch vụ khác nhau trên 4 trang web khác nhau này phụ thuộc vào chúng. Tôi không có kinh nghiệm về Amazon EC2 nhưng Amazon EC2 sử dụng Xen làm phụ trợ. Hãy để chúng tôi nói rằng máy chính phải đối mặt với internet và có IP công cộng được gọi là dom0 bây giờ được đọc theo thuật ngữ sau đây

Dom0  with IP      192.168.0.100 (This will be our Server facing internet)
DomU1 with IP      192.168.0.11
DomU2 with IP      192.168.0.12
DomU3 with IP      192.168.0.13
DomU4 with IP      192.168.0.14

Tôi giả sử bạn có một dns cục bộ trên Dom0 (hoặc một số nơi trong mạng của bạn) biết IP của DomU có tên. (Nếu không cuộc sống sẽ khó khăn) thì trong apache2.conf (httpd.conf trên các hệ thống loại Fedora)

NameVirtualHost *
    <VirtualHost *>
      ServerName mainserver
            DocumentRoot /var/www
      ProxyRequests Off
           <Proxy *>
     Order deny,allow
           Allow from all
     </Proxy>
         ProxyPass /domu1  http://192.168.0.11/
         ProxyPass /domu2  http://192.168.0.12/
         ProxyPass /domu3  http://192.168.0.13/
         ProxyPass /domu4  http://192.168.0.14/
         ProxyPassReverse /domu1  http://192.168.0.11/
         ProxyPassReverse /domu2  http://192.168.0.12/
         ProxyPassReverse /domu3  http://192.168.0.13/
         ProxyPassReverse /domu4  http://192.168.0.14/
    </VirtualHost>

Cách này là một cách để đạt được những điều bạn đã hỏi (bao giờ không được khuyến nghị) nếu bạn nâng cấp máy chủ (ví dụ: Dom0), bản cập nhật có thể ghi đè lên apache2.conf hoặc httpd.conf. Vì vậy, một khi bạn hiểu ý nghĩa của các mục trên (Kiểm tra nó cho các yêu cầu của bạn, tôi đã vật lộn một thời gian dài với một số thứ tương tự bạn muốn do đó tôi đã đưa ra một giải pháp dễ dàng nhưng không được đề xuất). Khi bạn hiểu ProxyPass ở trên, sau đó tạo các cấu hình Máy chủ ảo khác nhau trong thư mục có sẵn của trang nếu đó là hệ thống Ubuntu / Debian hoặc trong Red Hat, nó vẫn có thể (bạn sẽ phải tìm kiếm) Tôi sẽ chỉ cho bạn một cái để nó giúp bạn bạn nghỉ 4-5 bạn có thể tự mình thực hiện cuộc
gọi này /etc/apache2/sites-enables/myi INTERNa1.conf nó trông như sau

<VirtualHost *:80 >

        ServerName myserver1.com
        ServerAdmin webmaster@localhost

        ProxyRequests off
        <Proxy *>
        Order deny,allow
        Allow from all
        </Proxy>
        ProxyPreserveHost On


        ProxyPass / http://192.168.1.3/
        ProxyPassReverse / http://192.168.1.3/

        ErrorLog /var/log/apache2/server1/server1_error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/server1/server1_access.log combined
        CustomLog /var/log/apache2/server1/server1-resp_log resp
        LogFormat "%a %{X-Forwarded-For}i  %h %D %t %f %p %>s  %U %v" resp

</VirtualHost>

Virtualhost ở trên sẽ được xác định trên Dom0 để tất cả các yêu cầu được phục vụ từ máy chủ nội bộ server1.com. Cách thức hoạt động là một số người trên internet sẽ nhập vào trình duyệt của họ

 http://requested_url.com/domu1

Bây giờ yêu cầu này đến được Dom0 và Máy chủ ảo Apache trên Dom0 kiểm tra Cấu hình proxy và thấy rằng / domu1 được ánh xạ tới một máy chủ nội bộ để nó chuyển tiếp đến máy thực sự phải phục vụ. Để người dùng trên internet tất cả điều này bị ẩn.

Bao giờ một từ thận trọng trong khi làm như vậy, hệ thống Apache trên Ubuntu phục vụ các máy chủ ảo theo tên theo thứ tự chữ cái của tệp vhost (không phải tên máy chủ mà tôi đang đề cập đến tên của tệp như sorting.c tệp máy chủ ảo Apache) (đó là lý do tại sao có là một tệp mặc định 000) trên các hệ thống Ubuntu, vì vậy hãy đảm bảo rằng bạn có một máy chủ nhiều hơn số lượng trang web bạn sẽ phục vụ (sẽ phục vụ như trang lỗi). Đây là một thông lệ tiêu chuẩn.


0

Tại sao không chạy tất cả chúng trên cùng một địa chỉ IP và sử dụng lưu trữ ảo Apache (tức là lưu trữ ảo dựa trên tiêu đề máy chủ) để máy chủ web chọn đúng trang web trên cơ sở theo yêu cầu?

Điều đó sẽ chỉ tiêu thụ một địa chỉ IP và cân bằng tải của Amazon có thể làm phần còn lại.

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.