|
| 1 | +# Keepalived configuration file |
| 2 | + |
| 3 | +File cấu hình: `/etc/keepalived/keepalived.conf` |
| 4 | + |
| 5 | +Một ví dụ đơn giản về hệ thống cân bằng tải gồm hai server: LB1 (active) và LB2 (backup) sẽ định tuyến các requests cho một pool của bốn web server chạy `httpd` với real IP là 192.168.1.20 tới 192.168.1.24, chia sẻ một virtual IP (VIP) là 10.0.0.1. Mỗi một lb có hai interfaces (eth0 và eth1), một sẽ thực hiện xử lý external internet traffic, hai sẽ thực hiện routing requests tới các server thực. Giải thuật load balancing được sử dụng là Round Robin và routing method sẽ là NAT. |
| 6 | + |
| 7 | +## 1. Global Definitions |
| 8 | + |
| 9 | +Global Definitions section cho phép admin chỉ định chi tiết thông báo khi có sự thay đổi xảy ra với load balancer. Section này là tùy chọn không yêu cầu bắt buộc trong cấu hình của keepalived. Section này giống nhau trên cả lb2 và lb1. |
| 10 | + |
| 11 | +```sh |
| 12 | +global_defs { |
| 13 | + |
| 14 | + notification_email { |
| 15 | + |
| 16 | + } |
| 17 | + notification_email_from [email protected] |
| 18 | + smtp_server 127.0.0.1 |
| 19 | + smtp_connect_timeout 60 |
| 20 | +} |
| 21 | +``` |
| 22 | + |
| 23 | +* `notification_email` là địa chỉ email của admin |
| 24 | +* `notification_email_from` là địa chỉ gửi load balancer state changes. |
| 25 | + |
| 26 | +Cấu hình cụ thể của SMTP chỉ định máy chủ thư mà các thông báo được gửi mail qua. |
| 27 | + |
| 28 | + |
| 29 | +## 2 . VRRP Instance |
| 30 | + |
| 31 | +Ví dụ dưới đây là một đoạn `vrrp_sync_group` của file config `keeplalived.conf` trong master router và backup router. Chú ý về giá trị `state` và `priority` khác nhau giữ hai lb. |
| 32 | + |
| 33 | +Ví dụ trên master: |
| 34 | + |
| 35 | +```sh |
| 36 | +vrrp_sync_group VG1 { |
| 37 | + group { |
| 38 | + RH_EXT |
| 39 | + RH_INT |
| 40 | + } |
| 41 | +} |
| 42 | + |
| 43 | +vrrp_instance RH_EXT { |
| 44 | + state MASTER |
| 45 | + interface eth0 |
| 46 | + virtual_router_id 50 |
| 47 | + priority 100 |
| 48 | + advert_int 1 |
| 49 | + authentication { |
| 50 | + auth_type PASS |
| 51 | + auth_pass passw123 |
| 52 | + } |
| 53 | + virtual_ipaddress { |
| 54 | + 10.0.0.1 |
| 55 | + } |
| 56 | +} |
| 57 | + |
| 58 | +vrrp_instance RH_INT { |
| 59 | + state MASTER |
| 60 | + interface eth1 |
| 61 | + virtual_router_id 2 |
| 62 | + priority 100 |
| 63 | + advert_int 1 |
| 64 | + authentication { |
| 65 | + auth_type PASS |
| 66 | + auth_pass passw123 |
| 67 | + } |
| 68 | + virtual_ipaddress { |
| 69 | + 192.168.1.1 |
| 70 | + } |
| 71 | +} |
| 72 | +``` |
| 73 | + |
| 74 | +Ví dụ trên node backup: |
| 75 | + |
| 76 | +```sh |
| 77 | +vrrp_sync_group VG1 { |
| 78 | + group { |
| 79 | + RH_EXT |
| 80 | + RH_INT |
| 81 | + } |
| 82 | +} |
| 83 | + |
| 84 | +vrrp_instance RH_EXT { |
| 85 | + state BACKUP |
| 86 | + interface eth0 |
| 87 | + virtual_router_id 50 |
| 88 | + priority 99 |
| 89 | + advert_int 1 |
| 90 | + authentication { |
| 91 | + auth_type PASS |
| 92 | + auth_pass passw123 |
| 93 | + } |
| 94 | + virtual_ipaddress { |
| 95 | + 10.0.0.1 |
| 96 | + } |
| 97 | +} |
| 98 | + |
| 99 | +vrrp_instance RH_INT { |
| 100 | + state BACKUP |
| 101 | + interface eth1 |
| 102 | + virtual_router_id 2 |
| 103 | + priority 99 |
| 104 | + advert_int 1 |
| 105 | + authentication { |
| 106 | + auth_type PASS |
| 107 | + auth_pass passw123 |
| 108 | + } |
| 109 | + virtual_ipaddress { |
| 110 | + 192.168.1.1 |
| 111 | + } |
| 112 | +} |
| 113 | +``` |
| 114 | + |
| 115 | +Trong ví dụ `vrrp_sync_group` định nghĩa một VRRP group. Nó có một instance được định nghĩa cho external interface để kết nối ra ngoài internet (RH_EXT), và một cho internal interface (RH_INT). |
| 116 | + |
| 117 | +* Dòng `vrrp_instance` cấu hình chi tiết các virtual interface cho VRRP service daemon, cái mà được tạo bởi VIP instanece. `state MASTER` được thiết kế cho active server, và `state BACKUP` là cho backup server. |
| 118 | + |
| 119 | +* `interface` là thuộc tính chỉ định tên physical interface để thêm VIP instance. |
| 120 | + |
| 121 | +* `virtual_router_id` là một số dùng để định danh cho các virtual router instance. Nó sẽ giống nhau trên tất cả các LVS Router systems tham gia vào Virtual Router. Nó được sử dụng để phân biệt các instances của keepalived chạy trên cùng một network interface. |
| 122 | + |
| 123 | +* `priority` chỉ định thứ tự, độ ưu tiên chọn các interface trong khi failover; số càng cao, mức độ ưu tiên càng cao. Giá trị ưu tiên này phải nằm trong khoảng từ 0 đến 255, và Load Balancing server được cấu hình như `state MASTER` nên có một giá trị priority được thiết lập cao hơn giá trị priority được thiết lập bên phía server được cấu hình `state BACKUP`. |
| 124 | + |
| 125 | +* `authentication` block chỉ định authentication type (`auth_type`) và password (`auth_pass`) được sử dụng để xác thực server khi failover synchronization. `PASS` chỉ định password authentication; Keepalived cũng hỗ trợ AH hoặc Authentication Headers cho các kết nối toàn vẹn. |
| 126 | + |
| 127 | +* `virtual_ipaddress` chỉ định một interface virtual IP address. |
| 128 | + |
| 129 | + |
| 130 | +### 3. Virtual Server Definitions |
| 131 | + |
| 132 | +Section định nghĩa Virtual Server giống nhau trên cả LB1 và LB2. |
| 133 | + |
| 134 | +```sh |
| 135 | +virtual_server 10.0.0.1 80 { |
| 136 | + delay_loop 6 |
| 137 | + lb_algo rr |
| 138 | + lb_kind NAT |
| 139 | + protocol TCP |
| 140 | + |
| 141 | + real_server 192.168.1.20 80 { |
| 142 | + TCP_CHECK { |
| 143 | + connect_timeout 10 |
| 144 | + } |
| 145 | + } |
| 146 | + real_server 192.168.1.21 80 { |
| 147 | + TCP_CHECK { |
| 148 | + connect_timeout 10 |
| 149 | + } |
| 150 | + } |
| 151 | + real_server 192.168.1.22 80 { |
| 152 | + TCP_CHECK { |
| 153 | + connect_timeout 10 |
| 154 | + } |
| 155 | + } |
| 156 | + real_server 192.168.1.23 80 { |
| 157 | + TCP_CHECK { |
| 158 | + connect_timeout 10 |
| 159 | + } |
| 160 | + } |
| 161 | + |
| 162 | +} |
| 163 | +``` |
| 164 | + |
| 165 | +* Dòng đầu tiên `virtual_server` với IP address. |
| 166 | +* `delay_loop`: Cấu hình khoảng thời gian (được tính bằng giây) giữa các lần health checks. |
| 167 | +* `lb_algo`: chỉ định loại giải thuật được sử dụng cho tính khả dụng (trong trường hợp này là `rr` hay round-robin) |
| 168 | +* `lb_kind`: xác định routing method (trong ví dụ trên là sử dụng NAT) |
| 169 | +* Sau đó là cấu hình chi tiết cho các Virtual Server |
| 170 | + * `real_server` được cấu hình lại một lần nữa, tương tự với IP được chỉ định lúc trước. |
| 171 | + * `TCP_CHECK` Kiểm tra tính khả dụng của real server bằng cách sử dụng TCP. |
| 172 | + * `connect_timeout` cấu hình thời gian tính bằng giây, trước khi một timeout xảy ra. |
| 173 | + |
| 174 | +Bảng một số các giá trị `lv_algo` cho Virtual Server |
| 175 | + |
| 176 | +|Algorithm Name |lv_algo value| |
| 177 | +|---|---| |
| 178 | +|Round-Robin| rr| |
| 179 | +|Weighted Round-Robin| wrr| |
| 180 | +|Least-Connection| lc| |
| 181 | +|Weighted Least-Connection| wlc| |
| 182 | +|Locality-Based Least-Connection| lblc| |
| 183 | +|Locality-Based Least-Connection Scheduling with Replication| lblcr| |
| 184 | +|Destination Hash| dh| |
| 185 | +|Source Hash| sh| |
| 186 | +|Source Expected Delay| sed| |
| 187 | +|Never Queue| nq| |
| 188 | + |
| 189 | + |
| 190 | + |
| 191 | + |
| 192 | + |
| 193 | + |
| 194 | + |
| 195 | +## Tham khảo |
| 196 | + |
| 197 | +[1] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/ch-initial-setup-vsa |
0 commit comments