7.1 Nghiên cứu mạng overlay
Mạng overlay
— là một mạng phân tán Docker, cho phép các container chạy trên các host khác nhau giao tiếp với nhau. Nó thường được sử dụng trong ngữ cảnh orchestration container, chẳng hạn như Docker Swarm hoặc Kubernetes, để đảm bảo kết nối giữa các container chạy trên những node khác nhau. Trong bài giảng này, chúng ta sẽ thảo luận cách tạo và sử dụng mạng overlay
, cũng như các ví dụ về việc sử dụng nó.
Mạng overlay
tạo ra một mạng phân tán ảo trên các mạng hiện có, kết hợp nhiều host thành không gian mạng duy nhất. Điều này cho phép các container giao tiếp như thể chúng đang nằm trong cùng một mạng cục bộ, bất kể vị trí vật lý của các host.
Lợi ích của việc sử dụng mạng overlay
:
- Kết nối giữa các container trên các host khác nhau: cung cấp sự tương tác mạng giữa các container chạy trên các node khác nhau.
- Isolation: cho phép tạo ra các không gian mạng cách ly cho từng ứng dụng.
- Khả năng mở rộng: hỗ trợ thêm và xóa các node một cách động mà không bị gián đoạn hoạt động.
7.2 Tạo mạng overlay
Để tạo mạng overlay
, trước hết cần khởi tạo cluster Docker Swarm
. Việc này sẽ tạo một node quản lý (manager) và cho phép tạo các network phân tán.
Bước 1: Khởi tạo Docker Swarm
Chạy lệnh trên máy chủ sẽ đóng vai trò là manager của cluster. Lệnh này sẽ khởi tạo cluster Swarm
và hiển thị lệnh để thêm các node khác vào cluster.
docker swarm init
Bước 2: Thêm các worker node vào cluster
Trên các máy chủ khác, chạy lệnh mà docker swarm init
cung cấp để thêm chúng vào cluster. Ví dụ lệnh:
docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377
Bước 3: Tạo mạng overlay
Sau khi khởi tạo cluster, tạo mạng overlay
bằng cách chạy lệnh:
docker network create -d overlay my_overlay_network
Bước 4: Kiểm tra network
Để kiểm tra việc tạo network thành công, chạy lệnh docker network ls
, lệnh này sẽ hiển thị danh sách tất cả các network, bao gồm cả network overlay
mới:
docker network ls
Ví dụ kết quả:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5 my_overlay_network overlay swarm
Bây giờ mạng my_overlay_network
đã sẵn sàng để sử dụng cho các ứng dụng phân tán.
7.3 Sử dụng mạng overlay
Bây giờ, khi mạng đã được tạo, bạn có thể chạy các container và dịch vụ kết nối với mạng này.
Ví dụ sử dụng mạng overlay
cho dịch vụ
Trong Docker Swarm
, bạn có thể sử dụng dịch vụ để quản lý các container. Hãy tạo một số dịch vụ được kết nối với mạng overlay
.
Bước 1: Tạo dịch vụ web server
docker service create --name webserver --network my_overlay_network -p 8080:80 nginx
Lệnh này tạo dịch vụ webserver
, kết nối với mạng my_overlay_network
. Web server sẽ có thể truy cập tại địa chỉ http://localhost:8080.
Bước 2: Tạo dịch vụ cơ sở dữ liệu
docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres
Ở đây tạo dịch vụ database
, kết nối vào cùng mạng với thiết lập biến môi trường POSTGRES_PASSWORD
.
Bước 3: Kiểm tra kết nối giữa các dịch vụ
Chạy một container tạm thời để kiểm tra kết nối giữa các dịch vụ:
docker run -it --network my_overlay_network busybox
Bên trong container, sử dụng các lệnh ping
để kiểm tra kết nối với web server và cơ sở dữ liệu:
ping webserver
ping database
Nếu thiết lập chính xác, lệnh ping sẽ hiển thị kết nối thành công, xác nhận rằng các container có thể tương tác qua hostname.
Bước 4: Xem trạng thái dịch vụ
Sử dụng lệnh docker service ls
, để kiểm tra trạng thái của các dịch vụ đã tạo:
docker service ls
Kết quả mong đợi sẽ hiển thị thông tin về các dịch vụ đang chạy, trạng thái và số lượng bản sao.
Lưu ý: Mạng overlay
cho phép các container trên các host khác nhau trao đổi dữ liệu, nếu chúng được kết nối vào cùng một Swarm
cluster.
7.4 Ví dụ sử dụng mạng overlay
trong Docker Compose
Docker Compose
giúp đơn giản hóa việc quản lý các ứng dụng đa container và mạng. Bạn có thể định nghĩa một mạng overlay và sử dụng nó để kết nối giữa các container trong file docker-compose.yml
.
Ví dụ file docker-compose.yml
:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my_overlay_network
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: matkhauculatuyetmat
networks:
- my_overlay_network
networks:
my_overlay_network:
driver: overlay
attachable: true
Chạy Docker Compose
:
docker stack deploy -c docker-compose.yml mystack
Lệnh này sẽ triển khai stack sử dụng file docker-compose.yml
và tạo các dịch vụ được kết nối tới mạng my_overlay_network
.
Lời khuyên thực tế:
- Giám sát mạng: Sử dụng các công cụ giám sát Docker Swarm như Docker Dashboard hoặc Prometheus để theo dõi trạng thái mạng và tương tác giữa các container.
- Quản lý khả năng mở rộng: Mạng Overlay hỗ trợ thêm và xóa node một cách linh hoạt. Đảm bảo cấu hình đủ tài nguyên mạng để mở rộng ứng dụng.
- Sao lưu cấu hình: Thường xuyên lưu lại các cấu hình mạng và stack để khôi phục nhanh chóng trong trường hợp xảy ra sự cố.
GO TO FULL VERSION