You are on page 1of 64

GVHD: Thầy Lê Mạnh Hải High Availability Cluster

LỜI CẢM ƠN

Việc tham gia đề án “High Availability Cluster” là một kinh nghiệm quý báu đối với
nhóm chúng tôi. Đặc biệt, chúng tôi muốn bày tỏ lòng biết ơn của mình đến thầy Lê
Mạnh Hải, giảng viên hướng dẫn, đã tận tình hướng dẫn, khuyên bảo và giúp đỡ chúng
tôi. Xin cảm ơn thầy về những lời chỉ dẫn, nhắc nhở và động viên đã giúp chúng tôi
hoàn thành đề tài tốt nghiệp, cũng như thầy đã vạch ra cho chúng tôi hướng đi tiếp
theo cho mục đích học tập sau này.

Chúng tôi xin chân thành cảm ơn Ban Giám Hiệu và khoa Công nghệ thông tin đã mở
ra cho nhóm một cơ hội mới về hướng đi trong tương lai của mình.

Một lần nữa chúng tôi xin chân thành cảm ơn với tất cả tấm lòng.

Tháng 10 năm 2011, thành phố Hồ Chí Minh

Nhóm sinh viên thực hiện đề án

SVTH: Bùi Nam Hải & Trương Minh Khôi 1


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

LỜI MỞ ĐẦU
Hiện nay, các máy chủ ứng dụng thường phục vụ cho rất nhiều người dùng nên phải có
khả năng tự động chia tải cho nhau, tính sẵn sàng cao mà vẫn đảm bảo sự đồng nhất
dữ liệu giữa các máy chủ.

Khả năng tự động chia tải sẽ giúp cho các máy chủ có thể tự phân chia cho nhau yêu
cầu phục vụ từ phía người dùng, từ đó giúp hệ thống có khả năng phục vụ nhiều người
dùng hơn.

Tính sẵn sàng cao là khả năng đảm bảo các máy chủ hoạt động liên tục xuyên suốt,
nếu có sự cố xảy ra làm gián đoạn việc phục vụ thì thời gian gián đoạn đó sẽ là rất
nhỏ.

Mục tiêu của đề tài này là xây dựng một hệ thống máy chủ Web phục vụ nhiều người
dùng có khả năng tự động chia tải và tính sẵn sàng cao mà vẫn đảm bảo sự đồng nhất
dữ liệu giữa các máy chủ.

Trong đề tài này chúng tôi sẽ sử dụng công nghệ Clustering để giải quyết vấn đề trên.
Clustering là phương pháp nhóm các máy chủ thật lại thành một máy chủ ảo.

Trong đó việc phân tải giữa các máy chủ trong Cluster sẽ được thực hiện bằng công
nghệ chuyển mạch IP ở lớp 4 mô hình OSI. Để đáp ứng tính sẵn sàng cao, Cluster sẽ
có một trình quản lý giám sát hoạt động của các máy chủ.

Với việc áp dụng công nghệ Clustering và các phương pháp đồng bộ dữ liệu, chúng tôi
đã thực hiện thành công mục tiêu của đề tài này.

SVTH: Bùi Nam Hải & Trương Minh Khôi 2


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

MỤC LỤC

CHƯƠNG 1: TỔNG QUAN..........................................................................................6

1.1. Đặt vấn đề.......................................................................................................6

1.2. Nhiệm vụ của đề tài.........................................................................................6

1.3. Cấu trúc đề tài.................................................................................................6

CHƯƠNG 2: KHÁI QUÁT VỀ CLUSTER..................................................................8

2.1 Khái niệm về Cluster.......................................................................................8

2.2 Các ưu điểm của hệ thống Cluster...................................................................8

2.3 Các mô hình Cluster........................................................................................8

2.3.1 High Availability Cluster.........................................................................8

2.3.2 High Performance Cluster.....................................................................27

2.3.3 Khác biệt của High Availability Cluster và High Performance Cluster.29

2.4 Ảo hóa Cluster...............................................................................................30

2.4.1 Các thành phần của trong ảo hóa Cluster..............................................30

2.4.2 Ưu điểm của ảo hóa Cluster...................................................................30

2.4.3 Khuyết điểm của ảo hóa Cluster............................................................30

2.4.4 Ý tưởng xây dựng ảo hóa Cluster...........................................................31

CHƯƠNG 3: TRIỂN KHAI MÔ HÌNH THỰC NGHIỆM..........................................32

3.1 Mô hình thực nghiệm....................................................................................32

3.2 Cấu hình........................................................................................................32

3.2.1 Xây dựng máy chủ chia tải giữa các máy chủ Web................................32

3.2.2 Xây dựng máy chủ dự phòng cho việc chia tải giữa các máy chủ Web. .35

3.2.3 Xây dựng máy chủ chia tải cho các máy chủ MySQL.............................36

3.2.4 Xây dựng đồng bộ dữ liệu giữa các máy chủ Web..................................37

SVTH: Bùi Nam Hải & Trương Minh Khôi 3


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

3.2.5 Xây dựng đồng bộ dữ liệu giữa các máy chủ MySQL............................38

3.2.6 Xây dựng Firewall bảo vệ hệ thống........................................................45

CHƯƠNG 4: NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC, KẾT QUẢ, HẠN CHẾ VÀ HƯỚNG
PHÁT TRIỂN ĐỀ TÀI.................................................................................................53

4.1 Những vấn đề đạt được.................................................................................53

4.2 Kết quả quá trình triển khai mô hình thực tiễn..............................................54

4.3 Hạn chế:........................................................................................................63

4.4 Hướng phát triển:..........................................................................................63

TÀI LIỆU THAM KHẢO............................................................................................64

SVTH: Bùi Nam Hải & Trương Minh Khôi 4


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

MỤC LỤC HÌNH

Hình 2.3.1.1.1 Failover Cluster......................................................................................9

Hình 2.3.1.1.2 Mô hình Pacemaker..............................................................................11

Hình 2.3.1.2 Load Balancing Cluster...........................................................................12

Hình 2.3.2.1 Compute Cluster.....................................................................................28

Hình 2.3.2.2 Grid Computing......................................................................................29

Hình 3.1.1 Mô hình thực nghiệm.................................................................................32

SVTH: Bùi Nam Hải & Trương Minh Khôi 5


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

CHƯƠNG 1: TỔNG QUAN


1.1. Đặt vấn đề

Công nghệ Clustering là phương pháp nhóm các máy chủ thật thành một máy chủ ảo,
để thực hiện công nghệ này có rất nhiều phương pháp, tuy nhiên trong đề tài này thì
phương pháp được chọn phải bảo đảm được việc chia tải giữa các máy chủ Web cũng
như máy chủ cơ sở dữ liệu, và tính sẵn sàng của hệ thống mà vẫn đảm bảo sự đồng
nhất dữ liệu giữa các máy chủ.

1.2. Nhiệm vụ của đề tài

Xây dựng một hệ thống máy chủ Web phục vụ nhiều người dùng có khả năng tự động
chia tải và tính sẵn sàng cao mà vẫn đảm bảo sự đồng nhất dữ liệu giữa các máy chủ.

Để thực hiện đề tài thì cần xây dựng các máy chủ như sau: 3 máy chủ phân chia tải, 2
máy chủ Web, 2 máy chủ MySQL, 2 Firewall

Các công việc cần thực hiện:

 Xây dựng máy chủ chia tải giữa các máy chủ Web.

 Xây dựng máy chủ chia tải giữa các máy chủ MySQL.

 Xây dựng máy chủ dự phòng cho việc chia tải giữa các máy chủ Web.

 Xây dựng đồng bộ dữ liệu giữa các máy chủ Web.

 Xây dựng đồng bộ dữ liệu giữa các máy chủ MySQL.

 Xây dựng Firewall để bảo vệ hệ thống.

1.3. Cấu trúc đề tài

Chương 1: Tổng quan về đề tài

Trình bày tổng quan về đề tài “Triển khai hệ thống High Availability Cluster trên hệ
điều hành Ubuntu 10.04”, nhiệm vụ và cấu trúc của đề tài.

Chương 2: Khái quát về Cluster

Giới thiệu về Cluster, các dạng Cluster và các phần mềm. Đồng thời trình bày về chức

SVTH: Bùi Nam Hải & Trương Minh Khôi 6


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

năng, các kĩ thuật, cấu trúc của các phần mềm.

Chương 3: Triển khai mô hình thực nghiệm High Availability Cluster

Triển khai mô hình thực nghiệm xây dựng hệ thống High Availability Cluster.

Chương 4: Những vấn đề đạt được, những hạn chế và hướng phát triển đề tài

Trình bày những vấn đề đạt được sau khi tìm hiểu về công nghệ Cluster và triển khai
mô hình thực nghiệm. Đồng thời cũng đề cập đến những hạn chế sau quá trình làm đề
tài, hướng phát triển của đề tài và các tài liệu tham khảo đã sử dụng trong quá trình
thực hiện đề tài.

CHƯƠNG 2: KHÁI QUÁT VỀ CLUSTER


2.1Khái niệm về Cluster
SVTH: Bùi Nam Hải & Trương Minh Khôi 7
GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Cluster là một nhóm các máy tính liên kết với nhau, thông thường là qua mạng LAN,
làm việc chung với nhau như là một máy đơn. Cluster được sử dụng để tăng khả năng
xử lý hoặc mức độ sẵn sàng của hệ thống (nếu so sánh với một máy đơn cùng tốc độ
thì sử dụng Cluster hiệu quả hơn).

2.2Các ưu điểm của hệ thống Cluster

Cung cấp tính sẵn sàng cao:

 Luôn sẵn sàng cho các ứng dụng và các dịch vụ ngay cả khi phần cứng hay
phần mềm của một máy chủ bị lỗi

Dễ dàng gia tăng khả năng xử lý:

 Khi các máy chủ vượt quá khả năng xử lý, ta có thể dễ dàng thêm node vào
Cluster để đáp ứng nhu cầu xử lý.

Cung cấp sự dễ dàng trong quản lý:

 Ta có thể dùng các công cụ quản trị Cluster để quản lý một Cluster như là quản
lý một máy đơn.

 Có thể chuyển đổi lượng công việc giữa các máy chủ hay đặt máy chủ ở trạng
thái không hoạt động cho kế hoạch bảo trì.

 Có thể giám sát trạng thái của Cluster, tất cả các node và tài nguyên từ bất kỳ
nơi nào trong mạng

2.3Các mô hình Cluster

2.3.1 High Availability Cluster

2.3.1.1 Failover Cluster

Failover Cluster cung cấp tính sẵn sàng của các dịch vụ bằng cách chuyển các yêu cầu
đến một node Cluster sang một node khác trong trường hợp node đó không hoạt động.
Mô hình này thông thường có 2 node, một node sẽ hoạt động còn node còn lại sẽ ở
trạng thái chờ, khi node đang hoạt động xảy ra sự cố thì node ở trạng thái chờ sẽ tự

SVTH: Bùi Nam Hải & Trương Minh Khôi 8


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

động tiếp nhận các yêu cầu thay cho node kia. Ứng dụng hỗ trợ Failover: Heartbeat,
High-availability Service Management trong Red Hat Cluster Suite.

Hình 2.3.1.1.1 Failover Cluster

Các yêu cầu khi cấu hình một hệ thống High Availability Cluster:

Mặc dù có nhiều sự khác nhau giữa các mô hình High Availability nhưng sau đây là
các yêu cầu cấu hình chung

 Dễ dàng khởi động và tắt chương trình quản lý Cluster: việc này có thể làm
bằng tay hoặc thông qua một chương trình khác.

 Sự sẵn sàng của hệ thống lưu trữ.

 Khả năng lưu trữ trạng thái: Trạng thái sau cùng của node phải được lưu lại.
Điều này đảm bảo hệ thống hoạt động lại ngay khi có sự cố.

 Heartbeat

Từ phiên bản 2.1.4 trở về trước, Heartbeat là tên của dự án High Availability Cluster
trên nền Linux. Nhưng từ phiên bản 2.1.4 trở về sau, dự án này đổi tên là Linux-HA,
và Heartbeat là một thành phần trong đó, đóng vai trò thông báo, gửi thông tin giữa
các máy trạm (Cluster Messaging Layer).

Heartbeat là một chương trình cho phép máy trạm biết về sự hiện diện (hoặc biến

SVTH: Bùi Nam Hải & Trương Minh Khôi 9


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

mất!) của các tiến trình (process) mà nó quản lý trên các máy, và giúp các máy trạm dễ
dàng trao đổi thông tin với nhau.

Linux-HA gồm 4 thành phần chính:

 Heartbeat (Cluster Messaging Layer)

 Cluster Glue

 Resource Agent

 Pacemaker

Và thành phần phụ DRBD dùng để đồng bộ ổ đĩa giữa các máy.

Để được hữu ích hơn cho người dùng, chương trình Heartbeat cần phải được kết hợp
với một phần mềm quản lý tài nguyên Cluster như Pacemaker, có nhiệm vụ khởi động
và dừng các dịch vụ (địa chỉ IP, các máy chủ Web, …) mà Cluster sẽ cung cấp cho tính
sẵn sàng cao. Pacemaker là phần mềm quản lý tài nguyên Cluster mà Heartbeat đề
nghị sử dụng. Các thành phần của Heartbeat:

 Communication module: cung cấp việc chứng thực và gửi thông tin giữa các
máy trạm (chủ yếu là bằng UDP trên nền IPv4).

 Cluster Consensus Membership: Giúp cho các node có cùng là thành viên của
một nhóm có thể giao tiếp được với nhau.

 Cluster Plumbing Library: một bộ thư viện cung cấp nhiều tính năng hữu ích
như: quản lý bộ nhớ, trigger, quản lý theo thời gian thực…

 IPC Library: một bộ thư viện giúp giao tiếp giữa các tiến trình với nhau.

 Non-blocking logging daemon: là một chương trình ghi nhật ký của Heartbeat
tên là logd.

 Pacemaker

Là một Cluster Resource Manager, thực hiện việc quản lý tài nguyên trên Cluster, cho
phép ra lệnh tắt, mở, đóng hoặc xem hiện trạng của một tài nguyên.

SVTH: Bùi Nam Hải & Trương Minh Khôi 10


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Hình 2.3.1.1.2 Mô hình Pacemaker

2.3.1.2 Load balancing Cluster

Load balancing Cluster là một nhóm các máy tính được kết nối với nhau, cùng làm
nhiệm vụ giống nhau để chia sẽ các công việc, nhằm gia tăng khả năng sẵn sàng của
hệ thống.

Load balancing là một dạng của High Availability Cluster. Thường được sử dụng trong
các công ty, tổ chức có yêu cầu cao về độ sẵn sàng của dịch vụ, ví như ngân hàng;
công ty mua bán, thanh toán trực tuyến, hay một nhà cung cấp game trực tuyến chẳng
hạn. Đối với những nơi này, họ thường tiếp nhận một lượng lớn yêu cầu từ phía khách
hàng, và việc chậm trễ hay trì hoãn cung cấp các dịch vụ ở các công ty, tổ chức này sẽ
gây ra các tổn thất rất lớn. Vì vậy, việc hư hỏng thiết bị, hoặc một lỗi phần mềm...dẫn
đến việc không đáp ứng được các yêu cầu từ phía khách hàng là điều không thể chấp
nhận. Đây là điều mà một máy đơn lẻ không thể đáp ứng được.

Load balancing đảm bảo tính sẵn sàng của hệ thống bằng cách chia sẽ công việc xử lý,
chia sẽ các yêu cầu từ phía khách hàng cho tất cả các node trong Cluster. Khi một node
xảy ra sự cố, các công việc của node đó sẽ được chuyển cho các node còn lại.

Một trong các ưu điểm của Load balancing Cluster chính là khả năng chịu được việc
tấn công DoS. Tấn công DoS là kiểu tấn công tạo ra một lượng lớn các yêu cầu giả
mạo, làm quá tải hệ thống, hoặc gây tắt nghẽn đường truyền...
SVTH: Bùi Nam Hải & Trương Minh Khôi 11
GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Việc này sẽ không thể xảy ra nếu khi hệ thống gần quá tải, ta lại thêm vào một node
mới để tăng khả năng xử lý của hệ thống.

Tuy nhiên, nhược điểm của Load balancing Cluster chính là chi phí dành cho việc mua
thiết bị. Một số người coi đây là nhược điểm, một số khác lại không, bởi vì đối với các
công ty lớn thì chi phí cho việc này không ảnh hưởng bao nhiêu nếu so với chi phí cho
việc hư hỏng dịch vụ.

Hình 2.1.1.2.1 Load Balancing Cluster

 Linux Virtual Server

Linux Virtual Server (LVS) là một dự án được khởi xướng bởi Wensong Zhang.

LVS là mộ trong những ứng dụng thực tế của Load balancing Cluster. Thành phần
chính của dự án là phần mềm IPVS được cài trên máy Load balancer. Load balancer là
switch lớp 4 đóng vai trò như một router. Máy trạm sẽ gởi lời yêu cầu dịch vụ tới Load
balancer thông qua một IP ảo, sau đó Load balancer sẽ chuyển lời yêu cầu tới các máy
chủ thật.

SVTH: Bùi Nam Hải & Trương Minh Khôi 12


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

 Các mô hình của LVS

 Virtual Server thông qua Direct Routing

Lưu ý: Các máy chủ thật cùng đặt trên một mạng vật lý.

SVTH: Bùi Nam Hải & Trương Minh Khôi 13


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Mô tả hoạt động:

Khi người dùng truy cập dịch vụ, gói tin yêu cầu sẽ có địa chỉ IP đích là địa chỉ IP ảo
của Load balancer (đây là IP đại diện cho Cluster, nằm ở card mạng kết nối với mạng
ngoài của Load balancer).

Load balancer sau khi nhận được gói tin yêu cầu, sẽ kiểm tra địa chỉ đích và port đích
của gói tin. Nếu cả hai trùng với thông tin đang chứa trong bảng rule của Load
balancer thì nó sẽ chọn ra một máy chủ thật để phục vụ cho yêu cầu này và tạo thành
một kết nối (việc chọn lựa máy chủ thật nào sẽ phục vụ dựa vào thuật toán
Scheduling), sau đó kết nối này sẽ được Load balancer thêm vào bảng hash như là một
kết nối đang mở (bảng hash này dùng để quản lý các kết nối). Trước khi chuyển gói tin
cho máy chủ thật, Load balancer sẽ chuyển địa chỉ MAC trong gói tin thành địa chỉ
MAC của máy chủ thật. Vì vậy đó là lý do mà Load balancer và máy chủ thật phải
được đặt trong cùng một mạng vật lý.

SVTH: Bùi Nam Hải & Trương Minh Khôi 14


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Mô hình quá trình đóng gói trong Direct Routing

 Virtual Server thông qua IP Tunneling

IP Tunneling hay còn gọi là IP Encapsulation là một kỹ thuật đóng gói IP datagram
này vào trong IP datagram khác. IP Tunneling thường được dùng trong mạng riêng ảo
VPN, hoặc các mạng Mobile IP.

SVTH: Bùi Nam Hải & Trương Minh Khôi 15


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Mô tả hoạt động:

Khi người dùng truy cập dịch vụ, gói tin yêu cầu sẽ mang địa chỉ IP đích là địa chỉ IP
ảo của Load balancer (đây là IP đại diện cho Cluster, nằm ở card mạng kết nối với
mạng ngoài của Load balancer)

Load balancer sau khi nhận được gói tin yêu cầu, sẽ kiểm tra địa chỉ đích và port đích
của gói tin. Nếu cả hai trùng với thông tin đang chứa trong bảng rule của Load
balancer thì nó sẽ chọn ra một máy chủ thật để phục vụ cho yêu cầu này và tạo thành
một kết nối (việc chọn lựa máy chủ thật nào sẽ phục vụ dựa vào thuật toán

SVTH: Bùi Nam Hải & Trương Minh Khôi 16


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Scheduling), sau đó kết nối này sẽ được Load balancer thêm vào bảng hash như là một
kết nối đang mở (bảng hash này dùng để quản lý các kết nối). Trước khi chuyển gói tin
cho máy chủ thật, Load balancer sẽ đóng gói gói tin lại rồi mới chuyển.

Gói tin yêu cầu sau khi được chuyển đến cho máy chủ thật sẽ được mở gói và xử lý,
sau đó máy chủ thật sẽ hồi đáp lại bằng gói tin trả lời và gửi thẳng đến máy trạm.

Khi một kết nối bị ngắt hoặc hết hạn thì Load balancer sẽ loại bỏ khỏi bảng hash.

Lưu ý: Port dịch vụ trên máy chủ ảo và máy chủ thật phải giống nhau.

Mô hình quá trình đóng gói trong IP Tunneling

Bảng rule mẫu:

Protocol Virtual IP Address Port Real IP Address Weight

SVTH: Bùi Nam Hải & Trương Minh Khôi 17


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

TCP 202.103.106.5 80 202.103.107.2 1

202.103.106.3 2

 Virtual Server thông qua NAT

NAT là gì?

NAT hay còn gọi là Network Address Translation là một tính năng cho phép chuyển
đổi từ địa chỉ này sang địa chỉ khác. Người ta thường dùng NAT để chuyển đổi giữa
địa chỉ public và địa chỉ private. NAT có ba loại:

 NAT tĩnh (static NAT): Chuyển đổi từ một địa chỉ sang một địa chỉ (N<->N)
 NAT động (dynamic NAT): Chuyển đổi từ M địa chỉ sang N địa chỉ với M nhỏ
hơn N.
 NAT port hay còn gọi là PAT (port address translation): chuyển đồi từ N địa chỉ
sang một địa chỉ. Virtual Server thông qua NAT sử dụng loại này.

SVTH: Bùi Nam Hải & Trương Minh Khôi 18


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

SVTH: Bùi Nam Hải & Trương Minh Khôi 19


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Mô tả hoạt động:

Bước 1: Máy trạm gửi yêu cầu

Bước 2: Load balancer nhận và xử lý gói tin sau đó gửi gói tin cho máy chủ thật

Bước 3: Máy chủ thật nhận và xử lý gói tin.

Bước 4: Máy chủ thật hồi đáp gói tin đến Load balancer và được Load balancer xử lý
tiếp

Bước 5: Load balancer hồi đáp lại cho máy trạm.

Khi người dùng truy cập dịch vụ, gói tin yêu cầu sẽ mang địa chỉ IP đích là địa chỉ IP
ảo của Load balancer (đây là IP đại diện cho Cluster, nằm ở card mạng kết nối với
mạng ngoài của Load balancer)

Load balancer sau khi nhận được gói tin yêu cầu, sẽ kiểm tra địa chỉ đích và port đích
của gói tin. Nếu cả hai trùng với thông tin đang chứa trong bảng rule của Load
balancer thì nó sẽ chọn ra một máy chủ thật để phục vụ cho yêu cầu này và tạo thành
một kết nối (việc chọn lựa máy chủ thật nào sẽ phục vụ dựa vào thuật toán
Scheduling), sau đó kết nối này sẽ được Load balancer thêm vào bảng hash như là một
kết nối đang mở (bảng hash này dùng để quản lý các kết nối). Trước khi chuyển gói tin
cho máy chủ thật, Load balancer sẽ chỉnh lại địa chỉ IP đích và port đích của gói tin
cho phù hợp với máy chủ thật đã được chọn, sau đó Load balancer mới chuyển gói tin.

Gói tin yêu cầu sau khi được chuyển đến cho máy chủ thật sẽ được xử lý và hồi đáp lại
bằng gói tin trả lời. Khi Load balancer nhận được gói tin trả lời từ máy chủ thật, nó sẽ
chỉnh lại địa chỉ IP nguồn và port nguồn của gói tin, sau đó mới gửi trả về lại cho máy
trạm.

Khi một kết nối bị ngắt hoặc hết hạn thì Load balancer sẽ loại bỏ nó khỏi bảng hash.

SVTH: Bùi Nam Hải & Trương Minh Khôi 20


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Bảng rule mẫu:

Protocol Virtual IP Port Real IP Port Weight


Address Address

TCP 202.103.106.5 80 172.16.0.2 80 1

172.16.0.3 8000 2

TCP 202.103.106.5 21 172.16.0.3 21 1

Tất cả lưu lượng đến địa chỉ 202.103.106.5 port 80 sẽ được chuyển qua cho máy chủ
thật 172.16.0.2 với port là 80 và máy chủ thật 172.16.0.3 với port là 8000.

Tất cả lưu lượng đến địa chỉ 202.103.106.5 port 21 sẽ được chuyển qua cho máy chủ
thật 172.16.0.3 với port là 21.

Ví dụ về chỉnh lại gói tin của Load balancer:

Các gói tin yêu cầu cho dịch vụ Web sẽ có dạng sau

SVTH: Bùi Nam Hải & Trương Minh Khôi 21


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

SOURCE 202.100.1.2:3456 DEST 202.103.106.5:80

Sau khi nhận được gói tin yêu cầu trên, Load balancer sẽ chọn một máy chủ thật để xử
lý gói tin này, trong trường hợp nào là máy chủ thật 172.16.0.3 với port là 8000. Do đó
gói tin sẽ được đổi lại địa chỉ đích và port đích.

SOURCE 202.100.1.2:3456 DEST 172.16.0.3:8000

Sau khi máy chủ thật 172.16.0.3 xử lý xong gói tin, nó sẽ gửi về gói tin phản hồi như sau

SOURCE 172.16.0.3:8000 DEST 202.100.1.2:3456

Load balancer nhận được gói tin phản hồi của máy chủ thật, sẽ sửa lại địa chỉ nguồn và
port nguồn của gói tin và gửi lại cho máy trạm như sau:

SOURCE 202.103.106.5:80 DEST 202.100.1.2:3456

 So sánh các mô hình

Virtual Server thông qua NAT

Lợi thế của phương pháp Virtual Server thông qua NAT là các máy chủ thật có thể
chạy tất cả các hệ điều hành có hỗ trợ giao thức TCP/IP.

SVTH: Bùi Nam Hải & Trương Minh Khôi 22


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Bất lợi là khả năng mở rộng của máy chủ ảo bị hạn chế. Hiện tượng thắt cổ chai sẽ xảy
ra khi số lượng các máy chủ thật tăng lên 20 máy hoặc nhiều hơn, bởi vì các gói yêu
cầu và trả lời luôn đi qua Load balancer.

Tuy nhiên phương pháp này vẫn có thể đáp ứng yêu cầu về hiệu suất ngay cả khi hiện
tượng thắt cổ chai xảy ra, ta có hai cách giải quyết vấn đề trên, một là DNS Hybrid
Approach sử dụng cách thức Round-Round DNS, hai là kết hợp với phương pháp
Virtual Server thông qua IP Tunneling hoặc phương pháp Virtual Server thông qua
Direct Routing.

Virtual Server thông qua IP Tunneling

Trong phương pháp này, Load balancer chỉ chuyển các yêu cầu tới các máy chủ thật,
máy chủ thật sẽ trả lời yêu cầu trực tiếp tới người sử dụng mà không qua Load
balancer. Chính vì điều này Load balancer có chuyển yêu câu phục vụ đến trên 100
máy chủ thật mà không xảy ra hiện tượng thắt cổ chai. Phương pháp này sẽ giúp tăng
tối đa số lượng máy chủ thật. Lưu lượng tối đa cho máy chủ ảo có thể lên tới hơn
1Gbps cho dù giới hạn lưu lượng Card mạng của Load balancer chỉ là 100Mbps.

Chức năng IP Tunneling được sử dụng để xây dựng một máy chủ ảo hiệu suất cao. Nó
rất hiệu quả để xây dựng một máy chủ ảo proxy, bởi vì những máy chủ proxy kết nối
trực tiếp tới Internet chỉ để truy tìm thông tin và trả lời về cho người dùng.

Virtual Server thông qua Direct Routing

Phương pháp này cũng như phương pháp Virtual Server thông qua Tunneling, Load
Balancer chỉ chuyển các yêu cầu tới các máy chủ thật, máy chủ thật sẽ trả lời yêu cầu
trực tiếp tới người sử dụng mà không qua Load balancer.

Phương pháp này không có Tunneling Overhead nhưng nó yêu cầu Load balancer và
các máy chủ thật phải cùng một mạng vật lý. Vì nó dùng địa chỉ MAC để xác định
máy chủ thật.

SVTH: Bùi Nam Hải & Trương Minh Khôi 23


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

 Các thuật toán chia tải trong Linux Virtual Server

Round-Robin

Thuật toán sắp xếp Round-Robin sẽ gửi mỗi yêu cầu từ máy trạm đến từng máy chủ
trong danh sách của Load balancer. Ví dụ ta có ba máy chủ A, B, C. Khi có yêu cầu
đến Load balancer thì yêu cầu 1 sẽ được chuyển cho máy chủ A, yêu cầu 2 cho máy
chủ B, yêu cầu 3 cho máy chủ C và yêu cầu 4 sẽ quay vòng lại cho máy chủ A.

Ở thuật toán này, nó xem mọi máy chủ là như nhau, ưu điểm của thuật toán này là nó
đơn giản, có thể áp dụng ở các máy chủ có cùng hoặc tốc độ xử lý tương đương nhau.

Weighted Round-Robin

Đây là thuật toán tương tự như thuật toán Round-Robin, tuy nhiên nó có sự phân biệt
giữa các máy chủ, nó đặt ra một trọng số riêng cho từng máy chủ, máy chủ nào có
trọng số cao thì sẽ được nhận yêu cầu đầu tiên và lượng yêu cầu cũng nhiều hơn các
máy chủ còn lại. Ví dụ ta có 3 máy chủ A, B, C lần lượt có các trọng số là 4, 3, 2. Vậy
thứ tự phục vụ sẽ là AABABCABC.

Thuật toán này sẽ tốt hơn thuật toán round-robin nếu như tốc độ giữa các máy chủ có
sự chênh lệch với nhau, tuy nhiên nó cũng có khuyết điểm khi tải luôn cao và các máy
chủ có tốc độ ngang nhau, khi đó sẽ dẫn đến tình trạng máy chủ có trọng số cao phải
phục vụ một lượng lớn yêu cầu so với các máy chủ khác.

Least-Connection

Thuật toán sắp xếp Least-Connection sẽ lựa chọn máy chủ nào đang có số kết nối ít
nhất và chuyển yêu cầu của máy trạm cho máy chủ đó. Đây là một thuật toán sắp xếp
“động”, bởi vì nó đếm các kết nối của các máy chủ một cách tự động, và dựa vào đó
mà phân bổ các yêu cầu từ máy trạm. Thích hợp với các máy chủ có tốc độ xử lý
SVTH: Bùi Nam Hải & Trương Minh Khôi 24
GVHD: Thầy Lê Mạnh Hải High Availability Cluster

tương tự nhau, trong trường hợp tải cao nó sẽ linh hoạt chọn máy chủ có kết nối thấp
mà chuyển yêu cầu đến cho máy chủ đó.

Tuy nhiên nó lại không mang lại hiệu quả cao khi các máy chủ có tốc độ khác nhau
bởi vì trong các kết nối TCP có trạng thái chờ TIME_WAIT, thông thường trạng thái
này kéo dài khoảng 2 phút, trong 2 phút một máy chủ có tải cao (ví dụ máy chủ web)
có thể tiếp nhận hàng ngàn kết nối. Để rõ hơn, ví dụ máy chủ A có tốc độ gấp đôi máy
chủ B, dĩ nhiên ta mong muốn máy chủ A sẽ xử lý nhiều kết nối hơn máy chủ B. Trong
trường hợp máy chủ A đang xử lý 1000 kết nối và đang ở trang thái chờ TIME_WAIT,
còn máy chủ B thì vừa kết thúc xử lý các kết nối hiện tại, theo thuật toán Least-
connection thì số yêu cầu mới từ máy khách sẽ được gửi hết cho máy chủ B cho đến
khi lượng kết nối ở máy chủ B nhiều hơn máy chủ A thì các yêu cầu mới được chuyển
qua cho A -> điểu này ta không hề mong muốn.

Weighted Least-Connection

Đây là thuật toán tương tự như thuật toán Least-Connection tuy nhiên nó có đặt trọng
số cho mỗi máy chủ. Máy chủ nào có trọng số lớn sẽ có số lượng kết nối lớn hơn các
máy chủ còn lại tại cùng một thời điểm. Thuật toán này dùng khi các máy chủ có tốc
độ xử lý khác nhau.

Locality-Based Least-Connection

Đây là thuật toán cân bằng tải dựa trên IP đích. Nó thường được sử dụng trong Cache
Cluster. Thuật toán này hướng gói tin có địa chỉ IP đích xác định đến máy chủ xác định
nếu máy chủ đó vẫn còn sống và chưa quá tải. Nếu máy chủ đó quá tải (số lượng kết
nối hiện tại lớn hơn trọng số của nó) và có một máy chủ đang có tải thấp thì nó xác
định lại trọng số cho máy chủ đang có tải thấp này và chuyển hướng các yêu cầu đến
máy chủ này.

Locality-Based Least-Connection with Replication

Đây cũng là thuật toán cân bằng tải dựa trên đỉa chỉ IP đích và cũng thường được dùng

SVTH: Bùi Nam Hải & Trương Minh Khôi 25


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

cho Cache Cluster. Nhưng nó khác với Locality-Based Least-Connection ở chỗ : Load
balancer sẽ giữ một sơ đồ bao gồm một tập các máy chủ sẽ nhận yêu cầu từ địa chỉ IP
xác định. Khi có một yêu cầu từ máy trạm gửi đến địa chỉ IP xác định đó, Load
balancer sẽ dùng thuật toán Least-Connection để chọn ra một máy chủ trong tập hợp
các máy chủ này phục vụ. Nếu tất cả các máy chủ trong tập hợp này đều quá tải, Load
balancer sẽ lấy một máy chủ khác ( máy chủ này là một máy chủ trong Cluster nhưng
không nằm trong tập hợp máy chủ) và gắn nó vào tập hợp máy chủ. Trong một khoảng
thời gian nhất định, nếu tập hợp các máy chủ không có thay đổi gì thêm, máy chủ nào
có tải cao nhất sẽ bị loại ra khỏi tập hợp các máy chủ.

Destination Hashing

Đây là thuật toán cân bằng tải dựa trên IP đích, nó phân bổ các kết nối thông qua một
bảng hash được xác định sẵn dựa trên địa chỉ IP đích.

Source Hashing

Đây là thuật toán cân bằng tải dựa trên IP nguồn, nó phân bổ các kết nối thông qua một
bảng hash được xác định sẵn dựa trên địa chỉ IP nguồn.

Shortest Expected Delay

Thuật toán này phân bổ kết nối dựa trên độ trễ, máy chủ nào có độ trễ ít nhất sẽ nhận
được yêu cầu từ máy trạm.

Never Queue

Thuật toán này hoạt động như sau: Nếu có một máy chủ đang rảnh rỗi thì yêu cầu sẽ
được gửi đến máy chủ đó thay vì phải chờ đợi một máy chủ khác có tốc độ nhanh hơn.
Nếu không có máy chủ nào rảnh rỗi thì yêu cầu sẽ được gửi đến cho máy chủ có độ trễ
thấp nhất (dựa theo thuật toán Shortest Expected Delay)

2.3.2 High Performance Cluster

SVTH: Bùi Nam Hải & Trương Minh Khôi 26


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Các High Performance Cluster sử dụng các node để thực thi các tính toán cùng một
lúc. High Performance Cluster có 2 dạng:

2.3.2.1 Compute Cluster

Compute Cluster là một nhóm các máy tính được kết nối với nhau nhằm gia tăng khả
năng xử lý, tính toán. Trong đó các node (một máy tính được xem như một node) được
kết nối chặt chẽ với nhau, thông thường là qua mạng LAN tốc độ cao. Một việc tính
toán sẽ được chuyển từ node này sang node khác thông qua một ứng dụng quản lý.

Compute Cluster hay còn gọi là Supercomputer là một dạng của High Performance
Cluster, thường được sử dụng cho mục đích khoa học, nghiên cứu.

Compute Cluster được sử dụng khi người ta cần tính toán một phép toán phức tạp, hay
một xử lý nào đó mà một máy đơn lẻ không thể hoàn thành hết được, ví dụ như việc
tính toán dự báo thời tiết hoặc tính toán lực của một vụ va chạm...

Tuy nhiên, điểm bất lợi của của Compute Cluster là sự ổn định. Khi một node trong
Cluster xảy ra sự cố sẽ gây nguy hại đến việc hoạt động của Cluster (bởi vì các node
của Cluster gắn kết chặt chẽ với nhau, hoạt động phụ thuộc lẫn nhau.) Vì thế việc bảo
trì định kì , thường xuyên luôn là vấn đề hàng đầu với loại Cluster này.

Hình 2.3.2.1 Compute Cluster

SVTH: Bùi Nam Hải & Trương Minh Khôi 27


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

2.3.2.2 Grid Computing

Grid Computing là một dạng Cluster phát triển từ Compute Cluster, nhưng điểm khác
biệt cơ bản là các node của Grid Computing không nhất thiết phải liên kết chặt chẽ với
nhau, chúng có thể nằm ở nhiều nơi khác nhau và liên lạc với nhau thông qua mạng
Internet.

Các node của Grid Computing sẽ nhận được các yêu cầu tính toán từ một máy chủ
trung gian, sau đó sẽ gửi trả kết quả trở về cho máy chủ này, sau đó nhận tiếp các yêu
cầu khác. Vì việc tính toán, xử lý được phân phối ra nhiều node khác nhau nên Grid
Computing còn được gọi là Distributed Cluster.

Nếu so sánh Grid Computing với Compute Cluster thì Grid Computing đa công dụng
hơn, từ một ứng dụng Web đơn giản đến một phép tính phức tạp, trong khi đó
Compute Cluster chỉ phục vụ cho một số mục đích nhất định. Việc bảo trì Grid
Computing cũng dễ dàng hơn, vì các node không nhất thiết phải liên kết chặt chẽ, khi
một node bị hư, phép tính sẽ được chuyển cho node khác xử lý.

Tuy nhiên, bởi vì các node của Grid Computing khác nhau về cấu hình cũng như tốc
độ đường truyền giữa các node với máy chủ trung gian, vì thế việc xử lý có thể bị kéo
dài nếu một node có tốc độ xử lý chậm, hoặc đường truyền tốc độ thấp, và tốc độ của
Grid Computing thì cũng không nhanh bằng Compute Cluster

SVTH: Bùi Nam Hải & Trương Minh Khôi 28


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Hình 2.3.2.2 Grid Computing

2.3.3 Khác biệt của High Availability Cluster và High Performance Cluster

HAC chú trọng sự ổn định, trong khi đó HPC chú trọng việc nâng cao khả năng xử lý.

Để hoạt động, HPC cần các phần mềm riêng biệt cung cấp các tính năng riêng biệt,
thông thường dùng để điều khiển các node của HPC. Ngược lại các cấu hình của HAC
thường liên quan đến việc kết nối giữa các node, và người dùng có thể chạy thêm các
phần mềm khác của riêng mình.

HPC được sử dụng với các tính năng đã được định sẵn, trong khi đó HAC được sử
dụng với nhiều tính năng hơn.

2.4Ảo hóa Cluster

SVTH: Bùi Nam Hải & Trương Minh Khôi 29


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Ngày nay, công nghệ ảo hóa đã rất phổ biến. Công nghệ này có thể được ứng dụng
trong Cluster. Các node ảo đều có tính năng như các node thật. Nếu đưa ra các giải
pháp tốt thì ứng dụng ảo hóa trong Cluster có được sự ổn định và tính năng được nâng
cao.

2.4.1 Các thành phần của trong ảo hóa Cluster

Host System là phần cứng mà các node được cài đặt lên và phần mềm ảo hóa

Guest System là phần mềm chạy trên hệ thống. Đôi khi được gọi là máy ảo, nhưng các
nhà sản xuất có tên gọi khác nhau

Cluster Manager là phần mềm xác định các dịch vụ cho các node ảo khác nhau

Cluster Service là ứng dụng được dùng điều khiển trạng thái của các node

2.4.2 Ưu điểm của ảo hóa Cluster

Khi ảo hóa Cluster, người quản trị hệ thống không cần quan tâm đến việc bổ sung
thêm phần cứng khi muốn có thêm một máy chủ với nhiều node chạy trên đó. Người
quản trị hệ thống có thể cắt giảm chi phí bằng cách nâng cấp phần cứng trên một máy
chủ và tiến hành cài đặt nhiều node trên máy chủ đó thay vì triển khai nâng cấp phần
cứng trên nhiều node.

Người quản trị hệ thống được cung cấp công cụ quản lý Cluster một cách dễ dàng .
Công cụ này giúp cho việc điều khiển và giám sát rất dễ dàng trong ảo hóa. Dữ liệu có
thể truy cập dễ dàng, điều khiển trên các node khác nhau và khắc phục sự cố trở nên
dễ dàng hơn.

Khả năng khắc phục sự cố là một lý do giúp cho việc ảo hóa Cluster trở nên dễ dàng.
Khi gặp vấn đề trong việc khắc phục kết nối giữa các node ảo với nhau, người quản trị
hệ thống có thể xóa node đi và tạo node mới.

2.4.3 Khuyết điểm của ảo hóa Cluster

Vấn đề máy ảo trong Cluster là phần cứng. Khi các node ảo được được khởi động trên
một máy đơn thì độ bền vững không được đảm bảo. Khi máy thật bị sự cố thì kéo theo
nó là các node ảo cũng bị sự cố theo. Nếu không có sao lưu phần cứng sẽ gây nguy

SVTH: Bùi Nam Hải & Trương Minh Khôi 30


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

hiểm cho toàn bộ hệ thống.

2.4.4 Ý tưởng xây dựng ảo hóa Cluster

Khi muốn xây dựng Cluster với các máy ảo, người ta thường đề nghị kết hợp với việc
xây dựng mô hình High Availability. Mỗi máy tính sẽ gồm nhiều node ảo giống nhau.
Trong trường hợp gặp sự cố, máy tính thứ 2 sẽ tiếp quản quyền điều khiển với cùng số
node như nhau.

Máy ảo Cluster đem lại hiệu quả về chi phí. Tuy nhiên sự tin tưởng vào mức độ sẵn
sàng của quá trình vận hành là không cao. Chính vì lẽ đó, nên có một máy chủ thật ở
chế độ chờ thay thế để phòng ngừa sự cố.

CHƯƠNG 3: TRIỂN KHAI MÔ HÌNH THỰC NGHIỆM

SVTH: Bùi Nam Hải & Trương Minh Khôi 31


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

3.1Mô hình thực nghiệm

Hình 3.2.1 Mô hình thực nghiệm

3.2Cấu hình

3.2.1 Xây dựng máy chủ chia tải giữa các máy chủ Web

Các phần mềm cần cài đặt: Ldirectord, Pacemaker

 Bật chức năng packer forwarding trong file /etc/sysctl.conf trên load 1

# Enables packet forwarding

net.ipv4.ip_forward = 1

 Kiểm tra lại bằng câu lệnh

/sbin/sysctl –p

Kết quả sẽ hiển thị là :

net.ipv4.ip_forward = 1

 Chỉnh sửa file ldirectord.cf trong thư mục /etc/ha.d/ trên load 1

checktimeout=10

SVTH: Bùi Nam Hải & Trương Minh Khôi 32


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

checkinterval=2

autoreload=no

logfile=”/var/log/ldirectord.log”

quiescent=yes

virtual=192.168.192.168:80

real=192.168.192.21:80 gate

real=192.168.192.22:80 gate

fallback=127.0.0.1:80 gate

service=http

monitorfile=”/var/log/monitor.log”

request=”a.html”

receive=”Welcome”

scheduler=rr

protocol=tcp

checktype=connect

checkport=80

 Chỉnh sửa file ha.cf trong thư mục /etc/ha.d/

crm respawn

logfile /var/log/ha-log

keepalive 2

deadtime 10

warntime 10

initdead 20

udpport 694

SVTH: Bùi Nam Hải & Trương Minh Khôi 33


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

ucast eth1 192.168.192.12

node load1.dyndns.org

node load2.dyndns.org

respawn hacluster /usr/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

 cấu hình xác thực giữa 2 load

auth 3

3 md5 h@1kh01

 Xác định quyền cho file authkeys

#chmod 600 /etc/ha.d/authkeys

 Bật các chế độ hoạt động cho Heartbeat và tắt chế độ hoạt động cho
Ldirectord vì Ldirectord phụ thuộc vào Heartbeat

update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .

update-rc.d –f ldirectord remove

 Cấu hình pacemaker để quản lý quá trình hoạt động của Hearbeat và
Ldirectord

primitive ip ocf:heartbeat:IPaddr2 op monitor interval="30" timeout="20" params


ip="192.168.192.168" lvs_support="true"

primitive ip-eth1 ocf:heartbeat:IPaddr2 op monitor interval="30" timeout="20" params


ip="192.168.192.168" nic="eth1" cidr_netmask="32"

primitive lvs ocf:heartbeat:ldirectord op monitor interval="20" timeout="10"

group ip-lvs ip lvs

clone c-ip-eth1 ip-eth1 meta interleave="true"

colocation eth1-never-lvs -inf: c-ip-eth1 ip-lvs

3.2.2 Xây dựng máy chủ dự phòng cho việc chia tải giữa các máy chủ Web

SVTH: Bùi Nam Hải & Trương Minh Khôi 34


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Các phần mềm cần cài đặt: Ldirectord, Pacemaker

 Bật chức năng packer forwarding trong file /etc/sysctl.conf trên load 2

# Enables packet forwarding

net.ipv4.ip_forward = 1

 Chỉnh sửa file ldirectord.cf trong thư mục /etc/ha.d/ trên load 2

checktimeout=10

checkinterval=2

autoreload=no

logfile=”/var/log/ldirectord.log”

quiescent=yes

virtual=192.168.192.168:80

real=192.168.192.21:80 gate

real=192.168.192.22:80 gate

fallback=127.0.0.1:80 gate

service=http

monitorfile=”/var/log/monitor.log”

request=”a.html”

receive=”Welcome”

scheduler=rr

protocol=tcp

checktype=connect

checkport=80

 Chỉnh sửa file ha.cf trong thư mục /etc/ha.d/

crm respawn

SVTH: Bùi Nam Hải & Trương Minh Khôi 35


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

logfile /var/log/ha-log

keepalive 2

deadtime 10

warntime 10

initdead 20

udpport 694

ucast eth1 192.168.192.11

node load1.dyndns.org

node load2.dyndns.org

respawn hacluster /usr/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

 cấu hình xác thực giữa 2 load

auth 3

3 md5 h@1kh01

 Xác định quyền cho file authkeys

#chmod 600 /etc/ha.d/authkeys

 Bật các chế độ hoạt động cho Heartbeat và tắt chế độ hoạt động cho
Ldirectord vì Ldirectord phụ thuộc vào Heartbeat

update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .

update-rc.d –f ldirectord remove

3.2.3 Xây dựng máy chủ chia tải cho các máy chủ MySQL

Các phần mềm cần cài đặt: Ldirectord

 Bật chức năng packer forwarding trong file /etc/sysctl.conf trên loadlan

# Enables packet forwarding

SVTH: Bùi Nam Hải & Trương Minh Khôi 36


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

net.ipv4.ip_forward = 1

 Cấu hình file ldirectord.cf trong thư mục /etc/ha.d/ trên loadlan

checktimeout=10

checkinterval=2

autoreload=no

logfile=”/var/log/ldirectord.log”

quiescent=yes

virtual=192.168.46.168:3306

real=192.168.46.31:3306 gate 10

real=192.168.46.32:3306 gate 10

service=mysql

scheduler=rr

protocol=tcp

checktype=negotiate

login=”test1”

passwd=”123456”

database=”dailocphat_mysql”

request=”SELECT * FROM jos_menu”

monitorfile=”/var/log/monitor.log”

3.2.4 Xây dựng đồng bộ dữ liệu giữa các máy chủ Web

 Cấu hình sao lưu dữ liệu từ máy chủ Web1 sang máy chủ Web2 :

Phần mềm cần cài đặt: Rsync, ssh-keygen, ssh-copy-id, crontab

 Cấu hình kết nối ssh khi đăng nhập không cần điền username và
password:

SVTH: Bùi Nam Hải & Trương Minh Khôi 37


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

#ssh-keygen

# ssh-copy-id –i web2

 Cấu hình sao lưu dữ liệu từ Web1 đến Web2:

#crontab –e

Sau đó thêm vào dòng sau

0,10,20,30,40,50 * * * * rsync –avzu --delete /var/www/ root@web2:/var/www/


>> /var/log/crontab.log && date >>/var/log/crontab.log

 Cấu hình sao lưu dữ liệu từ máy chủ Web2 sang máy chủ Web1 :

Phần mềm cần sử dụng: Rsync, ssh-keygen, ssh-copy-id, crontab

 Cấu hình kết nối ssh không cần điền username và password:

#ssh-keygen

# ssh-copy-id –i web1

 Cấu hình sao lưu dữ liệu từ Web2 đến Web1:

#crontab –e

Sau đó thêm vào dòng sau

5,15,25,35,45,55 * * * * rsync –avzu --delete /var/www/ root@web1:/var/www/


>> /var/log/crontab.log && date >> /var/log/crontab.log

3.2.5 Xây dựng đồng bộ dữ liệu giữa các máy chủ MySQL

Phần mềm cần sử dụng: mysql-server, mysql-client

 Sao lưu dữ liệu từ Data1 đến Data2, Data1 là master- Data2 là slave

 Tạo user trên data1 để data2 sử dụng trong quá trình sao chép.

mysql> create user ‘slave1’@’%’ identified by ‘123456’;

mysql> grant replication slave on *.* to ‘slave1’@’%’;

 Chỉnh sửa file cấu hình mysql (my.conf) trên Data1

SVTH: Bùi Nam Hải & Trương Minh Khôi 38


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

server-id = 1

Log_bin = /var/log/mysql/mysql-bin.log

Binlog_do_db = dailocphat_mysql

Trong đó server-id : là số định danh của máy.

Log_bin: đường dẫn đến file log.

Binlog_do_db : database sẽ dùng để sao chép.

 Chỉnh sửa file cấu hình mysql (my.conf) trên Data2

server-id =2

master-host = 192.168.46.31

master-user = slave1

master-password = 123456

master-port = 3306

master-connect-retry = 60

replicate-do-db = dailocphat_mysql

report-host = data2

 Kiểm tra trên Data1

mysql> show master status;

+----------------------+----------+-----------------------+------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+----------------------+----------+-----------------------+------------------------+

| mysql-bin.000283 | 106 | dailocphat_mysql | |

+----------------------+----------+-----------------------+------------------------+

1 row in set (0.00 sec)

SVTH: Bùi Nam Hải & Trương Minh Khôi 39


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Lưu lại thông số của File và Position (trong trường hợp này là mysql-bin.000283 và
106)

 Kiểm tra trên Data2

mysql> slave stop;

mysql> change master to

>master_log_file=’ mysql-bin.000283’,

>master_log_pos=’106’;

mysql> slave start;

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State : Waiting for master to send event

Master_Host : 192.168.46.31

Master_User : slave1

Master_Port : 3306

Connect_Retry : 60

Master_Log_File : mysql-bin.000283

Read_Master_Log_Pos : 106

Relay_Log_File : data2-relay-bin.000382

Relay_Log_Pos : 251

Relay_Master_Log_File : mysql-bin.000283

Slave_IO_Running : Yes

Slave_SQL_Running : Yes

Replicate_Do_DB : dailocphat_mysql

Replicate_Ignore_DB :

SVTH: Bùi Nam Hải & Trương Minh Khôi 40


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Replicate_Do_Table :

Replicate_Ignore_Table :

Replicate_Wild_Do_Table :

Replicate_Wild_Ignore_Table :

Last_Errno :0

Last_Error :

Skip_Counter :0

Exec_Master_Log_Pos : 106

Relay_Log_Space : 548

Until_Condition : None

Until_Log_File :

Until_Log_Pos :0

Master_SSL_Allowed : No

Master_SSL_CA_File :

Master_SSL_CA_Path :

Master_SSL_Cert :

Master_SSL_Cipher :

Master_SSL_Key :

Seconds_Behind_Master :0

Master_SSL_Verify_Máy chủ_Cert: No

Last_IO_Errno :0

Last_IO_Error :

Last_SQL_Errno :0

Last_SQL_Error :

SVTH: Bùi Nam Hải & Trương Minh Khôi 41


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

1 row in set (0.00 sec)

Hiện ra như vậy là thành công.

 Sao lưu dữ liệu từ Data2 đến Data1, Data2 là master- Data1 là slave

mysql> create user ‘slave2’@’%’ identified by ‘123456’;

mysql> grant replication slave on *.* to ‘slave2’@’%’;

 Chỉnh sửa file cấu hình mysql (my.conf) trên Data2

server-id = 2

Log_bin = /var/log/mysql/mysql-bin.log

Binlog_do_db = dailocphat_mysql

Trong đó server-id : là số định danh của máy.

Log_bin: đường dẫn đến file log.

Binlog_do_db : database sẽ dùng để sao chép.

 Chỉnh sửa file cấu hình mysql (my.conf) trên Data1

server-id =1

master-host = 192.168.46.31

master-user = slave2

master-password = 123456

master-port = 3306

master-connect-retry = 60

replicate-do-db = dailocphat_mysql

report-host = data1

 Kiểm tra trên data2

Mysql> show master status;

SVTH: Bùi Nam Hải & Trương Minh Khôi 42


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

+----------------------+----------+-----------------------+------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+----------------------+----------+-----------------------+------------------------+

| mysql-bin.000283 | 106 | dailocphat_mysql | |

+----------------------+----------+-----------------------+------------------------+

1 row in set (0.00 sec)

Lưu lại thông số của File và Position (trong trường hợp này là mysql-bin.000283 và
106)

 Kiểm tra trên Data1

Mysql> slave stop;

Mysql> change master to

>master_log_file=’ mysql-bin.000283’,

>master_log_pos=’106’;

mysql> slave start;

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State : Waiting for master to send event

Master_Host : 192.168.46.32

Master_User : slave2

Master_Port : 3306

Connect_Retry : 60

Master_Log_File : mysql-bin.000283

Read_Master_Log_Pos : 106

Relay_Log_File : data1-relay-bin.000382

SVTH: Bùi Nam Hải & Trương Minh Khôi 43


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Relay_Log_Pos : 251

Relay_Master_Log_File : mysql-bin.000283

Slave_IO_Running : Yes

Slave_SQL_Running : Yes

Replicate_Do_DB : dailocphat_mysql

Replicate_Ignore_DB :

Replicate_Do_Table :

Replicate_Ignore_Table :

Replicate_Wild_Do_Table :

Replicate_Wild_Ignore_Table :

Last_Errno :0

Last_Error :

Skip_Counter :0

Exec_Master_Log_Pos : 106

Relay_Log_Space : 548

Until_Condition : None

Until_Log_File :

Until_Log_Pos :0

Master_SSL_Allowed : No

Master_SSL_CA_File :

Master_SSL_CA_Path :

Master_SSL_Cert :

Master_SSL_Cipher :

Master_SSL_Key :

SVTH: Bùi Nam Hải & Trương Minh Khôi 44


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Seconds_Behind_Master :0

Master_SSL_Verify_Máy chủ_Cert: No

Last_IO_Errno :0

Last_IO_Error :

Last_SQL_Errno :0

Last_SQL_Error :

1 row in set (0.00 sec)

Hiện ra như vậy là thành công.

3.2.6 Xây dựng Firewall bảo vệ hệ thống

 Firewall External

Tạo file fwngoai như sau:

#!/bin/sh

ETHIN=eth2

ETHOUT=eth1

external_ip=192.168.157.157

webserver_ip=192.168.192.168

LOG_LEVEL="debug"

LOG_LIMIT=3/m

LOG_LIMIT_BURST=1

PING_LIMIT=1/s

PING_LIMIT_BURST=100

SVTH: Bùi Nam Hải & Trương Minh Khôi 45


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

SYN_LIMIT=200/s

SYN_LIMIT_BURST=2000

UDP_LIMIT=200/s

UDP_LIMIT_BURST=2000

echo "Khoi dong cac module\n"

modprobe iptable_nat

echo "Cho phep forward ip\n"

echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Thiet lap policy\n"

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD ACCEPT

echo "Nat masquerade\n"

iptables -t nat -A POSTROUTING -o $ETHOUT -j MASQUERADE

echo "Publish web server\n"

iptables -t nat -A PREROUTING -p tcp -i $ETHOUT -d $external_ip --dport 80 --


sport 1024:65535 -j DNAT --to $webserver_ip:80

SVTH: Bùi Nam Hải & Trương Minh Khôi 46


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

echo "Huy cac goi co dia chi bat thuong\n"

iptables -A FORWARD -i $ETHOUT -s 10.0.0.0/8 -j DROP

iptables -A FORWARD -i $ETHOUT -s 169.254.0.0/16 -j DROP

iptables -A FORWARD -i $ETHOUT -s 172.16.0.0/12 -j DROP

iptables -A FORWARD -i $ETHOUT -s 127.0.0.0/8 -j DROP

iptables -A FORWARD -i $ETHOUT -s 224.0.0.0/4 -j DROP

iptables -A FORWARD -i $ETHIN -d 224.0.0.0/4 -j DROP

iptables -A FORWARD -i $ETHOUT -s 240.0.0.0/5 -j DROP

iptables -A FORWARD -i $ETHIN -d 240.0.0.0/5 -j DROP

iptables -A FORWARD -i $ETHOUT -s 0.0.0.0/8 -j DROP

iptables -A FORWARD -i $ETHIN -d 0.0.0.0/8 -j DROP

iptables -A FORWARD -i $ETHIN -d 239.255.255.0/24 -j DROP

iptables -A FORWARD -i $ETHIN -d 255.255.255.255 -j DROP

echo "Chong bogus packet\n"

iptables -A FORWARD -m state --state INVALID -j DROP

iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP

echo "Thiet lap tham so cho nhan \n"

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout

echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time

echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

SVTH: Bùi Nam Hải & Trương Minh Khôi 47


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

echo 0 > /proc/sys/net/ipv4/tcp_sack

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

echo "Chong Ping flood\n"

iptables -N CHECK_PINGFLOOD

iptables -A CHECK_PINGFLOOD -m limit --limit $PING_LIMIT --limit-burst


$PING_LIMIT_BURST -j RETURN

iptables -A CHECK_PINGFLOOD -m limit --limit $LOG_LIMIT --limit-burst


$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=PINGFLOOD:warning a=DROP "

iptables -A CHECK_PINGFLOOD -j DROP

iptables -A INPUT -i $ETHOUT -p icmp --icmp-type echo-request -j


CHECK_PINGFLOOD

iptables -A INPUT -i $ETHOUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A OUTPUT -p icmp -j ACCEPT

echo "Chong portscan\n"

iptables -N REJECT_PORTSCAN

iptables -A REJECT_PORTSCAN -p tcp -m limit --limit $LOG_LIMIT --limit-burst


$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=PORTSCAN:tcp a=REJECT "

iptables -A REJECT_PORTSCAN -p udp -m limit --limit $LOG_LIMIT --limit-burst


$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=PORTSCAN:udp a=REJECT "

iptables -A REJECT_PORTSCAN -p tcp -j REJECT --reject-with tcp-reset

SVTH: Bùi Nam Hải & Trương Minh Khôi 48


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

iptables -A REJECT_PORTSCAN -p udp -j REJECT --reject-with icmp-port-unreach-


able

echo "Chong Nmap\n"

iptables -N DETECT_NMAP

iptables -A DETECT_NMAP -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit


$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL
--log-prefix "fp=NMAP:XMAS a=DROP "

iptables -A DETECT_NMAP -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m


limit --limit $LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level
$LOG_LEVEL --log-prefix "fp=NMAP:XMAS-PSH a=DROP "

iptables -A DETECT_NMAP -p tcp --tcp-flags ALL ALL -m limit --limit


$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL
--log-prefix "fp=NMAP:XMAS-ALL a=DROP "

iptables -A DETECT_NMAP -p tcp --tcp-flags ALL FIN -m limit --limit


$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL
--log-prefix "fp=NMAP:FIN a=DROP "

iptables -A DETECT_NMAP -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit


$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL
--log-prefix "fp=NMAP:SYN-RST a=DROP "

iptables -A DETECT_NMAP -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit


$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL
--log-prefix "fp=NMAP:SYN-FIN a=DROP "

iptables -A DETECT_NMAP -p tcp --tcp-flags ALL NONE -m limit --limit


$LOG_LIMIT --limit-burst $LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL
--log-prefix "fp=NMAP:NULL a=DROP "

iptables -A DETECT_NMAP -j DROP

SVTH: Bùi Nam Hải & Trương Minh Khôi 49


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

iptables -A FORWARD -i $ETHOUT -p tcp ! --syn -m state --state NEW -j


DETECT_NMAP

echo "Chong syn flood\n"

iptables -N CHECK_SYNFLOOD

iptables -A CHECK_SYNFLOOD -m limit --limit $SYN_LIMIT --limit-burst


$SYN_LIMIT_BURST -j RETURN

iptables -A CHECK_SYNFLOOD -m limit --limit $LOG_LIMIT --limit-burst


$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix "fp=SYN-
FLOOD:warning a=DROP "

iptables -A CHECK_SYNFLOOD -j DROP

iptables -A FORWARD -i $ETHOUT -p tcp --syn -j CHECK_SYNFLOOD

echo "xu ly goi tcp\n"

iptables -N TCP_INCOMING

iptables -A TCP_INCOMING -p tcp --dport 80 -j ACCEPT

iptables -A TCP_INCOMING -p tcp --dport 110 -j ACCEPT

iptables -A TCP_INCOMING -p tcp --dport 25 -j ACCEPT

iptables -A TCP_INCOMING -p tcp --dport 21 -j ACCEPT

iptables -A TCP_INCOMING -p tcp --sport 80 -j ACCEPT

iptables -A TCP_INCOMING -p tcp --sport 110 -j ACCEPT

iptables -A TCP_INCOMING -p tcp --sport 25 -j ACCEPT

iptables -A TCP_INCOMING -p tcp --sport 21 -j ACCEPT

iptables -A TCP_INCOMING -p tcp -j REJECT_PORTSCAN

iptables -A FORWARD -i $ETHOUT -p tcp -j TCP_INCOMING

SVTH: Bùi Nam Hải & Trương Minh Khôi 50


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

echo "Chong UDP flood\n"

iptables -N CHECK_UDPFLOOD

iptables -A CHECK_UDPFLOOD -m limit --limit $UDP_LIMIT --limit-burst


$UDP_LIMIT_BURST -j RETURN

iptables -A CHECK_UDPFLOOD -m limit --limit $LOG_LIMIT --limit-burst


$LOG_LIMIT_BURST -j LOG --log-level $LOG_LEVEL --log-prefix
"fp=UDPFLOOD:warning a=DROP "

iptables -A CHECK_UDPFLOOD -j DROP

iptables -A FORWARD -i $ETHOUT -p udp -j CHECK_UDPFLOOD

echo "Xu ly goi udp\n"

iptables -N UDP_INCOMING

iptables -A UDP_INCOMING -p udp --sport 53 -j ACCEPT

iptables -A UDP_INCOMING -p udp -j REJECT_PORTSCAN

iptables -A FORWARD -i $ETHOUT -p udp -j UDP_INCOMING

Sau đó ta cho file này chạy vào mỗi lần khởi động máy.

 Firewall Internal

Tạo file fwtrong như sau:

#!/bin/sh

ETHIN=eth2

ETHOUT=eth1

external_ip=192.168.192.46

mysqlserver_ip=192.168.46.168

SVTH: Bùi Nam Hải & Trương Minh Khôi 51


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

echo "Khoi dong cac module\n"

modprobe iptable_nat

echo "Cho phep forward ip\n"

echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Thiet lap policy\n"

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

echo "nat mysql"

iptables -t nat -A PREROUTING -p tcp -i $ETHOUT -d $external_ip --dport 3306 -j


DNAT --to $mysqlserver_ip:3306

echo "Nat masquerade\n"

iptables -t nat -A POSTROUTING -o $ETHOUT -j MASQUERADE

echo "publish mysql server"

iptables -A FORWARD -i $ETHOUT -o $ETHIN -p tcp --dport 3306 -j ACCEPT -m


state --state NEW,ESTABLISHED,RELATED

iptables -A FORWARD -i $ETHIN -o $ETHOUT -p tcp --sport 3306 -j ACCEPT -m


state --state ESTABLISHED,RELATED

SVTH: Bùi Nam Hải & Trương Minh Khôi 52


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

CHƯƠNG 4: NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC, KẾT QUẢ, HẠN


CHẾ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
4.1 Những vấn đề đạt được

Xây dựng một hệ thống máy chủ Web phục vụ nhiều người dùng có khả năng tự động
chia tải và tính sẵn sàng cao mà vẫn đảm bảo sự đồng nhất dữ liệu giữa các máy chủ.

Các công việc đã thực hiện:

 Xây dựng máy chủ chia tải giữa các máy chủ Web.

 Xây dựng máy chủ dự phòng cho việc chia tải giữa các máy chủ Web.

 Xây dựng máy chủ chia tải giữa các máy chủ MySQL.

 Xây dựng đồng bộ dữ liệu giữa các máy chủ Web.

 Xây dựng đồng bộ dữ liệu giữa các máy chủ MySQL.

 Xây dựng Firewall để bảo vệ hệ thống.

SVTH: Bùi Nam Hải & Trương Minh Khôi 53


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

4.2 Kết quả quá trình triển khai mô hình thực tiễn

Chia tải cho dịch vụ Web

Ta cho máy trạm tiến hành truy cập vào Website và xem hiện trạng tại máy chủ Load
balance đang hoạt động, cụ thể ở đây là load1.

Nhìn vào hình trên ta thấy các gói tin yêu cầu dịch vụ từ máy trạm 115.75.33.160 được
phân chia xử lý lần lượt cho hai máy chủ là 192.168.192.21 và 192.168.192.22.

SVTH: Bùi Nam Hải & Trương Minh Khôi 54


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Failover:

Tại load1 ta kiểm tra hiện trạng của load1 và load2 bằng lệnh crm_mon

Nhìn vào hình ta thấy hiện tại việc phân chia tải cho các máy chủ Web đang được
load1 đảm nhận, load2 đang ở trang thái chờ.

Bây giờ ta tiến hình tắt load1, và xem hiện trạng

Sau khi tắt load1 việc phân chia tải được chuyển sang cho load2, do load1 đã tắt nên ta
thấy load1 đang ở trạng thái OFFLINE.

Sau đó ta mở lại load 1, và xem hiện trạng

SVTH: Bùi Nam Hải & Trương Minh Khôi 55


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

load1 sau khi được bật lên sẽ ở trong trạng thái chờ, công việc phân chia tải vẫn do
load2 phụ trách.

SVTH: Bùi Nam Hải & Trương Minh Khôi 56


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Chia tải cho MySQL

Tại máy loadlan ta xem hiện trạng

Nhìn vào hình trên ta thấy các yêu cầu truy cập cơ sở dữ liệu từ hai máy chủ Web
192.168.192.22 và 192.168.192.21 được phân chia đều cho hai máy chủ MySQL
192.168.46.31 và 192.168.46.32.

SVTH: Bùi Nam Hải & Trương Minh Khôi 57


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Đồng bộ dữ liệu giữa máy chủ Web

Để kiểm tra việc đồng bộ có xảy ra hay không ta tiến hành xem file crontab.log

Nhìn vào hình trên ta thấy máy chủ Web1 sẽ tiến hành đồng bộ dữ liệu với máy chủ
Web2 vào các phút thứ 0, 10, 20, 30, 40, 50 trong mỗi giờ. Trong file crontab.log hiện
ghi lại việc đồng bộ vừa được tiến hành xong vào lúc 00:50:02.

Tương tự tại Web2

SVTH: Bùi Nam Hải & Trương Minh Khôi 58


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Đồng bộ dữ liệu giữa máy chủ MySQL

Trên máy chủ data1 ta dùng các lệnh show master status và show slave hosts để kiểm
tra các server có kết nối với nhau hay không, nếu có là thành công.

Nhìn hình ta thấy data1 có 1 slave đang kết nối vào là data2

Tương tự tại data2

Data2 có 1 slave đang kết nối vào là data1

SVTH: Bùi Nam Hải & Trương Minh Khôi 59


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Firewall External

Ta dùng lệnh iptables –L để tiến hành kiểm tra các rule hiện có của iptables

SVTH: Bùi Nam Hải & Trương Minh Khôi 60


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

SVTH: Bùi Nam Hải & Trương Minh Khôi 61


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

Firewall Internal

Tương tự firewall ngoài

SVTH: Bùi Nam Hải & Trương Minh Khôi 62


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

4.3 Hạn chế:

Quá trình thực hiện đề tài đều thực hiện trên máy ảo nên máy chạy chậm, không ổn
định.

4.4 Hướng phát triển:

Đề tài có thể phát triển bằng việc gắn thêm firewall dự phòng cho hai firewall ngoài và
trong, máy chủ dự phòng cho máy chủ chia tải MySQL.

Đề tài chỉ mới xây dựng hệ thống cho dịch vụ Web, nên phát triển thêm trên các dịch
vụ khác như Mail…

Với những hệ thống lớn lưu lượng truy cập database nhiều ta có thể thay thế hệ thống
máy chủ chia tải và máy chủ MySQL bằng hệ thống MySQL Cluster.

SVTH: Bùi Nam Hải & Trương Minh Khôi 63


GVHD: Thầy Lê Mạnh Hải High Availability Cluster

TÀI LIỆU THAM KHẢO

 www.linuxvirtualserver.org.

 www.linux-ha.org.

 www.ultramonkey.org.

 http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

 http://www.thegeekstuff.com/2010/09/rsync-command-examples/

 http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-
password-using-ssh-keygen-ssh-copy-id/

 http://dev.mysql.com/doc/refman/5.1/en/server-administration.html

 http://dev.mysql.com/doc/refman/5.1/en/ha-overview.html

 http://dev.mysql.com/doc/refman/5.1/en/replication.html

SVTH: Bùi Nam Hải & Trương Minh Khôi 64

You might also like