Infrastructure Diagram:
Components hệ thống:
- Front Load Balancer: Được triển khai trên một instance độc lộc sử dụng Nginx.d để làm reverse proxy cho hệ thống, mục đích chính của FLB là SSL Termination và setup proxy route đến Kong API Gateway, đồng thời sẽ đáp ứng firewall rule cơ bản ở phía đầu.
- Kong API Gateway: Platform API được phát triển dựa trên nginx và lua, mục đích là để cấu hình cho service route được linh hoạt và mở rộng hơn. Ngoài ra, Instance này còn được dùng để xử lý các luồng authen trước khi request đến service bên trong.
- Docker Swarm Instance (for Rest + gRPC): Đây là các instance dùng để triển khai các container cho mục đích giao tiếp với API Gateway.
- Docker Swarm Insatnce (for Worker): Đây là các instance dùng để triển khai các container được sử dụng dạng cronjob or process event từ RabbitMQ
- Database & Storage: gồm PostgresSQL và Minio Bucket for file store
- RabbitMQ for process event
- Notification: Gửi thông báo đến client thông qua email/sms
Ứng dụng của bên thứ 3
- Streaming (VOD): Phát trực tuyến video sử dụng của third party Vnetwork
- Elsa: đánh giá phát âm tiếng Anh
- Email service: Sendgrid
- SMS service: FPT & VNPAY
Lưu ý:
- Database của ICK có một số tables được lấy data xuống hệ thống Data Warehouse qua cơ chế CDC. Nên cần thay đổi lại chổ này nếu Data Warehouse và Database không cùng mạng hạ tầng
Requirement tối thiểu cho hệ thống ICK:
Code Block | ||
---|---|---|
| ||
System Requirements:
Services:
Infrastructure: ick
Platform: docker-swarm
OS: linux
Architecture: amd64
RAM: 16GB
CPU: 4
Number of Nodes: 3
Storage: 100GB
Databases:
PostgresSQL Master:
Image: postgres:13-alpine
Replicas: 1
RAM: 16GB
CPU: 4
Storage: 500GB
Backup: 1
PostgresSQL Slave:
Image: postgres:13-alpine
Replicas: 1
RAM: 16GB
CPU: 4
Storage: 500GB
Backup: 1
ObjectStorage:
Image: minio/minio:RELEASE.2018-10-06T00-53-53Z
Replicas: 1
RAM: 8GB
CPU: 2
Storage: 500GB
Backup: 1
Queue:
Image: rabbitmq:3.7.7-management-alpine
Replicas: 1
RAM: 4GB
CPU: 2
Storage: 50GB
Backup: 1
Caching:
Image: redis:6-alpine
Replicas: 1
RAM: 8GB
CPU: 2
Storage: 50GB
Backup: 1
LoadBalancer:
Image: nginx:1.18.0-alpine
Replicas: 1
RAM: 4GB
CPU: 4
Storage: 50GB
Backup: 1
Apigateway:
Image: kong:2.3.3
Replicas: 1
RAM: 4GB
CPU: 8
Storage: 50GB
Backup: 1 |
Danh sách VMs:
Danh sách physical server:
STT | ENV | Type Device | Model | Rack | Raid | Performance | Mục đích sử dụng | RAM | CPU | DATA | OS | Luu ý | STATUS | |
1 | product | Server | IBM X3650 M4 | 2U | 5 | Max: 99% - Av:30% | HA proxy | 16 | 4 | 220 | 29022 | centos 6.7 final | Running | |
2 | product | Server | Dell R630 | 1U | 5 | Max: 99,44% - Av:18% | Site Hocmai.vn | 126 | 56 | 280 | 29022 | centos 7 core | Running | |
4 | product | Server | IBM X3650 M5 | 2U | 5 | Max: 43,2% - Av: 21.3% | Streaming video 2 | 64 | 28 | 475 | 29022 | centos 7 core | Port 10G | Running |
5 | product | Server | IBM X3650 M4 | 2U | 5 | Max: 43,2% - Av: 21.3% | Streaming video 1 | 32 | 8 | 549 | 29022 | centos 7 core | Port 10G | Running |
6 | product | Server | Dell R630 | 1U | 5 | Max: 99.43% - Av: 10% | DB | 126 | 56 | 1700 | 29022 | centos 7 core | Running | |
7 | product | Server | HP ProLiant DL380 Gen10 | 2U | 5 | Max: 4% - Av: 2 % | DB Slave | 64 | 40 | 2200 | 29022 | centos 7 core | Running | |
8 | product | Server | HP ProLiant DL380 Gen10 | 2U | 5 | Max: 20.5% - Av: 17.2% | Db slave 2 | 64 | 40 | 620 | 29022 | centos 7 core | Running | |
9 | product | Storage | IBM V3700 | 2U | 5 | 13T/13T | Lưu trữ video 1 | Port 10G | Running | |||||
10 | product | Storage | IBM Storwize V5000 | 2U | 5 | 17T/19T | Lưu trữ video 2 | Port 10G | Running | |||||
11 | product | Server | HP ProLiant DL380 Gen9 | 2U | 5 | Max: 100%, Av: 5% | API site Hocmai.vn và site Hướng nghiệp | 78 | 64 | 1300 | 22 | centos 7 core | Running |
Thành phần hệ thống:
- Front Load Balancer: Được triển khai trên 2 physical độc lập, sử dụng HA Proxy load balancer.
- Hệ thống streaming: được triển khai trên 2 physical server độc lập, sử dụng port 10G kết nối iscsi với hệ thống Storages
- Application: Được triển khai trên 2 physical server độc lập
- Database Cluster: Gồm 3 physical server độc lập, gồm 1 Master và 2 Slave
- Storage: gồm 2 thiết bị IBM V3700 và IBM Storwize V5000 để lưu trữ video
Lưu ý:
- Một số kết nối phải đảm bảo băng thông từ 10G trở lên
- Một số một số requirement về tốc độ đọc ghi của disk
- Application:
- Read performance : 328MB/s
- Write performance: 109MB/s
- Database:
- Read performance : 368MB/s
- Write performance: 120MB/s
- Application:
Phương án migrate:
Kế hoạch | Thông tin | Mô tả chi tiết | Ưu điểm | Nhược điểm |
---|---|---|---|---|
Phương án 1 |
Sử dụng chung với hạ tầng GP (nếu có)
- Sử dụng công cụ Container Orchestration của Galaxy Play(GP) đang có sẵn mà không cần build mới
- Sử dụng các công cụ khác như DB, MinIO, RabbitMQ, ...
- Cần GP team đánh giá theo danh sách requirement các ứng dụng có dùng chung được hay không?
- Tiết kiệm tài nguyên
- Quản lý tập trung
- Cần quản lý và control chặt chẻ các services của ICK để không ảnh hưởng đến các service của GP và ngược lại
- Triển khai mới hoàn toàn theo danh sách VMs yêu cầu.
- Tách biệt hoàn toàn với các hệ thống GP đang chạy
- Tránh được sự ảnh hưởng của các các dịch vụ giữa ICK và GP
- Tài nguyên không được tối ưu
- Không quản lý tập trung
Lưu ý cho việc migration:
Các Phương án đề xuất bên dưới chỉ dành cho ICK application. Các hệ thống khác cho mục đích vận hành như Jenkins, các hệ thống khác như logging, monitoring được mặt định hiểu là dùng chung với hệ thống sẵn có của Galaxy Play (GP). Không cần phải triển khai thêm dành riêng cho ICKMigate Database & Application |
|
|
| |
Phương án 2 | Move Hocmai streaming server to GP's Rack cabinet |
|
|
|