Hướng dẫn cài đặt ETCD Cluster trên 3 máy (node)
Giới thiệu về etcd
etcd là một kho lưu trữ giá trị-khóa phân tán, đáng tin cậy, được sử dụng để lưu trữ dữ liệu quan trọng của các hệ thống phân tán. Nó đặc biệt hữu ích cho việc quản lý cấu hình, phát hiện dịch vụ và điều phối các ứng dụng phân tán. etcd được viết bằng Go và sử dụng thuật toán đồng thuận Raft để đảm bảo tính nhất quán và khả dụng cao.
Giới thiệu về etcd cluster
Một etcd cluster bao gồm nhiều nút etcd hoạt động cùng nhau để cung cấp tính sẵn sàng và khả năng chịu lỗi cao. Dữ liệu được sao chép trên tất cả các nút trong cluster, đảm bảo rằng nếu một nút gặp sự cố, các nút khác vẫn có thể tiếp tục hoạt động. etcd cluster sử dụng thuật toán Raft để đạt được sự đồng thuận về trạng thái của dữ liệu, đảm bảo rằng tất cả các nút đều có cùng một bản sao dữ liệu.
Mô tả hệ thống định dựng như sau:
- Máy1: 192.168.218.129
- Máy2: 192.168.218.85
- Máy3: 192.168.218.86
- OS: rocky linux 8
1. Cài đặt etcd trên cả 3 máy chủ
Cập nhật hệ thống và cài đặt etcd:
sudo dnf install -y etcd
2. Cấu hình etcd trên từng máy chủ
Chỉnh sửa file cấu hình /etc/systemd/system/etcd.service trên từng máy chủ
[Unit] Description="ETCD Service" Documentation=https://github.com/etcd-io/etcd After=network.target [Service] Type=notify User=etcd Group=etcd ProtectSystem=full ProtectHome=read-only PrivateTmp=yes PrivateDevices=yes SecureBits=keep-caps AmbientCapabilities=CAP_IPC_LOCK NoNewPrivileges=yes EnvironmentFile=/etc/etcd/etcd.conf ExecStart=/usr/local/bin/etcd --snapshot-count=500000 Restart=always RestartSec=10s LimitNOFILE=40000 [Install] WantedBy=multi-user.target
Sau khi lưu file, chạy lệnh sau để cập nhật:
systemctl daemon-reload
Chỉnh sửa file cấu hình /etc/etcd/etcd.conf trên từng máy chủ
Mỗi máy cần chỉnh sửa hostname và địa chỉ IP tương ứng.
Máy 1 (192.168.218.129)
ETCD_NAME="node1" ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://192.168.218.129:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.218.129:2379,http://127.0.0.1:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.218.129:2380" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.218.129:2379" ETCD_INITIAL_CLUSTER="node1=http://192.168.218.129:2380,node2=http://192.168.218.85:2380,node3=http://192.168.218.86:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
Máy 2 (192.168.218.85)
ETCD_NAME="node2" ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://192.168.218.85:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.218.85:2379,http://127.0.0.1:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.218.85:2380" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.218.85:2379" ETCD_INITIAL_CLUSTER="node1=http://192.168.218.129:2380,node2=http://192.168.218.85:2380,node3=http://192.168.218.86:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
Máy 3 (192.168.218.86)
ETCD_NAME="node3" ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://192.168.218.86:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.218.86:2379,http://127.0.0.1:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.218.86:2380" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.218.86:2379" ETCD_INITIAL_CLUSTER="node1=http://192.168.218.129:2380,node2=http://192.168.218.85:2380,node3=http://192.168.218.86:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
3. Cấu hình Firewall (nếu bật firewalld)
sudo firewall-cmd --add-port=2379/tcp --permanent sudo firewall-cmd --add-port=2380/tcp --permanent sudo firewall-cmd --reload
4. Khởi động etcd trên cả 3 máy chủ
sudo systemctl daemon-reload sudo systemctl enable --now etcd sudo systemctl status etcd
5. Kiểm tra cluster
Xem trạng thái cluster
Chạy lệnh sau trên một trong các máy:
etcdctl --endpoints="http://192.168.218.129:2379,http://192.168.218.85:2379,http://192.168.218.86:2379" member list
Thêm một key để kiểm tra
etcdctl --endpoints="http://192.168.218.129:2379" put foo "hello etcd"
Lấy lại giá trị của key
etcdctl --endpoints="http://192.168.218.86:2379" get foo
Nếu lệnh trên trả về “hello etcd”, tức là cluster đã hoạt động tốt.
Cấu hình này giúp bạn có một etcd cluster 3 nodes chạy trên Rocky Linux 8, đảm bảo high availability và có thể sử dụng làm backend cho các ứng dụng như Apache APISIX. 🚀