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
- 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ữ.
- Khởi động Nacos: Truy cập thư mục
bintrong 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
- Để 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 HigressGATEWAY_HTTP_PORT: cổng lắng nghe của gateway Higress Sau đó chạy lệnhsource /etc/profileđể áp dụng biến môi trường.
- 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-usernamevà--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 Higressstartup.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.sh và startup.sh.
- 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'