1. Giới thiệu

Lần cập nhật gần đây nhất: ngày 6 tháng 1 năm 2021
Cloud DNS là gì?
Hãy xem trang chủ của chúng tôi.
Sản phẩm bạn sẽ tạo ra
Trong Lớp học lập trình này, bạn sẽ tạo một ManagedZone Cloud DNS và ResourceRecordSets có liên quan bằng cách sử dụng gcloud để quản lý việc phân giải tên cho một số phiên bản máy ảo.
Kiến thức bạn sẽ học được
Cách TẠO, ĐỌC, XOÁ và CẬP NHẬT từng ResourceRecordSet.
Bạn cần có
2. Thiết lập
Thiết lập dự án trên Google Cloud Platform
Đăng nhập vào gcloud
gcloud auth login
Tạo dự án
gcloud projects create my-codelab-project
Bật Cloud DNS API
gcloud services enable dns.googleapis.com
Có thể mất vài phút thì thay đổi này mới có hiệu lực
3. Tạo ManagedZone riêng tư
ManagedZone chứa ResourceRecordSets.
Ghi lại tên miền mà bạn muốn thêm bản ghi DNS. Trong ví dụ này, chúng ta sẽ sử dụng "my-domain.com" và giả định rằng phiên bản VM của bạn nằm trên mạng mặc định.
gcloud dns managed-zones create my-zone \
--description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
--dns-name=my-domain.com. \
--networks=default \
--visibility=private
4. Quản lý ResourceRecordSets
Khi kết thúc phần này, các yêu cầu DNS qua mạng riêng ảo cho miền của bạn sẽ phân giải thành địa chỉ IP của máy ảo.
Ví dụ: nếu địa chỉ IP của VM là "1.2.3.4" và bạn muốn "miencuatoi.com" phân giải thành địa chỉ IP đó, thì bạn phải tạo một "bản ghi A".
TẠO bản ghi A
gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
- Đối số vị trí "my-domain.com." , còn gọi là dnsName, là tên mà chúng ta muốn xác định việc phân giải DNS.
- –type: biểu thị loại bản ghi DNS mà chúng ta đang cố gắng tạo.
- –ttl: cho biết thời gian tồn tại của bản ghi này.
- –rrdatas: chứa câu trả lời thực tế cho truy vấn.
- –zone: bắt buộc để chỉ định ManagedZone mà bản ghi này sẽ được tạo.
Đọc thêm về các khái niệm DNS tại đây.
Sau khi tạo bản ghi A, bạn có thể kiểm tra quy trình phân giải DNS.
SSH vào máy của bạn. Trong ví dụ này, chúng ta sẽ sử dụng một phiên bản VM có tên "dns-codelab" trong "us-central1-a"
gcloud compute ssh codelab --zone=us-central1-a
Cài đặt dnsutils để bạn có thể dùng lệnh "dig"
sudo apt install dnsutils
truy vấn miền của bạn
dig my-domain.com.
thao tác này sẽ tạo ra kết quả tương tự như
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19979
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;my-domain.com. IN A
;; ANSWER SECTION:
my-domain.com. 60 IN A 1.2.3.4
...
TẠO, PATCH và GET bản ghi CNAME
Bây giờ bạn đã liên kết my-domain.com với 1.2.3.4, có thể bạn sẽ muốn đảm bảo rằng www.my-domain.com cũng phân giải thành 1.2.3.4. Hệ thống không tự động tạo bản ghi cho tiền tố "www".
Nếu bạn truy vấn www.my-domain.com.
dig www.my-domain.com.
bạn sẽ nhận được kết quả tương tự như
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...
cho biết rằng không có bản ghi DNS nào cho miền đó
Thay vì tạo một bản ghi A khác, chúng ta nên tạo một bản ghi CNAME là con trỏ đến một bản ghi khác. Điều này sẽ giúp chúng ta không phải thay đổi cả hai bản ghi trong trường hợp muốn sử dụng một địa chỉ IP khác.
thoát khỏi phiên bản máy ảo
exit
Tạo bản ghi CNAME
gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"
Giờ đây, sau khi tạo bản ghi CNAME, bạn có thể kiểm tra quy trình phân giải DNS.
SSH vào máy của bạn một lần nữa
gcloud compute ssh codelab --zone=us-central1-a
truy vấn miền của bạn
dig www.my-domain.com.
bạn sẽ nhận được kết quả tương tự như
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...
Rất tiếc! Có vẻ như đã xảy ra lỗi chính tả khi chúng tôi tạo bản ghi CNAME tại cờ "–rrdatas". Thay vì xoá và tạo lại bản ghi, chúng ta có thể vá lỗi thay đổi không chính xác.
thoát khỏi phiên bản máy ảo
exit
Vá bản ghi CNAME
gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"
Xin lưu ý rằng chúng ta có thể bỏ qua cờ "–ttl" vì chúng ta không thay đổi cờ này, nhưng phải thêm tất cả các cờ khác vì chúng là một phần của mã nhận dạng duy nhất trên toàn cầu của ResourceRecordSet.
Chúng ta cũng có thể xác minh rằng bản ghi đúng như mong đợi bằng cách sử dụng gcloud
gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"
thao tác này sẽ tạo ra kết quả
NAME TYPE TTL DATA
www.my-domain.com. CNAME 60 "my-domain.com."
xác minh rằng bản ghi CNAME đang phân giải chính xác
gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.
bạn sẽ nhận được kết quả tương tự như
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7471
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;www.my-domain.com. IN A
;; ANSWER SECTION:
www.my-domain.com. 60 IN CNAME my-domain.com..
...
XOÁ để dọn dẹp
Trước khi bạn có thể xoá một ManagedZone, trước tiên, bạn phải xoá tất cả ResourceRecordSet trong ManagedZone (ngoại trừ các bản ghi NS và SOA được tạo tự động và phải luôn tồn tại trong ManagedZone).
thoát khỏi phiên bản máy ảo
exit
Xoá bản ghi CNAME
gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"
Xoá bản ghi A
gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"
Xoá ManagedZone
gcloud dns managed-zones delete "my-zone"
5. Xin chúc mừng
Xin chúc mừng, bạn đã học được cách quản lý ResourceRecordSets!