ETCD là gì? Hướng dẫn cài đặt và khởi động ETCD chi tiết nhất

Đã kiểm duyệt nội dung
Đánh giá
ETCD là hệ thống lưu trữ key–value phân tán, nhất quán mạnh, được dùng để giữ cấu hình, trạng thái và dữ liệu quan trọng cho các hệ thống phân tán, đặc biệt trong môi trường cloud‑native và Kubernetes. Từ kinh nghiệm triển khai và vận hành hàng trăm cụm Kubernetes thực tế, ETCD sẽ giúp bạn giảm được rất nhiều rủi ro mất cấu hình hay gián đoạn toàn cluster. Trong bài viết này, mình sẽ giúp bạn hiểu rõ hơn về ETCD, từ khái niệm, các tính năng nổi bật đến các bước cài đặt và sử dụng chi tiết.
Những điểm chính
- Quan điểm của mình: Nếu bạn đang vận hành Kubernetes hoặc hệ thống phân tán cần lưu trạng thái tập trung, hiểu đúng vai trò của ETCD ngay từ đầu sẽ giúp thiết kế kiến trúc ổn định hơn và tránh được nhiều rủi ro mất cấu hình về sau.
- Khái niệm ETCD: Hiểu rõ ETCD là một hệ thống lưu trữ key-value phân tán và đáng tin cậy, giúp bạn nhận biết vai trò của nó trong việc lưu trữ trạng thái cho các hệ thống phức tạp như Kubernetes.
- Các tính năng nổi bật: Khám phá các tính năng nổi bật như cơ chế Watch và hiệu năng cao, giúp bạn tận dụng tối đa sức mạnh của ETCD để xây dựng các hệ thống phân tán hiệu quả.
- Đối tượng sử dụng: Nhận biết các đối tượng và trường hợp sử dụng chính, giúp bạn xác định liệu ETCD có phải là giải pháp phù hợp cho các hệ thống Kubernetes của mình hay không.
- Hướng dẫn cài đặt và cấu hình: Nắm vững quy trình cài đặt và cấu hình chi tiết, giúp bạn tự tin triển khai một cụm ETCD có tính sẵn sàng cao trong môi trường thực tế.
- Biết thêm Vietnix là nhà cung cấp Cloud Server mạnh mẽ, lý tưởng để triển khai các cụm ETCD đáng tin cậy.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến ETCD.

ETCD là gì?
ETCD là một hệ thống lưu trữ key-value phân tán, nhất quán và có độ tin cậy cao, được thiết kế để lưu trữ dữ liệu quan trọng cho các hệ thống phân tán hoặc các cụm máy chủ. ETCD được phát triển bằng ngôn ngữ lập trình Go, ban đầu do CoreOS tạo ra và hiện tại được quản lý bởi tổ chức Cloud Native Computing Foundation (CNCF). Tên gọi của công cụ này bắt nguồn từ việc kết hợp thư mục /etc (nơi hệ điều hành Linux lưu trữ các file cấu hình) và chữ d đại diện cho từ “distributed” (phân tán).

ETCD vận hành dựa trên giao thức Raft để đảm bảo việc đồng thuận giữa các node trong cụm, mang lại khả năng chịu lỗi cao ngay cả khi node leader gặp sự cố. Tất cả các thao tác đọc/ghi giá trị được thực hiện thông qua giao thức HTTP, dễ dàng tích hợp với công cụ như curl hoặc các thư viện hỗ trợ. ETCD còn cho phép tổ chức dữ liệu thành thư mục, hỗ trợ đăng ký theo dõi thay đổi trên từng key hoặc thư mục, cung cấp cơ chế TTL tự động xóa key khi hết thời gian và hỗ trợ xác thực SSL, chứng chỉ khách hàng nhằm tăng mức độ bảo mật.
Để vận hành tốt các hệ thống phân tán như etcd, doanh nghiệp cần một hạ tầng mạnh mẽ. Dịch vụ Enterprise Cloud Server cung cấp một cụm tài nguyên đám mây độc lập, cho phép tự do khởi tạo máy chủ ảo. Được trang bị CPU AMD EPYC, ổ cứng NVMe Enterprise cùng mức giá cố định minh bạch, giải pháp này mang lại hiệu năng tối đa mà không lo phát sinh phí ẩn.
Những tính năng nổi bật của ETCD
ETCD sở hữu nhiều tính năng nổi bật giúp tối ưu hóa việc lưu trữ, bảo mật và quản lý dữ liệu cho các hệ thống phân tán. Dưới đây là những ưu điểm chính:
- Giao diện đơn giản: ETCD cung cấp giao diện thao tác trực tiếp, cho phép đọc/ghi dữ liệu dễ dàng chỉ với các công cụ HTTP phổ biến như curl.
- Lưu trữ key-value: Hệ thống tổ chức dữ liệu dạng key-value, giúp truy xuất và quản lý thông tin nhanh chóng, linh hoạt.
- Quản lý dữ liệu dạng thư mục phân cấp: Cho phép lưu trữ key-value trong các thư mục tổ chức phân cấp giống như hệ thống file, thuận tiện cho việc quản lý và tìm kiếm.
- Giám sát thay đổi: Hỗ trợ theo dõi các key hoặc thư mục cụ thể để phát hiện và phản hồi khi có sự thay đổi giá trị dữ liệu.
- Xác thực SSL và chứng chỉ khách hàng tùy chọn: Tích hợp tính năng xác thực nâng cao thông qua chứng chỉ SSL và sử dụng chứng chỉ client để bảo mật kết nối.
- Hiệu năng ghi cao: Hệ thống đã được kiểm thử thực tế với khả năng xử lý hàng ngàn thao tác ghi mỗi giây cho mỗi instance, tối ưu cho các môi trường lớn.
- Hỗ trợ TTL cho key: Có thể đặt thời gian sống cho các key giúp tự động xóa key sau một khoảng thời gian nhất định, phù hợp cho các dữ liệu tạm thời.
- Phân tán chuẩn dựa trên Raft protocol: ETCD sử dụng giao thức Raft để đảm bảo hệ thống phân tán liên tục đồng bộ hóa thông tin, dữ liệu luôn nhất quán và ổn định ngay cả khi một hoặc nhiều node gặp sự cố.
Vai trò cốt lõi của ETCD trong Kubernetes
Trong kiến trúc phần mềm Kubernetes, ETCD được ví như “bộ não” kiểm soát toàn bộ trạng thái của cluster. Mọi thay đổi về cấu hình, thông tin Pods, Services hay Deployments đều được API Server ghi lại duy nhất vào ETCD.
Khi thiết lập cụm K8s, người quản trị sẽ có hai tùy chọn triển khai etcd để đảm bảo tính sẵn sàng cao:
- Mô hình cục bộ (Stacked etcd): Kubeadm tự động triển khai một ETCD chạy trực tiếp trên mỗi máy chủ Control Plane.
- Mô hình ETCD bên ngoài (External etcd): Các cá thể ETCD được cài đặt trên các máy chủ hoàn toàn độc lập với Control Plane. Kiến trúc này tuy tốn kém tài nguyên hơn nhưng lại gia tăng đáng kể tính chịu lỗi bảo mật.

Đối tượng nào cần sử dụng ETCD?
ETCD được thiết kế cho các hệ thống đòi hỏi sự nhất quán, độ tin cậy và khả năng mở rộng cao trong môi trường phân tán. Đối tượng sử dụng chính của ETCD bao gồm:
- Kỹ sư DevOps và SRE: Những người trực tiếp vận hành cụm Kubernetes cần ETCD để lưu trữ các tài nguyên như Pods, ConfigMaps và Secrets.
- Nhà phát triển hệ thống phân tán: Các hệ thống phân tán hiện đại cần lưu trữ và quản lý dữ liệu cấu hình hoặc thông tin trạng thái theo cách nhất quán, có khả năng chịu lỗi cao.
- Quản trị viên Kubernetes: Trong các nền tảng quản lý container và orchestration như Kubernetes, ETCD đóng vai trò là thành phần cốt lõi lưu trữ toàn bộ trạng thái của cluster Kubernetes, bao gồm thông tin về nodes, pods, secrets, cấu hình mạng và các tài nguyên quản trị.
- Hệ thống yêu cầu tính nhất quán dữ liệu: Các tổ chức, doanh nghiệp phát triển hạ tầng cloud native hoặc cần giải pháp lưu trữ key-value phân tán an toàn, minh bạch, dễ tích hợp với các dịch vụ microservices, cloud và DevOps.
Cách cài đặt ETCD cluster
Cài đặt thủ công trên Linux (Binary)
Phương pháp này cho phép bạn kiểm soát toàn bộ quá trình cài đặt và cấu hình etcd trực tiếp trên các máy chủ Linux.
Bước 1: Tải và cài đặt etcd trên tất cả các node
Đầu tiên bạn tải phiên bản etcd mong muốn từ trang phát hành chính thức, sau đó giải nén tệp và sao chép các tệp Binary etcd, etcdctl vào thư mục /usr/local/bin.
ETCD_VER=v3.5.0
GOOGLE_URL=https://storage.googleapis.com/etcd
DOWNLOAD_URL=${GOOGLE_URL}
# Tải và giải nén
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp --strip-components=1
# Sao chép các tệp thực thi vào thư mục hệ thống
cp /tmp/etcd /usr/local/bin/
cp /tmp/etcdctl /usr/local/bin/Mẹo từ chuyên gia: Ở bước này, bạn nên cố định biến ETCD_VER theo một phiên bản đã được kiểm thử trong môi trường staging thay vì luôn dùng bản mới nhất, và lưu lại checksum để kiểm tra file tải về nhằm tránh lỗi do gói bị hỏng.
Bước 2: Tạo chứng chỉ TLS
Để bảo mật giao tiếp giữa các thành viên trong cụm, bạn cần tạo các chứng chỉ TLS. Bạn có thể sử dụng các công cụ như cfssl để thực hiện việc này. Quá trình này bao gồm việc tạo một Certificate Authority (CA) và sau đó sử dụng CA này để ký các chứng chỉ cho từng thành viên trong cụm.
Bước 3: Cấu hình etcd và systemd service
Trên mỗi node, bạn tạo một tệp cấu hình (ví dụ: /etc/etcd/etcd.conf) để định nghĩa các biến môi trường cần thiết. Các biến quan trọng bao gồm ETCD_NAME, ETCD_LISTEN_PEER_URLS, ETCD_LISTEN_CLIENT_URLS, ETCD_INITIAL_CLUSTER và các đường dẫn đến tệp chứng chỉ.
Tiếp đó bạn tạo một tệp service cho systemd tại /lib/systemd/system/etcd.service để quản lý tiến trình etcd.
[Unit]
Description=etcd key-value store
After=network.target
[Service]
Type=notify
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=always
RestartSec=10s
LimitNOFILE=40000
[Install]
WantedBy=multi-user.targetLỗi thường gặp: Nhiều trường hợp etcd không khởi động được do đường dẫn EnvironmentFile hoặc quyền truy cập file chứng chỉ sai, vì vậy sau khi tạo service, bạn nên kiểm tra lại quyền thư mục /etc/etcd và dùng journalctl -u etcd -xe để xem chi tiết log nếu service báo failed.
Bước 4: Khởi động và kiểm tra cụm
Bạn tải lại cấu hình systemd, kích hoạt và khởi động dịch vụ etcd trên tất cả các node.
sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcdBạn sử dụng etcdctl để kiểm tra trạng thái của cụm và đảm bảo rằng tất cả các thành viên đã kết nối thành công.
etcdctl --endpoints https://<địa-chỉ-ip-node-1>:2379 --cacert /etc/etcd/ca.crt --cert /etc/etcd/server.crt --key /etc/etcd/server.key member listCài đặt bằng kubeadm
kubeadm là một công cụ giúp đơn giản hóa việc khởi tạo và quản lý cụm Kubernetes. Bạn có thể sử dụng kubeadm để thiết lập một cụm etcd bên ngoài (external etcd) có tính sẵn sàng cao.
Bước 1: Cài đặt cụm etcd
Đầu tiên bạn cũng thực hiện cài đặt một cụm etcd trên các máy chủ riêng biệt theo phương pháp thủ công đã mô tả ở trên. Bạn cần có ít nhất ba máy chủ đã cài đặt sẵn container runtime, kubelet và kubeadm. Các máy chủ này phải có thể giao tiếp với nhau qua các cổng TCP 2379 và 2380.
Bước 2: Tạo tệp cấu hình kubeadm
Tiếp đó bạn tạo một tệp YAML cấu hình cho kubeadm, ví dụ kubeadm-config.yaml. Trong tệp này hãy khai báo mục etcd với external để chỉ định rằng bạn đang sử dụng một cụm etcd bên ngoài.
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: stable
controlPlaneEndpoint: "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT"
etcd:
external:
endpoints:
- https://ETCD_0_IP:2379
- https://ETCD_1_IP:2379
- https://ETCD_2_IP:2379
caFile: /etc/kubernetes/pki/etcd/ca.crt
certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt
keyFile: /etc/kubernetes/pki/apiserver-etcd-client.keyBước 3: Tạo Certificate Authority (CA) và chứng chỉ
Bạn sử dụng kubeadm để tạo CA cho etcd và sau đó tạo các chứng chỉ cần thiết cho từng thành viên.
# Tạo CA
kubeadm init phase certs etcd-ca
# Tạo chứng chỉ cho từng thành viên
kubeadm init phase certs etcd-server --config=<tệp-cấu-hình-node>
kubeadm init phase certs etcd-peer --config=<tệp-cấu-hình-node>
kubeadm init phase certs etcd-healthcheck-client --config=<tệp-cấu-hình-node>
kubeadm init phase certs apiserver-etcd-client --config=<tệp-cấu-hình-node>Bạn sao chép các chứng chỉ và tệp cấu hình đã tạo đến các máy chủ etcd tương ứng.
Mẹo từ chuyên gia: Khi sync chứng chỉ giữa các node, hãy dùng rsync hoặc Ansible và lưu lại sơ đồ node – cert tương ứng. Việc nhầm lẫn cert giữa các node sẽ khiến cụm vẫn chạy được nhưng sinh lỗi lặt vặt khi thêm node mới hoặc xoay vòng chứng chỉ về sau.
Bước 4: Tạo manifest cho static pod
Trên mỗi máy chủ etcd, bạn chạy lệnh kubeadm để tạo manifest cho static pod của etcd. kubelet sẽ tự động phát hiện và khởi chạy etcd dưới dạng một static pod.
kubeadm init phase etcd local --config=<tệp-cấu-hình-node>Cuối cùng bạn sử dụng etcdctl cùng với các chứng chỉ đã tạo để kiểm tra trạng thái của cụm.
Cài đặt bằng etcdadm
etcdadm là một công cụ dòng lệnh giúp đơn giản hóa việc cài đặt và quản lý vòng đời của cụm etcd, lấy cảm hứng từ kubeadm.
Bước 1: Cài đặt etcdadm
Vì etcdadm không có sẵn bản dựng nhị phân, bạn cần phải build từ mã nguồn. Điều này yêu cầu bạn phải cài đặt golang trên máy.
# Clone mã nguồn
git clone https://github.com/kubernetes-sigs/etcdadm
# Build binary
cd etcdadm
make etcdadmSau đó, bạn sao chép tệp etcdadm đã build đến tất cả các node trong cụm.
Mẹo từ chuyên gia: Khi build, bạn nên cố định version bằng cách checkout đúng tag (ví dụ git checkout v0.x.x) thay vì build từ nhánh main, để tránh khác biệt cấu hình giữa các node nếu repo có thay đổi sau này.
Bước 2: Khởi tạo cụm trên node đầu tiên
Trên node đầu tiên, bạn chạy lệnh etcdadm init. Lệnh này sẽ tự động tải về etcd, tạo các chứng chỉ PKI cần thiết và khởi tạo thành viên đầu tiên của cụm.
sudo ./etcdadm initLệnh này sẽ cung cấp cho bạn một lệnh etcdadm join để sử dụng trên các node khác.
Bước 3: Sao chép chứng chỉ CA
Sau khi init thành công, etcdadm sẽ tạo ra các chứng chỉ trong /etc/etcd/pki/. Để các node khác có thể tham gia vào cụm, bạn cần sao chép tệp ca.crt và ca.key sang các node khác để chúng có thể tham gia vào cụm.
rsync -avR /etc/etcd/pki/ca.* root@<địa-chỉ-node-khác>:/Mẹo từ chuyên gia: Việc sao chép cả ca.key sang node khác giúp tiện triển khai nhưng cũng tăng rủi ro bảo mật. Trong môi trường production, bạn nên bảo vệ ca.key riêng biệt (hoặc dùng cơ chế phân phối cert an toàn hơn) và giới hạn SSH/rsync chỉ cho quản trị viên tin cậy.
Bước 4: Thêm các node khác vào cụm
Trên các node còn lại, sử dụng lệnh join và cung cấp địa chỉ của node đầu tiên để tham gia vào cụm:
./etcdadm join https://<địa-chỉ-node-đầu-tiên>:2379Bước 5: Kiểm tra cụm
Cuối cùng bạn sử dụng etcdctl để xác minh rằng tất cả các thành viên đã tham gia và cụm đang hoạt động ổn định.
./etcdctl --cert-file /etc/etcd/pki/etcdctl-etcd-client.crt --key-file /etc/etcd/pki/etcdctl-etcd-client.key --ca-file /etc/etcd/pki/ca.crt --endpoints https://<địa-chỉ-ip-node-1>:2379 member listVietnix – Nhà cung cấp nền tảng Enterprise Cloud lý tưởng cho các cụm ETCD
Vận hành cụm etcd và Kubernetes chuyên nghiệp đòi hỏi hạ tầng đám mây có tính sẵn sàng cực cao. Enterprise Cloud của Vietnix cung cấp giải pháp IaaS tối ưu với cơ chế tự động nhân bản dữ liệu (Replicas 3) trên các ổ đĩa khác nhau, đảm bảo an toàn lưu trữ tuyệt đối. Hệ thống tài nguyên độc lập này hỗ trợ triển khai Kubernetes dễ dàng, tích hợp công cụ API mượt mà. Nhờ khả năng tự động phục hồi khi gặp sự cố phần cứng, nền tảng giúp kiến trúc phân tán của bạn luôn vận hành liên tục, vững chắc.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
Câu hỏi thường gặp
ETCD cluster là gì?
ETCD cluster là một cụm gồm nhiều node ETCD liên kết với nhau theo kiến trúc phân tán, đảm bảo dữ liệu key-value được lưu trữ nhất quán, đồng bộ và có khả năng chịu lỗi cao. Một cluster ETCD hoạt động dựa trên cơ chế đồng thuận Raft, cho phép các node tự động bầu chọn leader, xử lý failover và cao sẵn sàng trong hạ tầng phân tán. Cluster thường được dùng trong các hệ thống lớn như Kubernetes để lưu trạng thái toàn bộ hệ thống, tăng độ tin cậy và khả năng phục hồi khi một hoặc nhiều node gặp sự cố.
ETCD golang là gì?
ETCD golang là cách gọi phổ biến nhằm nhấn mạnh ETCD được phát triển hoàn toàn bằng ngôn ngữ lập trình Go (Golang). Điều này mang lại hiệu năng cao, dễ tích hợp, tối ưu cho hệ thống phân tán và đơn giản hóa quá trình bảo trì, phát triển dự án mã nguồn mở ETCD. Golang cung cấp thư viện/SDK cho các ứng dụng muốn giao tiếp trực tiếp với ETCD thông qua API.
ETCD Docker là gì?
ETCD Docker chỉ việc sử dụng, triển khai hoặc đóng gói ETCD thành container Docker. Hình thức này cho phép bạn chạy ETCD dễ dàng trên mọi máy chủ cài Docker mà không cần build hay cài đặt chương trình phức tạp. Bạn có thể khởi tạo một instance ETCD nhanh chóng bằng lệnh docker run, thuận tiện tích hợp vào các hệ thống microservices, CI/CD cũng như môi trường cloud-native.
ETCD database là gì?
ETCD database là cách nói về vai trò của ETCD như một cơ sở dữ liệu chuyên lưu trữ các cặp key-value ở dạng phân tán, nhất quán mạnh và quản lý trạng thái cho hệ thống phân tán. ETCD đảm bảo mọi thay đổi được ghi nhận đúng trình tự, dữ liệu được đồng bộ trên toàn cluster và thích hợp dùng làm backend lưu cấu hình, trạng thái hệ thống lớn như Kubernetes hoặc các ứng dụng cloud-native.
ETCD là một hệ thống lưu trữ key-value phân tán mạnh mẽ, đóng vai trò nền tảng cho các hệ thống Cloud Native hiện đại. Với các tính năng nổi bật và giao diện HTTP đơn giản, ETCD là lựa chọn lý tưởng để quản lý dữ liệu cấu hình và trạng thái cho các hệ thống phân tán. Việc hiểu rõ nguyên lý hoạt động và quy trình cài đặt ETCD sẽ giúp các nhà phát triển và quản trị viên hệ thống xây dựng và vận hành các ứng dụng phức tạp một cách hiệu quả, đáng tin cậy và an toàn.
THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM
Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày














