Chuẩn bị
– Kích hoạt module [mod_proxy] để cấu hình truy vấn cài đặt
Chuẩn bị DNS
– Tham khảo bài: Cài đặt DNS Server trên Ubuntu 22.04: Internal Network
root@dns:~# vi /etc/bind/dinhducthanh.local.lan node1 IN A 10.0.0.51 node2 IN A 10.0.0.52 www IN CNAME dinhducthanh.local. root@dns:~# vi /etc/bind/0.0.10.db 6 IN PTR dinhducthanh.local. 51 IN PTR node1.dinhducthanh.local. 52 IN PTR node2.dinhducthanh.local. root@dns:~# systemctl restart named
Chuẩn bị các server web
– Cài đặt các server web tham khảo bài: Cài đặt Apache2 trên Ubuntu 22.04
– Cài server web frontend: dinhducthanh.local
root@www:~# apt -y install apache2 root@www:~# vi /etc/apache2/conf-enabled/security.conf # line 25 : thay đổi ServerTokens Prod root@www:~# vi /etc/apache2/apache2.conf # line 70 : thêm chỉ định server name ServerName dinhducthanh.local root@www:~# vi /etc/apache2/sites-enabled/000-default.conf # line 11 : thay đổi email của webmaster ServerAdmin admin@dinhducthanh.local root@www:~# systemctl restart apache2 root@www:~# cp /var/www/html/index.html /var/www/html/index.html.backup root@www:~# rm -rf /var/www/html/index.html
root@www:~# vi /var/www/html/index.html <html> <body> <div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;"> dinhducthanh.local Test Page </div> </body> </html>
root@www:~# echo "nameserver 10.0.0.3" > /etc/resolv.conf
– Cài server web backend node1 và node2 tương tự như cài server frontend
Configure mod_proxy
– Ví dụ này có sơ đồ như sau
-----------+------------------------------+------------------ | | |10.0.0.6 |10.0.0.51 +----------+--------------+ +-----------+-----------------+ |[ dinhducthanh.local ] | |[ node1.dinhducthanh.local ] | | Web Server#1 | | Web Server#2 | +-------------------------+ +-----------------------------+
root@www:~# vi /etc/apache2/conf-available/revers_proxy.conf
# tạo mới
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
# backend server và đường dẫn forwarded
ProxyPass / http://node1.dinhducthanh.local/
ProxyPassReverse / http://node1.dinhducthanh.local/
</IfModule>
root@www:~# a2enconf revers_proxy Enabling conf revers_proxy. To activate the new configuration, you need to run: systemctl reload apache2 root@www:~# a2enmod proxy proxy_http Module proxy already enabled Considering dependency proxy for proxy_http: Module proxy already enabled Enabling module proxy_http. To activate the new configuration, you need to run: systemctl restart apache2 root@www:~# systemctl restart apache2
– Truy cập vào frontend server để xác nhận phản hồi là của backend server như ảnh
Có thể Configure mod_proxy định cấu hình cân bằng tải
– Ví dụ này có sơ đồ như sau
-----------+--------------------------+--------------------------+------------ | | | |10.0.0.6 |10.0.0.51 |10.0.0.52 +----------+-----------+ +-----------+------------+ +-----------+------------+ |dinhducthanh.local | |node1.dinhducthanh.local| |node2.dinhducthanh.local| | Web Server#1 | | Web Server#2 | | Web Server#3 | +----------------------+ +------------------------+ +------------------------+
root@www:~# vi /etc/apache2/conf-available/revers_proxy.conf # tạo mới <IfModule mod_proxy.c> ProxyRequests Off <Proxy *> Require all granted </Proxy> # chỉ định cách load balancing với [lbmethod] # cũng có thể đặt [bytraffic] nghĩa là cân bằng các yêu cầu httpd theo lưu lượng truy cập ProxyPass / balancer://cluster lbmethod=byrequests <proxy balancer://cluster> BalancerMember http://node1.dinhducthanh.local/ loadfactor=1 BalancerMember http://node2.dinhducthanh.local/ loadfactor=1 </proxy> </IfModule>
root@www:~# a2enconf revers_proxy Enabling conf revers_proxy. To activate the new configuration, you need to run: systemctl reload apache2 root@www:~# a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests Module proxy already enabled Considering dependency proxy for proxy_http: Module proxy already enabled Enabling module proxy_http. Considering dependency proxy for proxy_balancer: Module proxy already enabled Considering dependency alias for proxy_balancer: Module alias already enabled Considering dependency slotmem_shm for proxy_balancer: Module slotmem_shm already enabled Module proxy_balancer already enabled Considering dependency proxy_balancer for lbmethod_byrequests: Considering dependency proxy for proxy_balancer: Module proxy already enabled Considering dependency alias for proxy_balancer: Module alias already enabled Considering dependency slotmem_shm for proxy_balancer: Module slotmem_shm already enabled Module proxy_balancer already enabled Enabling module lbmethod_byrequests. To activate the new configuration, you need to run: systemctl restart apache2 root@www:~# systemctl restart apache2
– Truy cập vào frontend server để xác nhận phản hồi là của backend server như ảnh