higress【Môi trường triển khai】

Triển khai môi trường higress (dùng Docker) + nacos (trung tâm đăng ký + dịch vụ)

Bài hướng dẫn này sử dụng phiên bản mới nhất của Alibaba Higress và Nacos để xây dựng cụm microservice. Đầu tiên, triển khai Nacos (chế độ độc lập) trên máy cục bộ (Windows 10), sau đó tạo các ứng dụng microservice sử dụng Spring Cloud Alibaba, cuối cùng là thiết lập dịch vụ Higress trên Ubuntu (do phiên bản mới nhất yêu cầu chạy trong môi trường container nên cần cài đặt trên Docker hoặc Kubernetes. Người đọc có thể lựa chọn môi trường phù hợp với mình).

I. Phiên bản phần mềm:

  • Higress 1.1.0
  • Nacos 2.2.3
  • Ubuntu 22.04 LTS
  • Docker 20.10.18
  • Spring Boot 2.7.6
  • Spring Cloud Alibaba 2021.0.5.0
  • Spring Cloud 2021.0.5

II. Triển khai Nacos

  1. Vì Nacos không yêu cầu container nên tôi trực tiếp tải file jar để cài đặt cục bộ.

Link tải: https://github.com/alibaba/nacos/releases/tag/2.2.3, tải file nén có đuôi .zip.

Giải nén và chỉnh sửa file cấu hình /conf/application.properties, thêm cấu hình sau (điền thông tin cơ sở dữ liệu phù hợp, tôi dùng MySQL và đã tạo database tên là nacos):

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
# Do Higress chưa hỗ trợ xác thực Nacos nên tắt tính năng này
nacos.core.auth.enabled=false

Chạy SQL từ file conf/mysql-schema.sql trong database nacos để tạo bảng lưu trữ.

  1. Khởi động Nacos: Truy cập thư mục bin trong thư mục giải nén Nacos, mở command prompt với quyền admin và chạy lệnh:
startup -m standalone

III. Tạo dịch vụ microservice tùy chỉnh:

Tôi tạo ba module như sau:

  • higress-producer (dịch vụ sản xuất)
  • higress-consumer (dịch vụ tiêu dùng)

Cấu hình chính trong pom.xml:

<!-- Bắt buộc thêm dependency cho bootstrap sau Spring Cloud 2020 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

File cấu hình bootstrap.yml (chủ yếu dùng để cấu hình trung tâm cấu hình Nacos):

# Tên file cấu hình từ xa
spring:
  application:
    name: higress-producer
# Kích hoạt profiles, tên file cấu hình sẽ là higress-producer-dev.yaml
#  profiles:
#    active: dev
  cloud:
# Chỉ định IP phù hợp với tiền tố để đăng ký dịch vụ, hỗ trợ regex
    inetutils:
      preferred-networks:
        - 10.*
    nacos:
      username: nacos
      password: nacos
      config:
        server-addr: 10.53.207.47:8848
        namespace: 120523fa-052a-4a2e-abb1-e572ddfef2f5
        file-extension: yaml
        refresh-enabled: true
        enabled: true

#---------------- Quy tắc cấu hình -----------------
# Tên DataID sẽ là: higress-producer-dev.yaml (quy tắc quan trọng, nếu sai sẽ không load được)
# Data ID = ${spring.cloud.nacos.config.prefix}.${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# Group = ${spring.cloud.nacos.config.group}

Cấu hình trong Nacos (các cổng của producer và consumer không trùng nhau):

server:
  port: 9090
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 10.53.207.47:8848
        namespace: 120523fa-052a-4a2e-abb1-e572ddfef2f5
logging:
  path: /log
  level:
    root: INFO

Khi khởi động, dịch vụ sẽ tự động đăng ký lên Nacos, xem hình ảnh minh họa.

IV. Cài đặt Higress

  1. Để tránh xung đột cổng, trước tiên cấu hình cổng tùy chỉnh qua biến môi trường:

Sửa file /etc/profile, thêm dòng sau:

export CONSOLE_PORT=9200
export GATEWAY_HTTP_PORT=9500
  • CONSOLE_PORT: cổng lắng nghe của console Higress
  • GATEWAY_HTTP_PORT: cổng lắng nghe của gateway Higress Sau đó chạy lệnh source /etc/profile để áp dụng biến môi trường.
  1. Chạy lệnh cài đặt trên Ubuntu (đảm bảo mạng giữa Ubuntu và máy Nacos hoạt động, và Ubuntu có kết nối internet):
curl -fsSL https://higress.io/standalone/get-higress.sh | bash -s -- -c nacos://10.53.207.47:8848 --nacos-ns='11fced6f-7c2e-4c9e-9de2-8637fc369e0c' --nacos-username=nacos --nacos-password=nacos -p admin
  • -c: địa chỉ và cổng Nacos
  • --nacos-ns: namespace trong Nacos nơi lưu cấu hình Higress
  • --nacos-username--nacos-password: tên người dùng và mật khẩu Nacos (không bắt buộc do Higress chưa hỗ trợ xác thực)
  • -p: mật khẩu đăng nhập console Higress, mặc định là admin/admin

Sau khi cài thành công, chạy lệnh docker ps để kiểm tra:

Hiển thị các container Higress đang chạy.

Nếu quá trình cài bị lỗi, chạy shutdown.sh trong thư mục /higress/bin/, xóa toàn bộ thư mục Higress, rồi chạy lại lệnh cài đặt.

  • shutdown.sh: dừng và xóa container Higress
  • startup.sh: khởi tạo và chạy container Higress

Nếu kiểm tra precheck thất bại, có thể sửa file /higress/compose/.env, xóa thông tin tài khoản và mật khẩu của Nacos (do Nacos tắt xác thực, nếu Higress có cấu hình tài khoản thì sẽ kiểm tra xác thực và thất bại). Sau đó chạy lần lượt shutdown.shstartup.sh.

  1. Cấu hình route cho gateway

a. Đăng nhập vào console Higress, vào menu "Nguồn dịch vụ" để cấu hình thông tin dịch vụ, xem hình minh họa:

Sau khi cấu hình, vào menu "Danh sách dịch vụ" sẽ thấy danh sách dịch vụ được tải từ Nacos.

b. Trong menu "Quản lý tên miền", thêm tên miền để đánh dấu ứng dụng và dịch vụ.

c. Trong menu "Quản lý route", tạo và cấu hình đường dẫn cho ứng dụng.

d. Kiểm tra truy cập: trên hệ thống Linux, gọi API qua gateway Higress, chú ý thêm header host với giá trị là tên miền đã cấu hình trong Higress (higress.com). Định dạng URL:

http:// IP_gateway_higress : cổng_gateway / đường_dẫn_ứng_dụng

curl --location --request GET 'http://localhost:9500/producer/host' \
--header 'host: higress.com'

Thẻ: Higress docker Nacos Microservices SpringCloudAlibaba

Đăng vào ngày 29 tháng 6 lúc 21:35