1.11.1 Giới thiệu chung
Mục đích:
- Tổng hợp các sức mạnh đơn lẻ thành một. - Tăng cường khả năng chịu lỗi.
Về kỹ thuật: hệ thống sẽ bao gồm các hệ thống con: Web server
- Đây là hệ thống public, phục vụ cho mục đích marketing, quảng bá đưa hình ảnh hoạt động, sản phẩm của công ty đến với mọi người.
- Hệ thống này, về kỹ thuật, cho phép tất cả người dùng Internet đều có thể tìm kiếm thông tin, trao đổi thông tin với website của bạn. Do vậy, cần phải đảm bảo về tốc độ truy cập, tính ổn định.
Database Server
- Hệ thống Database chung để Web server access vào lấy dữ liệu và hiển thị nội dung trên website.
- Đây là hệ thống chứa mọi thông tin cho hoạt động cả Public & nội bộ công ty. - Do vậy, hệ thống Database Server phải đủ mạnh, ổn định & an toàn dữ liệu.
Proxy server (Load Balancing)
- Đây là hệ thống chuyển tiếp thông tin và kiểm soát thông tin, tạo sự an toàn cho server web, database server.
- Chức năng Load Balancing (LB) cho các web server sẽ được cài đặt trên máy chủ Proxy này.
Mô hình kết nối:
Hình 3.5: Mô hình giải pháp sẵn sàng cao và cân bằng tải cho website
1.11.2 Thiết bị và các yêu cầu khác
- 3 IP PUBLIC:
+ IP WAN 1: Sẽ được gán cho LB1. + IP WAN 2: Gán cho LB2.
+ IP WAN 3: Sử dụng cho Virtual IP (Người dùng sẽ truy cập đến các Webserver thông qua địa chỉ này).
- Cần 4 Server:
+ 2 Server đóng vai liệu điều khiển việc cân bằng tải: Mỗi Server cần có 2 Interface.
Vì là nơi chuyển dữ liệu chính nên yêu cầu lưu lượng cho dữ liệu mạng cao. Khả năng về lưu lượng này dựa trên CPU và RAM.
+ 2 Server đóng vai trò Website. Lưu trữ thông tin website trên đây.
Trên 2 Server ta có có thể cài đặt mysql để làm database.
Để đảm việc đồng bộ giữa 2 database trên 2 server này luôn giống nhau, ta có thể thiết lập giải pháp sao chép mysql.
1.11.3 Cách thức hoạt động [11]
- Ta sẽ có 2 Server đảm nhận vai trò là Load Balancer và Firewall .
Load Balancer:
- 1 Server đóng vai trò là active. (ở đây là LB1) - Server còn lại giữ vai trò standby. (LB2)
- Khi bên ngoài truy cập đến website thông qua địa chỉ: IP WAN3 sẽ được gửi đến theo đường dẫn (mũi tên màu đen) đến server LB1 (Active). LB1 sẽ tự động thực hiện nắm giữ việc load balancing tới 2 Web Server .
- Khi Server LB1 không còn khả năng phục vụ, lúc này server LB2 sẽ được tự động chuyển lên Active tiếp tục nắm giữ việc load balancing đến 2 Web Server, đảm bảo cho việc truy cập đến website liên tục đối với người dùng internet (đường dẫn mũi tên màu đỏ).
- Khi Server LB1 up lên lại, vai trò sẽ được tự động chuyển lại cho LB1.
- Bằng cách này ta có thể đảm bảo độ sẵn sàng cao và cân bằng tải cho website.
Firewall:
- Các Web Server sẽ được đặt trong vùng DMZ được bảo vệ bởi Load Balancer (Nhờ vào Firewall được cài đặt trên Load Balancer)
Mô hình 1:
Hình 3.6: Mô hình 1 server – load balancing.
- Mô hình này thích hợp cho trường hợp:
+ Dữ liệu trong database lớn và yêu cầu bảo mật cao. + Web Server thực thi đọc và ghi liên tục đến Database. - Với mô hình trên:
+ Web Server và Database chạy độc lập trên mỗi Server vật lý.
+ Có thể triển khai cấu hình phần cứng thích hợp cho Web Server và Database Server.
+ Đảm bảo an toàn. Trường hợp Hacker tấn công nắm quyền kiểm soát trên Web Server nhưng vẫn còn phải thao tác kết nối đến Database Server.
- Việc sao chép giữa 2 Database Server sẽ không ảnh hưởng nhiều đến khả năng hoạt động của Web Server (do chạy độc lập).
- Tăng khả năng chịu tải của Web Server (do không phải chia sẻ tài nguyên với database)
- Việc truy xuất dữ liệu chỉ trong mạng LAN và không ảnh hưởng đến 2 Load Balancer.
Mô hình 2:
Hình 3.7: Mô hình 2 server – load balancing
- Mô hình này ta đặt Database và Web trên đồng thời mỗi Server.
- Mô hình này áp dụng trong trường hợp dữ liệu database thuộc vào dạng ít hoặc trung bình. Nhưng đòi hỏi truy cập vào web nhanh và luôn sẵn sàng (số lượng Web Server lên đến 4).
- Với mô hình trên, lượng request từ Internet sẽ được phân tải đến 4 Server. - Database trên mỗi Server sẽ đồng bộ với nhau. (Lên đến 4)
- Lúc này do Load Balancer phải chịu tải lên đến 4 Server. Vì vậy yêu cầu cấu hình mạnh cho 2 máy Load Balancer.
1.11.4 Cấu hình HAProxy và Keepalived [11]
Hệ thống Loadbalance nằm giữa người sử dụng (User) và các Apache web Server (các Webserver này chạy cùng 1 trang web (Backup-Loadbalancing cho nhau)).
Thiết lập Webserver và đồng bộ 2 thư mục chứa source web ví dụ như WWW … thì ko nằm trong phần lab này (có thể dùng Rsync ,… để đồng bộ các thư mục chứa source web giữa các Webserver) hoặc dùng Unison. Hệ thống sẽ kiểm tra tình trạng các Webserver. Nếu một trong Webserver chết thì tất cả các request của user sẽ tự động được chuyển hướng đến Webserver còn lại, user không bị mất Session. Bên cạnh đó, hệ thống loadbalance này cũng có độ sẵn sàng cao (High-availability-HA). Con server này gặp sự cố thì con kia sẽ lên Active, có nghĩa là người dùng sẽ không nhận thấy bất kỳ sự gián đoạn của dịch vụ.
Cần 3 chiếc máy tính ( ở đây sử dụng 3 chiếc máy ảo) và 1 IP ảo: 10.20.14.100 A: 10.20.14.31 - loadbalance
B: 10.20.14.29 - web master C: 10.20.14.30 - web slave
Cả 3 máy : tắt iptables + selinux + cấu hình ssh
Tắt ip tables : service iptables stop – tắt khi khởi động chkconfig iptables off Tắt selinux # vi /etc/sysconfig/selinux
Sửa : [root@ns ~]#vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: #enforcing - SELinux security policy is enforced.
#permissive - SELinux prints warnings instead of enforcing. #disabled - SELinux is fully disabled.
SELINUX=disabled // change
# SELINUXTYPE= type of policy in use. Possible values are: #targeted - Only targeted network daemons are protected. #strict - Full SELinux protection.
Cấu hình ssh : # vi /etc/ssh/sshd_config
Khởi động ssh : service sshd start
Khởi động cùng hệ thống : chkconfig sshd on Máy Loadbalance: Cài epel : wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi- release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
Cài keepalived + haproxy : yum install keepalived haproxy
Cấu hình keepalived: sửa nội dung file hệ thống:
#vi /etc/keepalived/keepalived.conf
Thành:
vrrp_script chk_haproxy { script “killall -0 haproxy” interval 2 weight 2 } vrrp_instance VI_1 { interface eth0 state MASTER
virtual_router_id 51
priority 101 # 101 on master, 100 on backup virtual_ipaddress { 10.20.14.100 # IP ao } track_script { chk_haproxy } }
Cấu hình haproxy : sửa nội dung file
#vi /etc/haproxy/haproxy.cfg
Thành:
Hình 3.8: Sửa file cấu hình HAProxy
Khởi chạy keepalived + haproxy : service keepalived start service haproxy start
Cho 2 dịch vụ khởi động cùng hệ thống : chkconfig keepalived on chkconfig haproxy on
Trên 2 máy chạy web server :
Cài đặt apache : yum install httpd -y
Tạo file: vào thư mục: /var/www/html tạo file index.html trên 2 máy với 2 nội dung khác nhau và file check.txt
Restart lại : service httpd restart
Để chuẩn bị đồng bộ nên cài gói LAMP : apache + mySql + php + phpmyadmin. Để kiểm tra hệ thống đã cài đặt thành công hay không, gõ địa chỉ theo IP ảo: 10.20.14.100
Hình 3.9: Cài đặt Keepalived
Để kiểm tra HAProxy vafo trình duyệt gõ địa chỉ: 10.20.14.100/haproxy?stats
Hình 3.10: Cài đặt HAProxy