Nội dung đề tài: mục tiêu của đề tài xây dựng một mạng cảm biến không dây thu thập dự liệu môi trường để hiển thị lên web. Để hiện thực hệ thống, đề tài tập trung nghiên cứu xây dựng một hệ thống gồm: một webserver có nhiệm vụ tiếp nhận thông tin được gửi từ các node cảm biến, các node thu thập dữ liệu môi trường (phần cứng mã nguồn mở và công nghệ truyền không dây) và thông tin được hiển thị lên web tất cả tạo thành một hệ thống hoàn chỉnh có thể áp dụng vào thực tế.
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
BÙI NGUYỄN MẠNH TUẤN
LÊ NGUYỄN QUANG VŨ
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG INTERNET OF THINGS
DỰA TRÊN NỀN TẢNG WEB
KỸ SƯ NGÀNH TRUYỀN THÔNG VÀ MẠNG MÁY TÍNH
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
BÙI NGUYỄN MẠNH TUẤN– 11520451
LÊ NGUYỄN QUANG VŨ – 11520695
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG INTERNET OF THINGS
DỰA TRÊN NỀN TẢNG WEB
KỸ SƯ NGÀNH TRUYỀN THÔNG VÀ MẠNG MÁY TÍNH
GIẢNG VIÊN HƯỚNG DẪN
TS LÊ TRUNG QUÂN
Trang 3TP HỒ CHÍ MINH, 2015
DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ………ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
1 ……… – Chủ tịch.
2 ……… – Thư ký
3 ……… – Ủy viên
4 ……… – Ủy viên
Trang 4ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
Tên khóa luận:
XÂY DỰNG ỨNG DỤNG INTERNET OF THINGS DỰA TRÊN NỀN TẢNG WEB
Nhóm SV thực hiện: Cán bộ hướng dẫn:
QUÂN
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Số trang _ Số chương _
Số bảng số liệu _ Số hình vẽ _
Số tài liệu tham khảo _ Sản phẩm _
Một số nhận xét về hình thức cuốn báo cáo:
Trang 5Đánh giá chung: Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp
kỹ sư/ cử nhân, xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Bùi Nguyễn Mạnh Tuấn:……… /10
Lê Nguyễn Quang Vũ:……… /10
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 6ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
XÂY DỰNG ỨNG DỤNG INTERNET OF THINGS DỰA TRÊN NỀN TẢNG WEB
Nhóm SV thực hiện: Cán bộ phản biện:
Đánh giá Khóa luận
5 Về cuốn báo cáo:
Số trang _ Số chương _
Số bảng số liệu _ Số hình vẽ _
Số tài liệu tham khảo _ Sản phẩm _
Một số nhận xét về hình thức cuốn báo cáo:
Trang 7Đánh giá chung: Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp
kỹ sư/ cử nhân, xếp loại Giỏi/ Khá/ Trung bình
Điểm từng sinh viên:
Bùi Nguyễn Mạnh Tuấn:……… /10
Lê Nguyễn Quang Vũ:……… /10
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 8LỜI CẢM ƠN
Lời đầu tiên, nhóm tác giả xin được gửi lời cảm ơn chân thành và sâu sắc đến cácthầy cô trong khoa Mạng Máy tính và Truyền thông nói riêng cũng như các thầy côtrong trường Đại học Công nghệ Thông tin nói chung đã truyền đạt những kiến thực bổích, những kinh nghiệm quý báu của mình trong suốt quá trình nhóm học tập và nghiêncứu tại trường
Tiếp theo, nhóm tác giả xin đặc biệt cảm ơn thầy TS Lê Trung Quân – người thầy
đã truyền cảm hứng, niềm đam mê nghiên cứu, sáng tạo cho nhóm Thầy là người đãtận tình hướng dẫn, hỗ trợ và tạo mọi điều kiện tốt nhất cho nhóm tác giả hoàn thànhkhóa luận này Nhóm cũng xin chân thành cảm ơn đến thầy Nguyễn Đình Khương vàthầy Nguyễn Hạo Nhiên (Phòng dữ liệu và công nghệ thông tin) đã nhiệt tình giúp đỡ
và hỗ trợ kịp thời cho nhóm trong suốt thời gian làm khóa luận
Bên cạnh đó, nhóm tác giả cũng xin gửi lời cảm ơn tới các anh chị và bạn bè trongkhoa Mạng Máy tính và Truyền thông nói chung cũng như các bạn trong lớp học tậpnói riêng đã giúp đỡ, trao đổi kiến thức trong suốt thời gian nhóm học tập và nghiêncứu tại trường
Cuối cùng, nhóm tác giả xin được gửi lời cảm ơn tới gia đình vì đã luôn bên cạnh,động viên nhóm Gia đình chính là nguồn động lực to lớn, là chỗ dựa tinh thần vữngchắc không chỉ trong quá trình học tập, nghiên cứu mà còn trong mọi hoạt động cuộcsống thường ngày của nhóm tác giả
TP Hồ Chí Minh, tháng 01 năm 2016
Nhóm tác giả
Trang 9Cán bộ hướng dẫn: TS Lê Trung Quân
Thời gian thực hiện: Từ ngày 30/9/2013 đến ngày 17/1/2014
Sinh viên thực hiện:
Bùi Nguyễn Mạnh Tuấn – 11520451
Lê Nguyễn Quang Vũ – 11520695
Nội dung đề tài: mục tiêu của đề tài xây dựng một mạng cảm biến không dây thu
thập dự liệu môi trường để hiển thị lên web Để hiện thực hệ thống, đề tài tập trungnghiên cứu xây dựng một hệ thống gồm: một webserver có nhiệm vụ tiếp nhậnthông tin được gửi từ các node cảm biến, các node thu thập dữ liệu môi trường(phần cứng mã nguồn mở và công nghệ truyền không dây) và thông tin được hiểnthị lên web tất cả tạo thành một hệ thống hoàn chỉnh có thể áp dụng vào thực tế
Kế hoạch thực hiện:
Từ 15/9/2015 đến 30/9/2015 lên ý tưởng, thiết kế hệ thống.
Từ 1/10/2015 đến 31/10/2015 nghiên cứu, tìm hiểu các giải pháp kỹ thuật.
Từ 1/11/2015 đến 15/12/2015 hiện thực hệ thống.
Trang 10Phân công công việc:
Công việc chung: lên ý tưởng, thiết kế hệ thống, kiểm tra, đánh giá kết quả và viết báo cáo
Bùi Nguyễn Mạnh Tuấn:
Tìm hiểu và hiện thức Webserver sử dụng Apache
Tìm hiểu và hiện thực kỹ thuật cân bằng tải
Phát triển trang chủ của Web
Lê Nguyễn Quang Vũ:
Tìm hiểu về mạng cảm biến không dây, phần cứng mã nguồn mở Arduino vàgiao tiếp không dây giữa các node từ đó xây dựng mô hình mạng cảm biến
Hổ trợ phát triển trang Web
Trang 11MỤC LỤ
DANH SÁCH HÌNH VẼ
DANH SÁCH BẢNG
DANH SÁCH TỪ VIẾT TẮT
Chương 1 GIỚI THIỆU 4
1.1 Tổng quan 4
1.2 Phát biểu vấn đề, mục tiêu của Luận Văn 6
1.3 Phạm vi của đề tài, các giới hạn của đề tài 7
1.3.1 Phạm vi đề tài 7
1.3.2 Giới hạn của đề tài 7
1.4 Cấu trúc của Luận Văn 7
Chương 2 TỔNG QUAN VỀ TÌNH HÌNH NGHIÊN CỨU, CÁC CÔNG VIỆC LIÊN QUAN 9
2.1 Web Server 9
2.1.1 INTERNET INFORMATION SERVER (IIS) 10
2.1.2 APACHE WEB SERVER 11
2.2 Cân bằng tải cho hệ thống web server 12
2.2.1 Giới thiệu tổng quan 12
2.2.2 Kỹ thuật cân bằng tải web server 16
2.3 Wireless Sensor Network 36
2.3.1 Giới thiệu về mạng cảm biến không dây 36
2.3.2 Kiến trúc truyền thông trong mạng cảm biến 36
2.3.3 Cấu trúc cơ bản của mạng cảm biến không dây 41
2.3.4 Các ứng dụng 50
2.4 Tìm hiểu hệ thống cảm biến Wireless Sensor Network sử dụng mạch Arduino 53 2.4.1 Tìm hiểu về Arduino 53
Trang 122.5 Tìm hiểu về mạng Zigbee 61
2.5.1 Các đặt tính của mạng Zigbee 62
2.5.2 Kiến trúc mạng cơ bản của ZigBee 66
2.5.3 Application Layer 69
2.5.4 Network Layer 74
2.5.5 MAC và PHY Layer 86
Chương 3 PHƯƠNG PHÁP LUẬN 87
3.1 Xây dựng mạng cảm biến không dây 87
3.1.1 Hướng phát triển của mạng cảm biến không dây 87
3.1.2 Cấu trúc mạng của đề tài 87
3.2 Xây dựng Webserver 89
3.2.1 Dự kiến topology mạng của server 89
3.2.2 Xây dựng hệ thống cân bằng tải 90
3.2.3 Cài đặt bộ cân bằng tải vào hệ thống 91
3.2.4 Dự kiến database của Webserver 96
3.2.5 Dự kiến xây dựng website cho đề tài 97
3.3 Hướng tiếp cận phần cứng nguồn mở 106
3.4 Truyền không dây giữa các node 108
3.4.1 Truyền không dây RF 433MHz 108
3.4.2 Thư viện VirtualWire 109
3.4.3 Công nghệ Zigbee 110
Chương 4 HIỆN THỰC, ĐÁNH GIÁ 112
4.1 Xây dựng hệ thống High-availability và Loadbalancing cho Web Server trên CentOS 6 sử dụng HAProxy và Keepalived 112
4.1.1 Cấu hình Load Balancing và Reverse Proxy sử dụng HAproxy và keepalived cho Web server 112
4.1.2 Kiểm tra 121
4.1.3 Đồng bộ dữ liệu trên 2 Database Server sử dụng MySQL Server 123
4.1.4 Đồng bộ dữ liệu hai chiều trên 2 Webserver bằng unison 127
Trang 134.2 Xây dựng hệ thống cảm biến Wireless Sensor Network sử dụng mạch Arduino
Uno R3 và Mạch thu phát DRF1605H 134
4.2.1 Mạch đọc nhiệt độ - độ ẩm với cảm biến DHT11 134
4.2.2 Mạch đọc cường độ ánh sáng với cảm biến BH1750 136
4.2.3 Mạch truyền dữ liệu với RF 433MHz 138
4.2.4 Hiện thực truyền nhận dữ liệu cảm biến giữa 2 Arduino 141
4.3 Hiện thực hóa Website chính thức 142
Chương 5 KẾT LUẬN 155
5.1 Kết quả đạt được 155
5.2 Hạn chế 155
5.3 Hướng phát triển 155
DANH SÁCH THAM KHẢO 157
Trang 14DANH SÁCH HÌNH VẼ
Hình 1-1 Internet of things – xu hướng mới của thế giới công nghệ hiện đại 22
Hình 2-1 Thị phần trang web đang hoạt động sử dụng web server qua các năm [1] 29
Hình 2-2 Cách làm việc của cookie user=1 38
Hình 2-3 Mô hình Global Server Load Balacing 40
Hình 2-4 Cân bằng tải sử dụng phần cứng 45
Hình 2-5 Mô hình triển khai các node cảm biến không dây 55
Hình 2-6 Ngăn xếp giao thức mạng cảm biến không dây[5] 55
Hình 2-7 Cấu trúc phẳng của mạng cảm biến không dây 59
Hình 2-8 Bus Topology[3] 60
Hình 2-9 Ring Topology[3] 61
Hình 2-10 Cấu trúc phân cấp của mạng cảm biến không dây 62
Hình 2-11 Tree Topology[3] 64
Hình 2-12 Star Topology[3] 65
Hình 2-13 Mesh Topology[3] 66
Hình 2-14 Circular Topology[3] 67
Hình 2-15 Grid Topology[3] 68
Hình 2-16 Hình ảnh của một board mạch Arduino Uno R3 75
Hình 2-17 Cảm biến độ ẩm, nhiệt độ DHT11 77
Hình 2-18 Cảm biến cường độ ánh sáng BH1750 78
Hình 2-19 Mô hình truyền dẫn mạng ZigBee 81
Hình 2-20 Ứng dụng của mạng Zigbee 84
Hình 2-21 Kiến trúc mạng cơ bản của Zigbee [6] 85
Hình 2-22 Sơ đồ stack của Application Layer [6] 87
Hình 2-23 Mã hóa dùng khóa đối xứng trong mạng Zigbee [6] 90
Hình 2-24 Quá trính thiết lập mạng Zigbee [6] 97
Hình 2-25 Quá trình tham gia của mạng Zigbee [6] 99
Hình 3-1 Cấu trúc mạng cảm biến 106
Hình 3-2 Mô hình xây dựng hệ thống server cân bằng tải 107
Hình 3-3 Mối quan hệ giữa các bảng trong database 115
Hình 3-4 Sơ đồ phân cấp chức năng phía Admin site 119
Hình 3-5 Sơ đồ phân cấp chức năng phía User site 119
Hình 3-6 Sơ đồ luồng dữ liệu mức ngữ cảnh 120
Hình 3-7 Sơ đồ luồng dữ liệu mức 1 – Quản lý thành viên 120
Hình 3-8 Sơ đồ luồng dữ liệu mức 1 – Quản lý node 121
Hình 3-9 Sơ đồ luồng dữ liệu mức 1 – Quản lý thông báo 121
Hình 3-10 Sơ đồ luồng dữ liệu mức 1 – Quản lý báo cáo 122
Trang 15Hình 3-11 Xây dựng mô hình thực thể user 122
Hình 3-12 Xây dựng mô hình thực thể project 123
Hình 3-13 Xây dựng mô hình thực thể project 123
Hình 3-14 Xây dựng mô hình thực thể sensor 124
Hình 3-15 Mô hình thực thể liên kết 124
Hình 3-16 Mạch thu phát RF 433MHz 126
Hình 4-1 Mô hình hệ thống server xây dựng trên openstack cloud 130
Hình 4-2 SSH vào web server 1 131
Hình 4-3 Kết quả khi truy cập WebServer thông qua IP Floating 132
Hình 4-4 SSH vào web server 2 132
Hình 4-5 Kết quả chạy lệnh ip addr sh eth0 138
Hình 4-6 Webserver1 tạm thời được pause 140
Hình 4-7 Kiểm tra trên HAProxy 140
Hình 4-8 Sử dụng WinSCP kết nối đến database server1 142
Hình 4-9 Sử dụng WinSCP kết nối đến database server2 143
Hình 4-10 Kết quả đồng bộ dữ liệu trên database server 1 145
Hình 4-11 Kết quả đồng bộ dữ liệu trên database server 2 145
Hình 4-12 Tạo key pair trên webserver 1 146
Hình 4-13 Tạo key pairs trên webserver 1 147
Hình 4-14 Trao đổi key pairs trên webserver 1 147
Hình 4-15 Trao đổi key pairs trên webserver 2 148
Hình 4-16 Kiểm tra public key được chuyển từ Webserver1 148
Hình 4-17 Kiểm tra public key được chuyển từ Webserver2 149
Hình 4-18 Kết nối Arduino với cảm biến DHT11 152
Hình 4-19 Sơ đồ nối chân giữa Arduino và DHT11 152
Hình 4-20 Kết nối Arduino với cảm biến BH1750 154
Hình 4-21 Sơ đồ nối chân giữa Arduino và BH1750 154
Hình 4-22 Kết nối Arduino với mạch phát TX 433 Mhz 156
Hình 4-23 Kết nối Arduino với mạch thu TX 433 Mhz 156
Hình 4-24 Sơ đồ nối chân giữa Arduino và RF 433MHz kit 157
Hình 4-25 Cấu trúc node cảm nhận và node thu thập dữ liệu 159
Hình 4-26 Kết quả dữ liệu nhận được 159
Hình 4-27 Giao diện đăng nhập của trang Web 160
Hình 4-28 Giao diện trang quản lý (admin site) 161
Hình 4-29 Menu của tab trang quản lý 161
Hình 4-30 Giao diện thêm dự án 162
Hình 4-31 Giao diện Quản lý mô hình dự án 163
Trang 16Hình 4-32 Menu tab thống kê 163
Hình 4-33 Giao diện trang thống kê các node 164
Hình 4-34 Giao diện thống kê người dùng 165
Hình 4-35 Menu tab báo cáo 165
Hình 4-36 Kết quả báo cáo được xuất 166
Hình 4-37 Menu tab quản lý người dùng 166
Hình 4-38 Giao diện đăng ký người dùng 167
Hình 4-39 Giao diện trang quản lý 168
Hình 4-40 Menu tab trang quản lý 168
Hình 4-41 Giao diện thêm node 169
Hình 4-42 Giao diện xóa node 169
Hình 4-43 Menu tab mô hình 170
Hình 4-44 Giao diện tạo mô hình giả lập 170
Hình 4-45 Giao diện sơ đồ lắp đặt các node 171
Hình 4-46 Giao diện bảng thống kê các node 171
Hình 4-47 Chức năng quản lý hồ sơ cá nhân 172
Hình 4-48 Giao diện hiển thị thông tin người dùng 172
DANH SÁCH BẢN
Trang 17Bảng 2-1 Đánh giá thay đổi sau 1 tháng (tháng 9/2015 so với tháng 8/2015) 31
Bảng 2-2 So sánh IIS và Apache [2] 31
Bảng 2-3 So sánh việc sử dụng một server và nhiều server 32
Bảng 2-4 So sánh các phương tìm đường trong ZigBee 104
Bảng 3-1 Bảng so sánh hệ thống cân bằng tải và hệ thống thông thường Với đề tài mà nhóm đã xây dựng thì việc sử dụng hệ thống cân bằng tải là rất hợp lý 110
Bảng 3-2 Cấu trúc bảng users 115
Bảng 3-3 Cấu trúc bảng sensors 115
Bảng 3-4 Cấu trúc bảng nodes 116
Bảng 3-5 Cấu trúc bảng projects 116
Bảng 3-6 Mô tả chức năng chính dành cho giao diện admin 117
Bảng 3-7 Mô tả chức năng chính của giao diện dành cho user 117
Bảng 3-8 So sánh giữa 3 phần cứng mã nguồn mở được sử dụng phổ biến hiện nay được khảo sát bởi Digital Diner 126
Bảng 3-9 So sánh xu hướng ứng dụng giữa các giao thức wireless khác và ZigBee 130
Bảng 4-1 Kết nối chân giữa Arduino và DHT11 154
Bảng 4-2 Kết nối chân giữa Arduino và BH1750 156
Bảng 4-3 Kết nối chân giữa Arduino và RF 433MHz (phát) 158
Bảng 4-4 Kết nối chân giữa Arduino và RF 433MHz (nhận) 158
Trang 18DANH SÁCH TỪ VIẾT TẮT
API Application Programming Interface
NLDE-SAP Network Layer Data Entity Service Access Point
APS Application Support Sublayer
TCP Transmission Control Protocol
SPOF Single point of failure
Trang 19TÓM TẮT KHÓA LUẬN
Mạng cảm biến không dây được quản lý thông qua website là đề tài có thể phục vụ chonhiều lĩnh vực khác nhau trong cuộc sống tùy vào mục đích của người dùng, với việcquản lý thông tin dữ liệu được gửi về từ cảm biến bằng website sẽ làm việc điều khiển,quản lí, giám sát môi trường trở nên đơn giản và thông minh hơn, người dùng thể nắmbắt được thông tin môi trường dù ở bất cứ đâu qua Internet Đề tài tập trung xây dựngmột webserver sử dụng cơ chế cân bằng tải để tăng tính sẵn sàng cho hệ thống do dữliệu cảm biến được gửi về liên tục và cũng để phục vụ người dùng kịp thời, nghiên cứu
và cố gắng hiện thực một mạng cảm biến không dây với board Arduino, các thiết bịcảm biến và các thiết bị truyền không dây Bên cạnh đó, đề tài còn tiếp cận và lập trìnhWeb để hiển thị thông tin dữ liệu cảm biến thu thập giúp người dùng dễ dàng quản lýđược môi trường sống cũng như làm việc của mình Đề tài cố gắng hoàn thiện một hệthống hoàn chỉnh có thể ứng dụng thực tế trong quá trình hiện thực
Trang 20LỜI MỞ ĐẦU
Khái niệm Internet of Things được thực sự đưa ra vào năm 1999, khi mà người ta bắtđầu nhìn nhận được tiềm năng của xu hướng này, lúc mà các rào cản giới hạn Internet,khoa học công nghệ dần được khai phá
Mặc dù khái niệm Internet of Things được đưa ra từ lâu Nhưng trong những năm gầnđây nó mới được nhiều doanh nghiệp cũng như các nhà khoa học để ý và phát triểnmạnh mẽ Trong các năm gần đây tại các triển lãm công nghệ CES, triển lãm di độngtoàn cầu các hãng sản xuất lớn thay nhau đưa ra các thiết bị thông minh: tivi thôngminh, tủ lạnh thông minh và ý tưởng về nhà thông minh liên tục được giới thiệu Cácứng dụng giám sát này thông qua một thiết bị gateway để giao tiếp với các node cảmứng trong mạng bằng các giao thức như JSP, bluetooth, wifi, nhưng với kiến trúcnày thì phải có mặt người quản trị ở đó để cấu hình và quản lý
Vì lý do trên việc xây dựng một Webserver sẽ giúp cho người cho công việc quản lýcũng như cấu hình trở nên dễ dàng hơn Nhóm sử dụng thiết bị đầu cuối là những cảmbiến không dây (wireless sensor) được lắp đặt ở các vị trí quanh một căn phòng tạothành các điểm nút (node), chúng sẽ gửi và nhận thông tin thông qua máy trạmWebserver đóng vai trò là gateway Dữ liệu được xử lý và thông báo trên giao diệnweb cho người quản trị có thể theo dõi và nắm bắt được các thông số: nhiệt độ, độ ẩm,ánh sáng, … và cấu hình thiết bị từ xa không nhất thiết phải có mặt ở nơi đặt thiết bịcảm biến
Với sự bùng nổ mạnh mẽ của Internet of Things như hiện nay, việc nhóm lựa chọn
đề tài này để thực hiện là nắm bắt và đón đầu công nghệ Thể hiện sự sáng tạo và bắtkịp xu hướng mới nhất hiện nay
Nắm bắt được những vấn đề trên, nhóm đã quyết định thực hiện khóa luận với ýtưởng Xây dựng ứng dụng Internet of things dựa trên nền tảng web với các chức năng
Trang 21chính là ứng dụng các cảm biến không dây để lấy thông số cần thiết trả về Webserver
để xử lý và hiển thị trên giao diện quản lý từ người quản trị
Nội dung của khóa luận sẽ trình bày về cách thực hiện hóa ý tưởng của nhóm thôngqua các phần Giới thiệu đề tài, Kiến thức nền tảng, các Phiên bản (bao gồm Tìm hiểu
và Phân tích yêu cầu; Thiết kế Hệ thống theo yêu cầu; Triển khai xây dựng Hệ thống;Tổng kết và đánh giá những kết quả đạt được cũng như chưa đạt được) và Kết luận vàHướng phát triển trong các phiên bản tiếp theo
Tuy đã có nhiều tìm tòi, nghiên cứu và cố gắng, cộng với sự hướng dẫn tận tình củagiảng viên hướng dẫn nhưng trong quá trình thực hiện đề tài, nhóm tác giả khó tránhkhỏi những thiếu sót và hạn chế Chính vì vậy, nhóm kính mong sự chia sẻ cũng nhưnhững đóng góp quý báu từ thầy cô, bạn bè và gia đình để nhóm tác giả có thể hoànthiện đồ án này hơn nữa
TP Hồ Chí Minh, tháng 01 năm 2016
Nhóm tác giả
Trang 22Chương 1 GIỚI THIỆU
Hình 1-1 Internet of things – xu hướng mới của thế giới công nghệ hiện đạiThực chất, biểu hiện của Internet of Things (IoT) đã xuất hiện ngay từ thời kỳ sơ khaicủa Internet, khi các nhà phát minh mong muốn kết nối tất cả mọi thứ qua một mạnglưới đồng nhất để có thể điều khiển chúng phục vụ cho mục đích của con người
Trong các tư liệu về IoT, người ta thường nhắc đến một chiếc máy bán nước giải khát
tự động tại trường Đại học Carnegie Melon (Mỹ) vào đầu những năm 1980 như là mộtthiết bị đầu tiên mở màn cho xu hướng này, chiếc máy được lập trình để có thể kết nối
Trang 23với người điều khiển qua Internet, nhằm kiểm tra tình trạng của máy và bổ sung nướckhi cần thiết mà không cần sự tiếp xúc kiểm tra trực tiếp [20].
Sau đó, khái niệm Internet of Things chỉ thực sự được đưa ra vào năm 1999, khi màngười ta bắt đầu nhận thấy tiềm năng của xu hướng này, bên cạnh việc mạng Internetcũng như nhiều rào cản về mặt khoa học công nghệ đã dần được khai phá
Có thể tạm hiểu, Internet of Things là khi tất cả mọi thứ đều được kết nối với nhau quamạng Internet, người dùng (chủ) có thể kiểm soát mọi đồ vật của mình qua mạng màchỉ bằng một thiết bị thông minh, chẳng hạn như smartphone, tablet, PC hay thậm chíchỉ bằng một chiếc smartwatch nhỏ bé trên tay
Viễn cảnh tưởng chừng chỉ có trên phim ảnh này đã dần hiển hiện trên thực tế, với sựphát triển của Nhà thông minh, TV thông minh, tủ lạnh thông minh, và cũng khôngthể không kể tới sự mở rộng không gian địa chỉ lên IPv6 thay vì IPv4 như trước đây.Cisco, nhà cung cấp giải pháp và thiết bị mạng hàng đầu hiện nay dự báo: Đến năm
2020, sẽ có khoảng 50 tỷ đồ vật kết nối vào Internet, bao gồm hàng tỷ thiết bị di động,tivi, máy giặt, …
Để thấy được sự phát triển của lĩnh vực này, họ cũng đưa ra số liệu vào năm 1984, khi
mà Cisco mới thành lập mới chỉ có khoảng 1.000 thiết bị được kết nối mạng toàn cầu,đến năm 2010, con số này đã lên mức 10 tỷ [20]
Intel, đơn vị mới tham gia vào thị trường sản xuất chip cho các thiết bị thông minhphục vụ IoTs cũng đã thu về hơn 2 tỷ USD trong năm 2014 từ lĩnh vực này, tăngtrưởng 19% so với năm 2013 [20]
Và không thể không kể tới một thương hiệu Việt Nam là Bkav cũng đã đạt được nhữngthành tựu đáng ghi nhận về Internet of Things Hệ thống nhà thông minh SmartHomecủa Bkav là một tổ hợp các thiết bị thông minh trong 1 ngôi nhà, đều được kết nốiInternet và có thể tự động điều chỉnh cũng như điều khiển qua smartphone
Trang 24Sau hàng chục năm nghiên cứu và sản xuất, Bkav SmartHome đã có chỗ đứng nhấtđịnh trên thị trường và hoàn toàn có thể cạnh tranh với những giải pháp nhà thôngminh khác trên thế giới.
Bên cạnh đó, các ông lớn như Google, Apple, Samsung, Microsoft cũng không hề giấudiếm ý định xâm nhập thị trường này, hứa hẹn một cuộc cạnh tranh mạnh mẽ trong thờigian tới đây, đưa kỷ nguyên IoTs đến sớm hơn với mọi người
1.2 Phát biểu vấn đề, mục tiêu của Luận Văn
Để có được một hệ thống hoạt động ổn định và hiệu quả, các vật không những đượckết nối với nhau mà còn phải kết nối với nền tảng web cùng với một hệ thống server đủmạnh
Từ thực tế đó nhóm đã tiến hành và xây dựng một hệ thống IoTs bao gồm các thiết bịcảm biến wireless sensor (đo nhiệt độ, độ ẩm, ánh sáng đầu cuối); thiết bị nhận dữ liệu
từ các wireless sensor và giao tiếp trực tiếp với server; webserver (nhận dữ liệu thuđược và hiển thị lên trang web quản lý) Việc tạo ra từng thành phần trong hệ thốngcũng không quá khó khăn, nhưng việc kết nối và tạo ra một hệ thống hoạt động hiệuquả là không hề dễ dàng, nhất là một hệ thống đáp ứng nhu cầu sử dụng của ngườidùng đầy tính thực tiễn này
Mục tiêu của luận văn là ứng dụng những kiến thức tích lũy trong quá trình học tập từnhà trường, những môn học từ căn bản đến chuyên ngành kết hợp với việc tham khảo ýkiến từ phía những nhà chuyên môn, thầy cô để tạo ra một sản phẩm không nhữngmang tính lý thuyết mà còn giàu tính thực tiễn Hệ thống mà nhóm tạo ra không nhữnggiúp cho cuộc sống tốt đẹp hơn khi không những quản lý được tình hình thời tiết trongngôi nhà của mình mà còn có thể ứng dụng trong sản xuất nông nghiệp với quản lýnhiệt độ, độ ẩm, ánh sáng để nhắc nhở việc tưới tiêu cây trồng, chăm sóc vật nuôi…
Trang 251.3 Phạm vi của đề tài, các giới hạn của đề tài
1.3.1 Phạm vi đề tài
Trong giới hạn của đề tài này, đối tượng nghiên cứu của khóa luận bao gồm:
Các thiết bị cảm biến (đo nhiệt độ, độ ẩm, ánh sáng), board mạch Arduino,mạch thu phát Zigbee, RF thông thường
Ngôn ngữ lập trình PHP, MySQL, CSS, Java Script
Hệ điều hành CentOS
Apache Webserver
Openstack cloud
1.3.2 Giới hạn của đề tài
Nhóm còn bị giới hạn về chi phí để đầu tư thiết bị nghiên cứu cũng như giới hạn vềthời gian khi tiếp cận và nghiên cứu công nghệ mới Đề tài chỉ mới bước đầu phát triểnnên còn chưa có thời gian để ứng dụng trên thực tế nhiều Những giải pháp kỹ thuậtchưa thật sự tối ưu về mặt giá thành và công nghệ Những ngữ cảnh điều khiển hiện chỉ
là những nghiên cứu ban đầu, chưa thật sự tối ưu và linh hoạt Do đó, để trở thành mộtsản phẩm hoàn thiện còn rất nhiều vấn đề mà đề tài chưa giải quyết được như bảo mật,
độ an toàn của hệ thống, giá thành…
1.4 Cấu trúc của Luận Văn
Chương 1: Giới thiệu
Trong chương này, nhóm sẽ giới thiệu tổng quan về đề tài nghiên cứu, phát biểu các vấn đề và mục tiêu mà đề tài hướng đến, trình bày về phạm vi thực hiện của đề tài, giớihạn của đề tài
Chương 2: Tổng quan về tình hình nghiên cứu, các công việc liên quan
Tổng quan kết quả trong quá trình nghiên cứu các Webserver phổ biến, kỹ công nghệcân bằng tải, các kiến thức về mạng cảm biến không dây, phần cứng mã nguồn mở
Trang 26Chương 3: Phương pháp luận
Trình bày về các hướng mà nhóm sẽ tiếp cận giúp cho việc hiện thức hóa đề tài về cácthành phần sau: lựa chọn webserver, database server, hệ thống cân bằng tải, phần cứng
mã nguồn mở, thiết bị giao tiếp không dây, mô hình mạng cảm biến không dây, thiết kếdatabase và các chức năng mà website sẽ phục vụ
Chương 4: Hiện thực, đánh giá
Trình bày về cách thức, quá trình hiện thực hóa đề tài, trình bày các bước xây dựng, càiđặt, cấu hình server, hệ thống cân bằng tải, xây dựng mạng cảm biến không dây vớiArduino, các cảm biến và RF truyền không dây, xây dựng giao diện cũng như chứcnăng của website
Chương 5: Kết luận
Tổng kết quá trình nghiên cứu học hỏi và làm việc của nhóm, các kết quả thực hiệnđược, những mặt còn hạn chế trong quá trình thực hiện, cũng như hạn chế của hệ thốngmạng cảm biến không dây, đề ra hướng phát triển cho đề tài
Trang 27Chương 2 TỔNG QUAN VỀ TÌNH HÌNH NGHIÊN CỨU, CÁC CÔNG VIỆC LIÊN QUAN
2.1 Web Server
Web Server (máy phục vụ Web): máy tính mà trên đó cài đặt phần mềm phục vụ Web,đôi khi người ta cũng gọi chính phần mềm đó là Web Server Tất cả các Web Serverđều hiểu và chạy được các file *.htm và *.html, tuy nhiên mỗi Web Server lại phục vụmột số kiểu file chuyên biệt chẳng hạn như IIS của Microsoft dành cho *.asp, *.aspx ;Apache dành cho *.php ; Sun Java System Web Server của SUN dành cho *p
Khái niệm về Web server đơn giản chỉ là một chương trình mà chúng chờ đợi nhữngyêu cầu từ phía client và đáp ứng những yêu cầu đó khi nhận được Web server kết nốivới các trình duyệt hoặc các client sử dụng giao thức HTTP, đó là một giao thức đãđược chuẩn hóa các phương thức của các yêu cầu gửi đi và xử lý các yêu cầu đó Nócho phép rất nhiều các client khác nhau kết nối với các server cung cấp mà không gặpbất kỳ một trở ngại nào trong vấn đề tương thích
Nếu bất ngờ người sử dụng hỏi bằng cách nào để tạo ra một trang Web Thì họ sẽ giápmặt với hàng loạt các vấn đề có liên quan mà họ cần phải tìm hiểu trước khi bắt đầuviết mã một trang HTML đầu tiên Vấn đề quan trọng nhất và là lý do cơ bản nhất làphải lựa chọn phần mềm server nào để sử dụng, với những thông tin cơ bản nhất màcuốn báo cáo này cung cấp, sự lựa chọn có lẽ là không khó
Web Server Software còn có thể được tích hợp với CSDL (Database), hay điều khiểnviệc kết nối vào CSDL để có thể truy cập và kết xuất thông tin từ CSDL lên các trangWeb và truyền tải chúng đến người dùng
Server phải hoạt động liên tục 24/24 giờ, 7 ngày một tuần và 365 ngày một năm, đểphục vụ cho việc cung cấp thông tin trực tuyến Vị trí đặt server đóng vai trò quantrọng trong chất lượng và tốc độ lưu chuyển thông tin từ server và máy tính truy cập.Các vấn đề mà cần phải quan tâm khi lựa chọn một Web server để giao phó công việc
Trang 28- Phần mềm trả tiền hay đươc miễn phí.
- Hỗ trợ đối với các phần mềm thứ ba
Dựa trên các vấn đề nêu trên nhóm xin đưa ra hai web server thông dụng nhất hiện nay:
là Internet Information server (IIS) và Apache Web Server
2.1.1 INTERNET INFORMATION SERVER (IIS)
IIS là một dịch vụ tuỳ chọn của Windows NT server cung cấp các tính năng vềWebsite Giải pháp phổ biến nhất của Microsoft cho một Web site là chạy IIS trên nềnWindows NT server
IIS là một thành phần cơ bản để xây dựng một Internet hoặc Intranet server trền nềnWindows NT 4.0, Workstation và Win 95 IIS được tích hợp đầy đủ trong Windows
NT 4.0 Với một bộ đầy đủ IIS và Windows NT 4.0 người sử dụng sẽ nhận được sựthuận tiện khi xây dựng một cơ chế bảo mật trên Windows NT server và Windows NTFile System (NTFS)
Người sử dụng có thể sử dụng các kỷ thuật Internet thêm vào được cung cấp bởi IIS đểnâng cao các tính năng Microsoft Back Office, bao gồm các thành phần sau:
- Hệ thống quản trị cơ sở dữ liệu Microsoft SOL Server Client/Server
- Hệ thống thông báo Microsoft Exchange Server Client/Server
- Microsoft Proxy Server
Trang 29- Microsoft SNA Server kết nối với mạng IBM enterprise.
- Hệ thống quản lý Server của Microsoft (tập trung quản lý các hệ thống phântán)
-Microsoft Commercial Internet Server (MCIS)
Với IIS người sử dụng có thể triển khai liên tục các ứng dụng mạng lên các server rađời muộn các nội dung Web mơi nhất IIS đầy đủ hỗ trợ các hệ thống ngôn ngữ lậptrình VB, VB Script, J ScriptTM được phát triển bởi Microsoft và Java Component Nócũng hỗ trợ các ứng dụng CGI dành cho các ngôn ngữ lập trình Web cơ sở và ISAPI
mở rộng và các bộ lọc [Error: Reference source not found]
2.1.2 APACHE WEB SERVER
Apache là một phần mềm Web server được cung cấp bởi tập đoàn Apache Group Đây
là một Web server được hỗ trợ để chạy chủ yếu trên UNIX va LINUX và rất được phổbiến bởi tính chặt chẽ, uyển chuyển và linh hoạt
Hình 2-2 Thị phần trang web đang hoạt động sử dụng web server qua các năm [1]
Ta nhận thấy Apache vẫn giữ vị thế độc tôn qua các năm Microsoft đang dần bị nginxchiếm vị trí thứ 2
Trang 30Bảng 2-1 Đánh giá thay đổi sau 1 tháng (tháng 9/2015 so với tháng 8/2015)
Nền tảng hề điều hành Chỉ chạy trên Windows Chạy đa nền tảng: UNIX,
MAC OS, Linux,Windows
Nhà phát triển sản phẩm Do đội ngũ nhân viên của
Microsoft
Do chính cộng đồng khắpthế giới tạo nên
Bảng 2-2 So sánh IIS và Apache [2]
Apache là một trong các Web server đơn giản nhất và phổ thông nhất để phát triển các
dự án website, và từ 1996 Apache trở thành phần mềm webserver phổ biến nhất thếgiới, và cho tới năm 2009 Apache đã chiếm 46 % tổng số website chạy trên nền tảngcủa nó Apache lại có những chức năng mở rộng mà không phải webserver nào cũng cónhư: digest acces authentication, CGI, administrative console, htaccess
Với những so sánh và đánh giá như trên, nhóm đã quyết định sử dụng Apache làm
dịch vụ để cài đặt hệ thống webserver của mình
2.2 Cân bằng tải cho hệ thống web server
2.2.1 Giới thiệu tổng quan
Yêu cầu đặt ra đối với người quản trị website là cần phải giải quyết vấn đề quá tải, làmsao để bất cứ người dùng nào truy cập vào website đều được phục vụ một cách nhanhnhất Để làm được điều đó, người quản trị phải nâng cấp hệ thống server Nghĩa là phải
Trang 31tăng cấu hình máy server hoặc tăng số lượng server, đó chính là một trong hai phương
án mở rộng server: mở rộng theo chiều dọc (scaling up) và mở rộng theo chiều ngang(scaling out) Mở rộng theo chiều dọc nghĩa là năng cấp một server có cấu hình ngàycàng mạnh hơn tùy theo nhu cầu của người dung, phương pháp này khá tốt trongtrường hợp số lượng người dung không nhiều, tuy nhiên giá thành của nó đắt và khảnăng mở rộng kém Mở rộng theo chiều ngang nghĩa là sử dụng một hệ thống nhiềuserver nhỏ với chi phí thấp hơn và mỗi server phục vụ một lượng người dùng nhấtđịnh, phương pháp này có khả năng mở rộng tốt (lắp thêm khi cần) và hoạt động kháhiệu quả Với những trang có số lượng người truy cập nhiều và tỉ lệ truy cập cao, cácnhà quản trị hệ thống thường lựa chọn phương án thứ hai – mở rộng theo chiều ngang
Một server cực mạnh Nhiều server nhỏ
Ưu điểm - Dễ dàng thực hiện
- Hệ thống hoạt động hiệuquả
- Giảm thiểu chi phí
- Phục vụ được lượng userrất lớn nếu giải quyết tốtbài toán cân bằng
Nhược
điểm
- Chi phí rất đắt (đặc biệt khi
số lượng người dùng tăngcao)
- Có giới hạn nhất định
- Downtime problems
- Phát sinh nhiều vấn đề:cân bằng tải, quản lýsession, cần thiết phải cóload balancer
Bảng 2-3 So sánh việc sử dụng một server và nhiều serverNhà quản trị sử dụng kiến trúc web với khả năng mở rộng (scalable web architecture).Cách tiếp cận này cho phép nhà quản trị tăng hiệu năng của hệ thống, cho khả năng mởrộng và khả năng có sẵn cao, đáp ứng được yêu cầu trong suốt đối với người dùng(user-transparent), tuy nhiên có rất nhiều cách thức cần vượt qua để xây dựng được cácchức năng của một hệ thống website trên nền trình duyệt web và HTTP
Trang 32Để xây dựng một website theo kiến trúc này, nhà quản trị website phải thiết kế mộtcách nhịp nhàng các thành phần của hệ thống, các thành phần chính bao gồm xây dựng
hệ thống web-server, xây dựng hệ thống database-server, quản lý session, thiết kế bộcache cho hầu hết các thành phần của hệ thống Một website xây dựng theo kiến trúcnày khi muốn nâng cấp mở rộng sẽ theo chiều hướng scaling out, nghĩa là hệ thống sẽ
có nhiều web-server và nhiều database-server kết nối với nhau, khi cần mở rộng sẽ lắpđặt thêm các server mới
Khi hệ thống có nhiều server thì vấn đề đặt ra là khi một người dùng truy cập vàowebsite, yêu cầu của người dùng đó sẽ được chuyển đến server nào xử lý, lấy dữ liệu ởdatabase-server nào? Làm thế nào để các server trong hệ thống nhận được lượng tảiphù hợp với server đó, đảm bảo không server nào bị quá tải? Làm sao để hệ thống cóthể đáp ứng được số lượng người dùng cao nhất? Đó chính là bài toán cân bằng tải(Load Balancing - LB) cho các server, cũng chính là phần quan trọng nhất trong việcgiữ cho hệ thống hoạt động ổn định, là nhân tố quyết định đến khả năng đáp ứng ngườidùng của hệ thống Thuật ngữ cân bằng tải không những chỉ dùng cho server, mà còndùng trong hầu hết các thành phần còn lại của kiến trúc web với khả năng mở rộng, đó
là cân bằng tải cho database, cân bằng tải cho cache, cân bằng tải cho firewall… Mộtwebsite được cân bằng tải tốt sẽ tận dụng được cao nhất nguồn lực sẵn có Chẳng hạnnhư website với 1 web-server có thể đáp ứng được cho 1000 người dùng cùng lúc, khinâng cấp lên 4 server, nếu cân bằng tải tốt sẽ có khả năng đáp ứng cho 4000 ngườicùng lúc, ngược lại sẽ chỉ có thể đáp ứng được 2000 người, thậm chí là còn ít hơn số
đó Một trang web được xử lý tốt vấn đề cân bằng tải sẽ đáp ứng được người dùng mộtcách tốt nhất và có khả năng mở rộng cao
Để cân bằng tải cho cụm server, cần phải xây dựng các bộ cân bằng tải (LoadBalancer) Các bộ cân bằng tải này được cài đặt ở giữa người dùng và hệ thống server,nhận yêu cầu từ phía người dùng, sau đó chuyển chúng đến webserver phù hợp Bộ cân
Trang 33bằng tải lúc đó đóng vai trò là web-server duy nhất đối với tất cả mọi người dùng, chỉcần truy cập đến địa chỉ chứa bộ cân bằng tải, người dùng sẽ nhận được thông tin mìnhcần, không cần biết phía sau đó hệ thống có bao nhiêu server, cũng không cần nhớ địachỉ của các server này
Một bộ cân bằng tải cần đáp ứng được hai yêu cầu chính Thứ nhất, cũng là quan trọngnhất, đó là khả năng xử lý và chuyển yêu cầu của người dùng đến server phù hợp, đểgiải quyết vấn đề này, cần phải xây dựng một thuật tóan phân tải hoạt động “mềm dẻo”trên nhiều yếu tố khác nhau Thứ hai, nó cần phải kiểm tra và cập nhật được các thống
số kỹ thuật cũng như trạng thái của các serverrr, kiểm tra xem server nào hoạt động,server nào đang tạm nghỉ, server nào vừa được thêm vào cụm server, hay vừa được đưa
ra (để sửa chữa, bảo trì…) trong hệ thống, kiểm tra sự thay đổi trong khả năng phục vụ(chẳng hạn số kết nối lớn nhất) hay trọng số của các server Giải quyết tốt hai bài toántrên sẽ cho ra một bộ cân bằng tải hoạt động hiệu quả và ổn định
Điểm mấu chốt trong hoạt động của các bộ cân bằng tải là thuật toán phân phối tải.Không có một thuật toán nào thực sự phù hợp cho mọi môi trường Với những điềukiện hệ thống nhất định, yêu cầu đặt ra là phải chọn thuật toán nào cho phù hợp Cácthuật toán phân tải đang được sử dụng thường được chia ra làm hai loại chính, đó làthuật toán phân tải tĩnh và thuật toán phân tải động Các thuật toán phân tải tĩnh dễ thiết
kế, hoạt động đơn giản nhưng hiệu suất không cao Chúng được gọi là thuật toán tĩnh
vì phương pháp chọn server để gửi yêu cầu tiếp theo dựa trên các yếu tố tĩnh, khôngthay đổi Ngược lại, các thuật toán phân tải động dựa trên các nhân tố động, thay đổiliên tục, do đó các thuật toán động này hoạt động linh hoạt hơn và đáp ứng yêu cầuphân tải một cách tốt hơn Tuy vậy không có một thuật toán nào có thể đáp ứng đượctrong mọi trường hợp Cần phải có một sự kết hợp mềm dẻo dựa các thuật toán nàymới có thể xây dựng được một bộ cân bằng tải cao hơn
Trang 342.2.2 Kỹ thuật cân bằng tải web server
Cân bằng tải web server là phần quan trọng nhất trong quy trình xây dựng website theokiến trúc mở rộng Một trang web được cân bằng tải tốt sẽ tránh được tình trạng tắcnghẽn server, luôn trả về yêu cầu của người dùng trong khoảng thời gian ngắn nhất, do
đó sẽ khiến người dùng hài lòng Có nhiều kỹ thuật để thực hiện cân bằng tải choserver, một trong những kỹ thuật thường được đề cập rộng rãi trên internet là sử dụngDNS (Domain Name System) Là một phần của cân bằng tải toàn cầu, DNS server sẽchứa thông tin về địa chỉ của rất nhiều host dưới một cái tên host duy nhất Khi ngườidùng truy cập vào host bằng tên này, DNS sẽ trả về host theo thứ tự quay vòng, nhưvậy người dùng khác nhau sẽ truy cập vào các địa chỉ khác nhau dưới cùng một tên.Tuy nhiên kỹ thuật này chưa cho thấy được tầm quan trọng
Điều quan trọng nhất trong cân bằng tải server chính là thiết kế và xây dựng bộ cânbnwgf tải Bộ cân bằng tải này sẽ trước cụm server, nhận yêu cầu từ người dùng, sau
đó phân tải vào các server một cách phù hợp
2.2.2.1 Lý thuyết xây dựng bộ cân bằng tải cho web-server
Một bộ cân bằng tải cần phải thực hiện được 4 chức năng cốt lõi sau:
- Cân bằng tải cho server (server load balancing): có nhiệm vụ phân phối tải giữacác server, tăng khả năng mở rộng của hệ thống, giúp cho hệ thống vẫn hoạtđộng khi có server bị “chết”
- Cân bằng tải cho server toàn cầu (global server load balancing): có nhiệm vụchuyển hướng yêu cầu của người dùng đến các data center khác nhau trongtrường hợp website có nhiều trung tâm dữ liệu trên thế giới Góp phần tăng tốc
độ phản hồi cho người dùng và giúp cho hệ thống vẫn có khả năng hoạt độngkhi có trung tâm dữ liệu bị “chết”
Trang 35- Cân bằng tải cho firewall (firewall load balancing): có nhiệm vụ phân phối tảigiữa các firewall, giúp cho hệ thống vẫn hoạt động được khi có firewall bị
“chết”
- Chuyển mạch cache trong suốt (transparent cache switching): giúp chuyểnhướng lưu lượng một cách “trong suốt” đến các caches, góp phần tăng thời gianđáp ứng và hiệu năng của hệ thống
2.2.2.1.1 Kỹ thuật cân bằng tải server
Như đã đề cập, bộ cân bằng tải có nhiệm vụ kết nối giữa người dùng và server, do đó
có thể hoạt động như một proxy hoặc gateway Một proxy có nhiệm vụ luân chuyểnyêu cầu và dữ liệu đáp trả giữa người dùng và server, trong khi đó một gateway chỉ cónhiệm vụ tạo ra một kết nối hai đối tượng này và không làm gì thêm Có thể sử dụngphần cứng hoặc phần mềm được cài đặt trên một front server, hoặc trên chính webserver Thêm nữa, khi số lượng người dùng tăng lên, để tránh SPOF, cần phải cài đặthai bộ cân bằng tải song song, hoạt động theo cơ chế active-active hoặc active-backup.Các phần mềm cân bằng tải thường được cài đặt như một proxy Để xây dựng một bộcân bằng tải phần mềm, các kỹ thuật cần phải chú trọng, đó là: kiểm tra trang tháiserver, lựa chọn server tốt nhất để gửi yêu cầu và kỹ thuật duy trì kết nối người dùng
2.2.2.1.1.1 Kiểm tra trạng thái server
Để chọn được server phù hợp để gửi request, bộ cân bằng tải cầ phải biết được servernào đang có sẵn Vì vậy, nó cần phải dùng biện pháp nào đó để kiểm tra trạng thái củaserver, chẳng hạng như gửi lệnh ping, các yêu cầu, thử kết nối hay bất cứ phương phápnào mà người quản trị nghĩ là dùng được Kỹ thuật kiểm tra này thường được gọi là
“health checks”
Một server bị down có thể trả lời lệnh ping nhưng không thể trả lời các kết nối TCP,một server bị treo có khả năng trả lời kết nối TCP nhưng không thể trả lời các yêu cầu
Trang 36HTTP Khi một ứng dụng web nhiều lớp được kích hoạt, một số yêu cầu HTTP có thểtrả lời ngay lập tức trong khi số khác sẽ thất bại.
Chính vì thế, việc chọn một phương pháp test phù hợp được chấp nhận bởi ứng dụngweb và bộ cân bằng tải là rất thú vị Một số test đôi khi phải cần truy xuất dữ liệudatabase nhằm đảm bảo rằng toàn bộ quá trình của nó là đúng Hạn chế lớn nhất lànhững phương pháp kiểm tra này sẽ chiếm tài nguyên của hệ thống như CPU,threads…
Do đó, cân bằng thời gian kiểm tra chính là vấn đề khó nhất trong kỹ thuật lựa chọnserver Khoảng thời gian giữa 2 lần test liên tiếp phải đủ dài để không tốn quá nhiều tàinguyên của hệ thống cũng cần đủ ngắn để nhanh chóng phát hiện ra những server
“chết” Vì “health checks” là một trong những khía cạnh phức tạp nhất của kỹ thuậtcân bằng tải, nên thường sau một vài kiểm tra, các nhà phát triển ứng dụng sẽ thực thimột yêu cầu đặc biệt dành riêng cho bộ cân bằng tải, giúp cho nó thực hiện một sốkiểm tra nội bộ
Phần mềm cân bằng tải có khả năng cung cấp scripting, do đó nó đạt được độ linh hoạtrất cao Thêm nữa, nếu như một bài kiểm tra nào đó đòi hỏi phải chỉnh sửa code, nó cóthể thực hiện trong một khoảng thời gian ngắn
2.2.2.1.1.2 Lựa chọn server tốt nhất
Việc lựa chọn server tốt nhất chính là phần trọng tâm của thuật toán cân bằng tải.Phương pháp dễ nhất và thường được sử dụng nhất trong các hệ thống nhỏ là RoundRobin, các server được lựa chọn quay vòng, tuy nhiên phương pháp này có nhược điểm
là 2 requests liên tục từ một người dùng sẽ vào 2 server khác nhau, thông tin giữa 2 yêucầu liên tiếp sẽ bị mất, như vậy sẽ không thể tối ưu hóa được sử dụng tài nguyên Đặcbiệt là khi cần phải cài đặt kết nối cho các phiên chạy – ví dự như SSL key negociation– sẽ rất tốn thời gian
Trang 37Một cách khắc phục nhược điểm này là sử dụng một hàm băm theo địa chỉ IP, như vậyrequest từ cùng một địa chỉ IP sẽ chỉ vào một server duy nhất Tuy vậy phương phápnày đòi hỏi người dùng phải có IP tĩnh Vậy thì cách khắc phục cho những hạn chế trên
là gì? Đó chính là kỹ thuật Session Persistence
2.2.2.1.1.3 Kỹ thuật Session Persistence
Vấn đề cần giải quyết chính là làm sao để giữ cho các yêu cầu một người dùng đượcgửi vào một máy duy nhất trong suốt phiên làm việc của người đó Tất cả các yêu cầungười dùng này cần phải được chuyển vào cùng một server Nếu server bị chết, hoặcngừng để bảo trì, cần phải có cơ chế để chuyển session của người dùng này sang máyserver khác Đó chính là kỹ thuật Session Persistence
Một số phương pháp đưa ra để tiếp cận kỹ thuật này, chẳng hạn như sử dụng responseHTTP 302 hay tạo ra liên kết giữa người dùng – server Tuy vậy 2 phương pháp nàyđều có những hạn chế, sử dụng HTTP 302 sẽ khiến người dùng luôn tìm cách kết nốivới một server duy nhất, kể cả khi server này đã “chết” Dùng cách taojo liên kết đòihỏi user phải có IP tĩnh suốt phiên làm việc
Vậy để giải quyết vấn đề này ta sử dụng cookie Cookie là một đối tượng được điều
khiển bởi Web Servers Trong kết quả trả về cho người dùng web servers sẽ chèn thêmmột số thông tin Những yêu cầu tiếp theo của người dùng gửi đến server sẽ chứa thêmthông tin của cookie này, server sẽ đọc các cookie và biết phải làm gì với các yêu cầunày
2.2.2.1.1.4 Cookie
Một cookie được định nghĩa bằng cặp tên = giá trị (name = value) Hình … miêu tảhoạt động của cookie với cặp user=1, cho biết tên cookie là user và giá trị của nó là 1.Bên phía người dùng, cookie được điều khiển bởi trình duyệt và “trong suốt” đối với
Trang 38Hình 2-3 Cách làm việc của cookie user=1Trong thiết kế của bộ cân bằng tải, có 3 cách để sử dụng cookie: Cookie chỉ đọc(Cookie-Read), bộ cân bằng tải chèn cookie nhằm chứng thực server (Cookie-Insert)
và ghi đè cookie (Cookie-Rewrite) Phạm vi nghiên cứu đề tài không đề cập sâu đếncách thức hoạt động của 3 cách sử dụng cookie này
Phương pháp Cookie-Rewrite có ưu điểm là tránh cho bộ cân bằng tải làm việc quámức và tránh cho gói tin bị chia nhỏ Phương pháp này khắc phục được nhược điểmcủa 2 phương pháp còn lại và thường được chọn dùng trong các bộ cân bằng tải
2.2.2.1.2 Cân bằng tải cho server toàn cầu (GSLB)
Có 2 nhân tố chính thể hiện sự cần thiết của GSLB, đó là khả năng có sẵn và thời gianđáp ứng
Để đảm báo tính có sẵn của cụm server chúng ta sử dụng 1 bộ cân bằng tải để thực hiệnkiểm tra “health checks” đối với các server Để đảm bảo bộ cân bằng tải không bị quátải, chúng ta có thể cài đặt nhiều bộ cân bằng tải hoạt động theo chế độ active-activehoặc active-backup Nhưng chuyện gì xảy ra nếu như toàn bộ trung tâm dữ liệu chứacác server và các bộ cân bằng tải không thể hoạt động vì mất điện, động đất hoặc lũlụt? Tất nhiên người dung sẽ không thể truy cập vào website Để tránh trường hợp nàyxảy ra, chúng ta có thể cài đặt website ở nhiều trung tâm dữ liệu khác nhau và sử dụngGSLB để đồng bộ giữa các trung tâm này Phương án này đảm bảo rằng, nếu có mộttrung tâm nào đó bị hỏng thì vẫn còn trung tâm khác hoạt động
Trang 39Trong mạng internet, có những yếu tố bất lợi mà chúng ta không thể giải quyết mộtcách triệt để, một trong những yếu tố đó là “thời gian trễ của đường truyền internet”(internet delay), đây cũng chính là yếu tốt quyết định đến thời gian đáp ứng củawebsite đối với người dung Thời gian đáp ứng người dùng phụ thuộc vào thời gian trễcủa người dùng (client-side delay), thời gian trễ của server (server-side delay), và thờigian trễ của đường truyền internet Các phương án giảm thiểu tối đa thời gian củaserver đã được bàn ở phần cân bằng tải cho server Do chúng ta không thể kiểm soátđược thời gian trễ của người dùng, nên phần này sẽ đi sâu vào các phương pháp cài đặt
hệ thống server để hạn chế được thời gian trễ của đường truyền mạng
2.2.2.1.2.1 Domain Name System
GSLB có thể đạt được bằng nhiều cách khác nhau, nhưng cách được dùng nhiều nhất
là sử dụng Domain Name System (DNS) Khi người dung truy cập vào websitewww.facebook.com, thì “facebook.com” chính là tên miền (domain), có nhiều loại tênmiền khác nhau, chỉ định bằng đuôi của chúng Chẳng hạn như tên miền com làcommercial (các trang web thương mại), tên miền org thay cho organization (tổ chức),hoặc tên miền edu thay cho education (giáo dục) Trong mỗi tên miền lại có những tênmiền con, chẳng hạn như “daa.uit.edu.vn” hay “iot.uit.edu.vn”, chúng còn được gọi làcác vùng (zones) của tên miền chính Một name server lưu trữ thông tin về các tênmiền, và có trách nhiệm trả về tất cả các vấn đề không gian tên của các tên miền này.Một tên miền có thể được lưu trữ ở nhiều DNS khác nhau, nhưng sẽ có một DNS cóthẩm quyền cao nhất (authoritative DNS), DNS này có trách nhiệm cập nhật tất cả cácthay đổi cho các DNS có thẩm quyền thấp hơn
Server tên miền cục bộ (local DNS) là name server được lưu trữ ở trong mạng LANcủa người dung Khi người dung truy cập một tên miền như www.facebook.com, localDNS sẽ chuyển tên miền này thành 1 địa chỉ IP, như mô hình trong hình … Vậy thì nó
Trang 40liệu trả về sẽ là danh sách các tên miền có đuôi là com (3) Sau đó, Local DNS sẽchuyển yêu cầu đến “.com name server” (4), và name server này sẽ trả về IP củaauthoritative DNS của website facebook.com (5) Local DNS gửi yêu cầu đến địa chỉ
IP này (6), và nhận dữ liệu trả về là IP của một trong các web server của trangfacebook.com (7), IP này được trả về cho trình duyệt và được dung để truy xuất dữ liệu(8,9)
Hình 2-4 Mô hình Global Server Load BalacingTrong bước (7), đôi khi dữ liệu trả về sẽ là một danh sách các địa chỉ IP của websitecần truy cập, hoặc có khi DNS sẽ dùng round-robin để trả về danh sách này theo thứ tựquay vòng, như vậy mỗi lần sẽ trả về một địa chỉ IP khác nhau Nếu local DNS nhậnđược một list các IP trả về, nó sẽ chuyển về trình duyệt các IP này theo thuật toánRound Robin
Khi Local DNS nhận dữ liệu trả về, nó sẽ lưu trữ thông tin của các dữ liệu này trongmột khoảng thời gian (gọi là Time-To-Live - TTL) Trong khoảng thời gian này, bất cứyêu cầu nào với tên miền là con của tên miền gốc sẽ được trả về địa chỉ IP giống nhưyêu cầu gốc Nếu hết thời gian TTL mà vẫn không có yêu cầu, dữ liệu này sẽ tự động
bị xóa đi Giá trị TTL giảm sẽ khiến local DNS truy cập vào authoritative DNS nhiềuhơn, tăng giá trị TTL sẽ khiến local DNS có nguy cơ thừa quá nhiều dữ liệu khôngdùng đến Vì vậy chọn giá trị TTL phải tùy thuộc vào từng website và thời điểm cụ thể