diff --git a/README.md b/README.md index 40e1691..1e33336 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,34 @@ # ghichep-haproxy Ghi chép về haproxy + +# Mục lục + +## A. Các tổng quan + +- [1. HA Proxy - High Availability Proxy](docs/ha-overview.md) + - [1.1 Mục đích sử dụng của HA Proxy](docs/ha-overview.md#about) + - [1.2 Cài đặt HA Proxy](docs/ha-overview.md#install) + - [1.3 Tổng quan về cấu trúc file cấu hình của HA Proxy](docs/ha-overview.md#instruc) + +- [2. Tổng quan về Keep Alived](docs/ka-overview.md) + - [2.1 Vấn đề hướng tới của Keep Alived](docs/ka-overview.md#issue) + - [2.2 Mô hình sơ khai của một hệ thống sử dụng KeepAlived](docs/ka-overview.md#models) + - [2.3 Cài đặt KeepAlived](docs/ka-overview.md#install) + - [2.4 Cấu hình kết hợp với HA Proxy để kiểm tra kết quả](docs/ka-overview.md#config) + +- [3. Cơ bản về các dòng cấu hình trong file cấu hình của KeepAlived](docs/ka-configure-introduce.md) + - [3.1 Các block cấu hình trong keepalived](docs/ka-configure-introduce.md#about) + - [3.2 Nội dung cấu hình trong block `global_defs`](docs/ka-configure-introduce.md#global_defs) + - [3.3 Nội dung cấu hình trong block `static_ipaddress static_routes`](docs/ka-configure-introduce.md#static_ipaddress) + - [3.4 Nội dung cấu hình trong block `vrrp_instance` (đang hoàn thiện)](docs/ka-configure-introduce.md#vrrp_instance) + + +## B. Thực hành + +- [1 Giới thiệu về LVS](docs/lvs-direct-routing.md#about) +- [1.2 Cài đặtt LVS trên Ubuntu](docs/lvs-direct-routing.md#install) +- [1.3 Cấu hình Network Direct Routing](docs/lvs-direct-routing.md#config) +- [1.4 Kiểm tra kết quả](docs/lvs-direct-routing.md#test) +- [2.1 Cài đặtt LVS trên Ubuntu (đang hoàn thiện)](docs/lvs-direct-routing.md#install) +- [2.3 Cấu hình Network Direct Routing (đang hoàn thiện)](docs/lvs-direct-routing.md#config) +- [2.4 Kiểm tra kết quả (đang hoàn thiện)](docs/lvs-direct-routing.md#test) diff --git a/docs/ha-configuration.md b/docs/ha-configuration.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/ka-configure-introduce.md b/docs/ka-configure-introduce.md index c588644..e366106 100644 --- a/docs/ka-configure-introduce.md +++ b/docs/ka-configure-introduce.md @@ -9,7 +9,6 @@ ____ - [3.2 Nội dung cấu hình trong block `global_defs`](#global_defs) - [3.3 Nội dung cấu hình trong block `static_ipaddress static_routes`](#static_ipaddress) - [3.4 Nội dung cấu hình trong block `vrrp_instance`](#vrrp_instance) -- [](#) - [Các nội dung khác](#content-others) ____ @@ -121,8 +120,7 @@ ____ + Trong block `vrrp_instance` có thể khai báo các cấu hình sau: - -- ### + sẽ cập nhật sau: ____ diff --git a/docs/ka-overview.md b/docs/ka-overview.md index b415671..1f5099b 100644 --- a/docs/ka-overview.md +++ b/docs/ka-overview.md @@ -86,6 +86,7 @@ ____ trong đó: 172.16.69.254/24 là địa chỉ Virtual IP với subnet mask là 32 và ens33 là interface cho phép chạy VIP. - Cấp phép và khởi động lại keepalived: + echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # cho phép gán địa chỉ IP mức kernel và forward packet to other nodes diff --git a/docs/lvs-direct-routing.md b/docs/lvs-direct-routing.md new file mode 100644 index 0000000..2742399 --- /dev/null +++ b/docs/lvs-direct-routing.md @@ -0,0 +1,117 @@ +# Báo cáo Cài đặtt LVS sử dụng Direct Routing Mode +____ + +# Mục lục +- [.1 Giới thiệu về LVS](#about) +- [A.2 Cài đặtt LVS trên Ubuntu](#install) +- [A.3 Cấu hình Network Direct Routing](#config) +- [A.4 Kiểm tra kết quả](#test) +- [B.2 Cài đặtt LVS trên Ubuntu](#install) +- [B.3 Cấu hình Network Direct Routing](#config) +- [B.4 Kiểm tra kết quả](#test) + +____ + +- ### + + - LVS là viết tắt của Linux Virtual Server được hình thành từ cluster của nhiều server thật + - Mục đích: + + Xây dựng một hệ thống server đảm bảo tính sẵn sàng cao (High Availability ) và hiệu năng cao (High performance ) sử dụng kỹ thuật cluster + + Cung cấp khả năng mở rộng (Scalability ), đáng tin cậy (Reliability ) tốt và có thể sử dụng được (Serviceable ) + + LVS biết đến như một Load Balancer Cluster. + - LVS có thể chia sẻ dữ liệu giống nhau giữa các server thật với 2 tùy chọn + + Đồng bộ dữ liệu thông qua real server pool + + Sử dụng công nghệ của các phần mềm thứ 3 hỗ trợ (Galera ) + +- ### + + - Môi trường cài đặt + + LVS server sử dụng Ubuntu. + + Real server sử dụng Centos (Ubuntu, ...) + + - Mô hình dựng: + + ![img](../images/lvs-mod-install-dr.png) + + - Để cài đặt LVS, trên máy đảm nhiệm chức năng, ta thực hiện chạy câu lệnh sau: + + apt-get install -y ipvsadm + + - Tiếp theo, ta cần sửa đổi cấu hình cho LVS tại file cấu hình `/etc/default/ipvsadm ` sao cho có nội dung như sau: + + # ipvsadm + + # if you want to start ipvsadm on boot set this to true + AUTO="true" + + # daemon method (none|master|backup) + DAEMON="master" + + # use interface (eth0,eth1...) + IFACE="ens33:0" + + # syncid to use + # (0 means no filtering of syncids happen, that is the default) + # SYNCID="0" + + - Khởi động LVS: + + systemctl start ipvsadm + systemctl enable ipvsadm + +- ### Cấu hình tạo virtual ip trên LVS server + + - Đầu tiên, để tạo ra một ip ảo (VIP ) cho LVS server. Trên LVS server, ta làm như sau: + + vi /etc/network/interfaces + + thêm nội dung sau vào file: + + auto ens33:0 + iface ens33:0 inet static + address 172.16.69.254 + network 172.16.69.0 + netmask 255.255.255.255 + + lưu lại file, và khởi động lại interface đã tạo: + + ifup ens33:0 + + - Tiếp theo, ta sẽ cấu hình network cho LVS để chuyển tiếp gói tin theo kiểu Direct Routing. Trên LVS server, ta chạy các câu lệnh sau: + + tạo server pool, rr là chế độ cấu hình cho load balancing là round robin + + ipvsadm -A -t 172.16.69.254:80 -s rr + + add real server backend, -g chỉ chế độ mạng sử dụng cho LVS chuyển tiếp gói tin là Direct Routing, -m tương đương với NAT. + + ipvsadm -a -t 172.16.69.254:80 -r 172.16.69.20:80 -g + ipvsadm -a -t 172.16.69.254:80 -r 172.16.69.30:80 -g + + xác nhận cấu hình, kiểm tra kết quả cấu hình đã đúng hay chưa + + ipvsadm -l + + kết quả sẽ hiển thị tương tự như sau: + + IP Virtual Server version 1.2.1 (size=4096) + Prot LocalAddress:Port Scheduler Flags + -> RemoteAddress:Port Forward Weight ActiveConn InActConn + TCP 172.16.69.254:80 rr + -> 172.16.69.20:80 Route 1 0 0 + -> 172.16.69.30:80 Route 1 0 0 + + - Trên cả 2 backend phía sau. Ta cần chạy câu lệnh sau để chuyển tiếp gói tin: + + iptables -t nat -A PREROUTING -d 172.16.69.254 -j REDIRECT + + +- ### Kiểm tra kết quả + + - Để kiểm tra kết quả, từ trình duyệt của client, ta truy cập tới địa chỉ 172.16.69.254 (ta cần khởi động lại LVS server trước khi thực hiện bước này ). Kết quả như sau: + + ![img](../images/lvs-rr-01.png) + + và + + ![img](../images/lvs-rr-02.png) \ No newline at end of file diff --git a/images/lvs-mod-install-dr.png b/images/lvs-mod-install-dr.png new file mode 100644 index 0000000..9b044e4 Binary files /dev/null and b/images/lvs-mod-install-dr.png differ diff --git a/images/lvs-rr-01.png b/images/lvs-rr-01.png new file mode 100644 index 0000000..f020690 Binary files /dev/null and b/images/lvs-rr-01.png differ diff --git a/images/lvs-rr-02.png b/images/lvs-rr-02.png new file mode 100644 index 0000000..c18d37f Binary files /dev/null and b/images/lvs-rr-02.png differ