Apache Zookeeper là dịch vụ mã nguồn mở và miễn phí dành cho các hệ thống phân tán giúp bạn quản lý một tập hợp lớn các máy chủ. Đây là dịch vụ tập trung được sử dụng để duy trì thông tin cấu hình, đặt tên và dịch vụ nhóm. Nó được viết bằng Java và cho phép các nhà phát triển tập trung vào việc xây dựng các tính năng phần mềm mà không phải lo lắng về bản chất phân tán của ứng dụng. Apache ZooKeeper thường được sử dụng nhất trong các khối lượng công việc "đọc là chủ yếu" trong đó đọc phổ biến hơn nhiều so với ghi. Nó đi kèm với một bộ tính năng phong phú bao gồm Đồng bộ hóa, Tin nhắn có thứ tự, Tuần tự hóa, Độ tin cậy, Tính nguyên tử, Xử lý nhanh và nhiều tính năng khác. Nó có cơ chế khóa và đồng bộ hóa giúp bạn tự động khôi phục lỗi trong khi kết nối các ứng dụng phân tán khác. Dự án Zookeeper là một trong những dự án thành công nhất từ nền tảng Apache. Nhiều công ty đã áp dụng Zookeeper để tạo ra các hệ thống phân tán có tính khả dụng cao ở quy mô lớn.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thiết lập cụm Apache Zookeeper một nút trên máy chủ Debian 10.
Sau khi máy chủ của bạn được cập nhật, hãy khởi động lại để triển khai các thay đổi.
Sau khi cài đặt Java, hãy xác minh phiên bản Java đã cài đặt bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Sau khi hoàn tất, bạn có thể tiến hành tạo người dùng hệ thống cho Zookeeper.
Trước tiên, hãy chạy lệnh sau để tạo một người dùng zookeeper có thư mục home:
Tiếp theo, hãy đặt shell mặc định cho người dùng zookeeper bằng lệnh sau:
Tiếp theo, hãy đặt mật khẩu cho người dùng zookeeper bằng lệnh sau:
Tiếp theo, hãy thêm người dùng zookeeper vào nhóm sudo:
Lúc này, bạn đã tạo và định cấu hình người dùng Zookeeper. Bây giờ, bạn có thể tiến hành tải xuống Zookeeper.
Để tải xuống, hãy thay đổi thư mục thành /opt và chạy lệnh sau:
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Tiếp theo, đổi tên thư mục đã giải nén thành zookeeper và cấp quyền thích hợp:
Tiếp theo, bạn sẽ cần tạo một thư mục dữ liệu cho Zookeeper để lưu trữ tất cả dữ liệu cấu hình và trạng thái. Bạn có thể tạo trên hệ thống tệp cục bộ hoặc hệ thống tệp từ xa tùy theo nhu cầu của mình.
Bạn có thể tạo thư mục dữ liệu bằng lệnh sau:
Tiếp theo, thay đổi quyền sở hữu thư mục dữ liệu thành người dùng zookeeper:
Lúc này, bạn đã tải xuống Zookeeper và tạo thư mục dữ liệu cho nó. Bây giờ bạn có thể tiến hành cấu hình Zookeeper.
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất.
Trong đó:
Tại thời điểm này, bạn đã cấu hình Zookeeper. Bây giờ bạn có thể sẵn sàng khởi động máy chủ Zookeeper.
Bạn sẽ nhận được kết quả sau:
Tiếp theo, bạn có thể kết nối với máy chủ Zookeeper trên cổng 2181 bằng lệnh sau:
Sau khi kết nối, bạn sẽ thấy kết quả sau:
Tiếp theo, chạy lệnh help để có danh sách các lệnh mà bạn có thể thực thi từ máy khách.
Bạn sẽ thấy đầu ra sau:
Sau khi kiểm tra, thoát khỏi phiên máy khách bằng lệnh quit:
Bây giờ bạn có thể dừng dịch vụ Zookeeper bằng lệnh sau:
Bạn sẽ thấy thông báo sau lệnh:
Tại thời điểm này, bạn đã khởi động và kiểm tra thành công máy chủ Zookeeper.
Bạn có thể tạo tệp này bằng lệnh sau:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tải lại daemon systemd bằng lệnh sau:
Tiếp theo, khởi động dịch vụ Zookeeper và cho phép nó khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Bây giờ bạn có thể xác minh trạng thái của Zookeeper bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Bây giờ, bạn có thể dễ dàng quản lý dịch vụ Zookeeper bằng systemd.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thiết lập cụm Apache Zookeeper một nút trên máy chủ Debian 10.
Điều kiện tiên quyết
- Máy chủ chạy Debian 10 với 2 GB RAM.
- Mật khẩu gốc được cấu hình trên máy chủ của bạn.
Bắt đầu
Trước khi bắt đầu, bạn nên cập nhật máy chủ của mình lên phiên bản mới nhất. Bạn có thể cập nhật bằng lệnh sau:
Mã:
apt-get update -y
apt-get upgrade -y
Cài đặt Java
Apache Zookeeper được viết bằng ngôn ngữ Java. Vì vậy, bạn sẽ cần cài đặt Java trong hệ thống của mình. Theo mặc định, phiên bản Java mới nhất có sẵn trong kho lưu trữ mặc định của Debian 10. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
apt-get install default-jdk -y
Mã:
java --version
Mã:
openjdk 11.0.5 2019-10-15Môi trường chạy thời gian OpenJDK (bản dựng 11.0.5+10-post-Debian-1deb10u1)Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 11.0.5+10-post-Debian-1deb10u1, chế độ hỗn hợp, chia sẻ)
Tạo người dùng hệ thống cho Zookeeper
Bạn nên tạo một người dùng chuyên dụng để chạy dịch vụ Zookeeper. Điều này sẽ cải thiện tính bảo mật và khả năng quản lý của bạn.Trước tiên, hãy chạy lệnh sau để tạo một người dùng zookeeper có thư mục home:
Mã:
useradd zookeeper -m
Mã:
usermod --shell /bin/bash zookeeper
Mã:
passwd zookeeper
Mã:
usermod -aG sudo zookeeper
Tải xuống Zookeeper
Trước tiên, bạn sẽ cần tải xuống phiên bản mới nhất của Apache Zookeeper từ trang web chính thức của nó. Tại thời điểm viết bài viết này, phiên bản mới nhất của Apache Zookeeper là 3.5.6.Để tải xuống, hãy thay đổi thư mục thành /opt và chạy lệnh sau:
Mã:
cd /opt
wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz
Mã:
tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
Mã:
mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper
Bạn có thể tạo thư mục dữ liệu bằng lệnh sau:
Mã:
mkdir -p /data/zookeeper
Mã:
chown -R zookeeper:zookeeper /data/zookeeper
Cấu hình Zookeeper
Tất cả các tệp cấu hình của Zookeeper đều nằm trong thư mục /opt/zookeeper/conf/. Bạn có thể tạo tệp cấu hình Zookeeper bên trong thư mục /opt/zookeeper/conf/ bằng lệnh sau:
Mã:
nano /opt/zookeeper/conf/zoo.cfg
Mã:
tickTime=2500dataDir=/data/zookeeperclientPort=2181maxClientCnxns=80
Trong đó:
- tickTime : Tùy chọn này đặt độ dài của một tích tắc tính bằng mili giây.
- dataDir : Chỉ định thư mục dữ liệu để lưu trữ dữ liệu Zookeeper.
- clientPort : Chỉ định cổng được sử dụng để lắng nghe kết nối của máy khách.
- maxClientCnxns : Được sử dụng để giới hạn số lượng máy khách tối đa kết nối.
Tại thời điểm này, bạn đã cấu hình Zookeeper. Bây giờ bạn có thể sẵn sàng khởi động máy chủ Zookeeper.
Khởi động và kiểm tra máy chủ Zookeeper
Bạn có thể khởi động máy chủ Zookeeper bằng lệnh sau:
Mã:
/opt/zookeeper/bin/zkServer.sh start
Mã:
/usr/bin/javaZooKeeper JMX được bật theo mặc địnhSử dụng cấu hình: /opt/zookeeper/bin/../conf/zoo.cfgĐang khởi động zookeeper ... ĐÃ BẮT ĐẦU
Mã:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
Mã:
[zk: 127.0.0.1:2181(ĐÃ KẾT NỐI) 0]
Mã:
[zk: 127.0.0.1:2181(ĐÃ KẾT NỐI) 0] help
Mã:
ZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c] [-t ttl] path [data] [acl] delete [-v version] path deleteall path delquota [-n|-b] path get [-s] [-w] path getAcl [-s] path history listquota path ls [-s] [-w] [-R] path ls2 path [watch] printwatches on|off quit reconfig [-s] [-v phiên bản] [[-đường dẫn tệp] | [-thành viên serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*] redo cmdno removewatches path [-c|-d|-a] [-l] rmr path set [-s] [-v version] path data setAcl [-s] [-v version] [-R] path acl setquota -n|-b val path stat [-w] path sync path
Mã:
[zk: 127.0.0.1:2181(CONNECTED) 0] quit
Mã:
/opt/zookeeper/bin/zkServer.sh stop
Mã:
/usr/bin/javaZooKeeper JMX được bật theo mặc địnhSử dụng cấu hình: /opt/zookeeper/bin/../conf/zoo.cfgDừng zookeeper ... ĐÃ DỪNG
Tạo Tệp Dịch vụ Systemd cho Zookeeper
Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ Zookeeper bằng systemd.Bạn có thể tạo tệp này bằng lệnh sau:
Mã:
nano /etc/systemd/system/zookeeper.service
Mã:
[Unit]Mô tả=Zookeeper DaemonDocumentation=http://zookeeper.apache.orgRequires=network.targetAfter=network.target[Service]Type=forkingWorkingDirectory=/opt/zookeeperUser=zookeeperGroup=zookeeperExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfgExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfgExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfgTimeoutSec=30Restart=on-failure[Install]WantedBy=default.target
Mã:
systemctl daemon-reload
Mã:
systemctl start zookeeper
systemctl enable zookeeper
Mã:
systemctl status zookeeper
Mã:
? zookeeper.service - Zookeeper Daemon Đã tải: đã tải (/etc/systemd/system/zookeeper.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2019-12-29 15:12:39 UTC; 8 phút trước Tài liệu: http://zookeeper.apache.org Tiến trình: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS) PID chính: 9245 (java) Nhiệm vụ: 29 (giới hạn: 2359) Bộ nhớ: 49,7M CGroup: /system.slice/zookeeper.service ??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper.29/12 15:12:38 debian10 systemd[1]: Đang khởi động Zookeeper Daemon...29/12 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java29/12 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX được bật theo mặc định29/12 15:12:38 debian10 zkServer.sh[9229]: Sử dụng config: /opt/zookeeper/conf/zoo.cfg29/12 15:12:39 debian10 zkServer.sh[9229]: Đang khởi động zookeeper ... ĐÃ BẮT ĐẦU29/12 15:12:39 debian10 systemd[1]: Đã khởi động Zookeeper Daemon.