Chuyển đến nội dung chính

Hướng dẫn tạo Application Gateway và routing tới Virtual Machine

Azure Application Gateway là gì?

Azure Application Gateway là một dịch vụ điều khiển lưu lượng (web traffic load balancer) và bảo mật cấp độ cao với các ứng dụng web chạy trên Azure. Nó cung cấp nhiều chức năng cho người dùng như cân bằng tải, SSL offloading, HTTP/2, WebSockets, hệ thống cảnh báo, chuyển hướng giao diện người dùng dựa trên nội dung… Từ đó cải thiện trải nghiệm người dùng và đảm bảo tính khả dụng của ứng dụng web. 

Ngoài ra, Azure Application Gateway cũng hỗ trợ các tính năng bảo mật cao, hạn chế các dữ liệu trên hệ thống bị tấn công mạng.

Azure Application Gateway đóng vai trò vô cùng quan trọng trong việc quản lý, bảo mật các ứng dụng web
Azure Application Gateway đóng vai trò vô cùng quan trọng trong việc quản lý, bảo mật các ứng dụng web

Nói Một Cách Dễ Hiểu

Giả sử bạn có nhiều ứng dụng chạy ở các domain khác nhau, nhưng bạn muốn người dùng chỉ truy cập thông qua một domain duy nhất. Application Gateway đóng vai trò như người gác cổng thông minh, xem xét yêu cầu của người dùng và quyết định nên chuyển đến ứng dụng nào.

Ở hình trên, dựa vào URL, Application Gateway sẽ quyết định redirect tới Virtual Machine chứa app Image Server hay Virtual Machine chứa Video Server. Đây chính là ví dụ chúng ta sẽ làm ở dưới đây.

Ví dụ

Trong ví dụ này, chúng ta sẽ tạo 1 Virtual Network để chứa 2 web-server: Image Server và Video Server. Để truy xuất 2 website này, 1 là chúng ta dùng 1 resource trong Network để truy cập, máy ảo hay bastion... Hai là chúng ta dùng Application Gateway để có thể truy xuất website từ public Internet. Mình chọn cách 2.

        +------------------+
        |    User           |
        +------------------+
                 |
                 v
        +------------------+
        | Login to Azure    |
        | Portal            |
        +------------------+
                 |
                 v
        +----------------------------+
        | Create and configure Azure  |
        | resources                   |
        +----------------------------+
                 |
                 v
        +-----------------------------------------------+
        |                 Virtual Network               |
        |                                               |
        |  +------------------+        +------------------+
        |  | Virtual Machine   |        | Virtual Machine   |
        |  | (VM)              |        | (VM)              |
        |  +------------------+        +------------------+
        |         |                          |
        |         +------------+-------------+
        |                      |
        |               +------------------+
        |               | Application      |
        |               | Gateway           |
        |               +------------------+
        |                      |
        +----------------------|---------------------------+
                               v
                    +------------------+
                    | Resource Group    |
                    +------------------+
 

Giải thích

Người dùng đăng nhập vào Azure Portal.
Tạo tài nguyên: VNet, VMs, Application Gateway, tất cả nằm trong cùng một Resource Group.
Các VM nối vào Application Gateway qua port 80.

Tạo 1 Virtual network

Sign in vào Azure Portal (https://portal.azure.com)

Tìm kiếm Virtual networks -> Create

Điền các thông tin cơ bản sau:

  • Resource group: rg_<your-resource-group-name>
  • Instance details:
    • Name: vnet1
    • Region: East US

Ở tab IP addresses, bạn delete address space có sẵn và bấm vào link Add IPv4 address space, điền thông tin sau:

Address space type : Chọn IPv4

  • Starting address : 10.0.0.0
  • Address space size : /16

Tạo 2 subnet

  • Subnet Name: Enter myBackendPool
  • Subnet Address range: Enter 10.1.0.0/24
  • Subnet Name: Enter myApplicationGatewaySubnet
  • Subnet Address range: Enter 10.1.1.0/24



Tạo 2 máy ảo

Tại tab Basics, bạn điền thông tin như sau:

  • Resource group : Chọn rg_eastus_XXXXX
  • Instance details :
    • Virtual Machine Name : Gõ vm1/vm2 (tên vm của 2 máy ảo)
  • Region : Chọn East US
  • Availability options: Chọn No infrastructure redundancy required
  • Image : Chọn Windows Server 2019 Datacenter - Gen1 
  • Size : Chọn Standard_B2s
  • Administrator Account :
    • Username : Gõ vm1
    • Password : Gõ password
    • Confirm password : Re-enter password
  • Inbound Port rules : 
    • Public inbound ports : Chọn Allow selected ports
    • Chọn inbound ports : Chọn HTTP (80), RDP (3389)

Tab Disk, chọn OS disk type: chọn Standard SSD

Ở tab Networking, Virtual network, chọn vnet1, Subnet: Select myBackenedPool

Tab Monitoring, Boot diagnostic: chọn Disable

Cuối cùng, bạn bấm Review + Create -> Create để hoàn thành.

Cài đặt IIS

Mục đích là setup IIS cho 2 virtual machine, sau đó bạn thêm 2 file HTML với nội dung
vm1: C drive > inetpub > wwwroot > images > Default.html
<h1> This is the Images Server </h1>
vm2: C drive > inetpub > wwwroot > videos > Default.html
<h1> This is the Video Server </h1>
Để truy xuất vào Virtual Machine, trên Azure Portal, search Virtual Machines -> chọn VM mà bạn cần truy xuất -> Click Connect

Chọn RDP -> Download RDP file. Sau khi download xong, bạn mở RDP và bấm Connect.

Gõ username/pass bạn đã setup ở bước trên.

Để cài đặt IIS, bạn tham khảo link: https://quantrimang.com/cong-nghe/su-dung-iis-tren-windows-server-2019-180357

Tạo Application Gateway

Application Gateway trong Azure là một loại Application Load Balancer dùng để quản lý lưu lượng truy cập đến ứng dụng web của bạn (HTTP/HTTPS). Nó hoạt động như người gác cổng, đứng giữa người dùng và máy chủ web của bạn.

Một số vai trò quan trọng:

  • Phân phối tải (Load Balancing) theo tầng ứng dụng (L7 - Layer 7), tức là dựa trên URL, header, cookie,...
  • Bảo vệ ứng dụng với Web Application Firewall (WAF) (nếu bật).
  • Hỗ trợ SSL Termination, giúp giảm tải cho backend server.
  • Tái viết URL, chuyển hướng,...

Nói cách đơn giản: Khi người dùng truy cập vào web, request không đi thẳng vào máy chủ, mà đi qua Application Gateway. Gateway sẽ quyết định hướng request đến máy chủ nào theo cách thông minh.

Vào Azure Portal, search Application Gateway -> Create:

Application Gateway Name : Enter WhizlabsGateway

Region : Select East US

Tier: Select Standard V2

Maximum Instance count: 2

Virtual Network: vnet1

Subnet: myApplicationGatewaySubnet

Lưu ý: Application Gateway bắt buộc phải đặt trong một subnet riêng

Application Gateway must be deployed in its own dedicated subnet.

Cấu hình Frontend

Frontend IP address type: Public (truy cập từ public IP)

Public IPv4 address: chọn Add new


Cấu hình Backend Pools

Ở trang Thêm Backend Pool (Add a backend pool), nhập hoặc chọn các thông tin sau và nhấn Add:

Name: nhập imagepool

Add backend pool without targets: chọn No

Target type: chọn Virtual machine

Đích (Target): chọn máy ảo vm1

Thêm backend pool cho máy chủ video (vm2):

Nhấn Add a backend pool lần nữa và điền thông tin:

Name: nhập videopool

Add backend pool without targets: chọn No

Target type: chọn Virtual machine

Target: chọn máy ảo vm2

Routing rule

Để kết nối FrontEnd (nhận request từ Public IP) và Backend (multi-website), chúng ta sẽ thiết lập routing, tạm gọi là ruleA

  • Listen trên cổng 80 (HTTP)
  • Dựa vào đường dẫn URL (/images/* và /videos/*) để chuyển tiếp đến đúng máy chủ phía sau (backend).

Trên giao diện, click Next: Configuration -> Add a routing rule

Nhập các thông tin:

  • Rule name: RuleA
  • Priority: 30 (số càng nhỏ, độ ưu tiên càng cao)

Cấu hình Listener

Listener giúp Application Gateway biết nên "lắng nghe" yêu cầu từ phía người dùng ở đâu, cổng nào.

  • Listener Name: ListenerA
  • Frontend IP: chọn Public (để lắng nghe từ Internet)
  • Protocol: chọn HTTP
  • Port: nhập 80
  • Nhấn Add để hoàn tất Listener

Cấu hình Backend Targets

  • Target type: chọn Backend pool
  • Backend target: chọn imagepool (sẽ dùng chung cấu hình)
  • Nhấn Add new tại phần Backend settings để cấu hình cách Gateway giao tiếp với backend:
  • Backend settings name: SettingA
  • Backend protocol: chọn HTTP
  • Backend port: nhập 80
  • Nhấn Add

Cấu hình Path-based Routing (Định tuyến theo đường dẫn)

  • Path /images/* → vm1:
  • Nhấn Add multiple targets
  • Target type: chọn Backend pool
  • Path: nhập /images/*
  • Target Name: nhập ImageRule
  • HTTP settings: chọn SettingA
  • Backend target: chọn imagepool
  • Nhấn Add

Path /videos/* → vm2:

  • Tiếp tục nhấn Add multiple targets
  • Target type: chọn Backend pool
  • Path: nhập /videos/*
  • Target Name: nhập VideoRule
  • HTTP settings: chọn SettingA
  • Backend target: chọn videopool
  • Nhấn Add

Nhấp Add để hoàn thành

Sau khi cấu hình

Đường dẫn người dùng gõ Gateway làm gì?
http://<PublicIP>/images/Default.html Gửi yêu cầu đến máy ảo vm1 (imagepool)
http://<PublicIP>/videos/Default.html Gửi yêu cầu đến máy ảo vm2 (videopool)



Tham khảo

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.