Cách cài đặt Apache ZooKeeper trên Debian 10

theanh

Administrator
Nhân viên
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.

Đ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
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.

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
Sau khi cài đặt Java, hãy xác minh phiên bản Java đã cài đặt bằng lệnh sau:
Mã:
java --version
Bạn sẽ nhận được kết quả sau:
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ẻ)
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.

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
Tiếp theo, hãy đặt shell mặc định cho người dùng zookeeper bằng lệnh sau:
Mã:
usermod --shell /bin/bash zookeeper
Tiếp theo, hãy đặt mật khẩu cho người dùng zookeeper bằng lệnh sau:
Mã:
passwd zookeeper
Tiếp theo, hãy thêm người dùng zookeeper vào nhóm sudo:
Mã:
usermod -aG sudo zookeeper
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 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
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:
Mã:
tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
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:
Mã:
mv apache-zookeeper-3.5.6-bin zookeeper
 chown -R zookeeper:zookeeper /opt/zookeeper
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:
Mã:
mkdir -p /data/zookeeper
Tiếp theo, thay đổi quyền sở hữu thư mục dữ liệu thành người dùng zookeeper:
Mã:
chown -R zookeeper:zookeeper /data/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.

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
Thêm các dòng sau:
Mã:
tickTime=2500dataDir=/data/zookeeperclientPort=2181maxClientCnxns=80
Lưu và đóng tệp khi bạn hoàn tất.

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.
Lưu ý: Các tham số trên dành cho mục đích phát triển và thử nghiệm. Bạn có thể thay đổi chúng theo nhu cầu của mình.

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
Bạn sẽ nhận được kết quả sau:
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
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:
Mã:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
Sau khi kết nối, bạn sẽ thấy kết quả sau:
Mã:
[zk: 127.0.0.1:2181(ĐÃ KẾT NỐI) 0]
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.
Mã:
[zk: 127.0.0.1:2181(ĐÃ KẾT NỐI) 0] help
Bạn sẽ thấy đầu ra sau:
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
Sau khi kiểm tra, thoát khỏi phiên máy khách bằng lệnh quit:
Mã:
[zk: 127.0.0.1:2181(CONNECTED) 0] quit
Bây giờ bạn có thể dừng dịch vụ Zookeeper bằng lệnh sau:
Mã:
/opt/zookeeper/bin/zkServer.sh stop
Bạn sẽ thấy thông báo sau lệnh:
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ại thời điểm này, bạn đã khởi động và kiểm tra thành công máy chủ Zookeeper.

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
Thêm các dòng sau:
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
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:
Mã:
systemctl daemon-reload
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:
Mã:
systemctl start zookeeper
 systemctl enable zookeeper
Bây giờ bạn có thể xác minh trạng thái của Zookeeper bằng lệnh sau:
Mã:
systemctl status zookeeper
Bạn sẽ thấy đầu ra sau:
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.
Bây giờ, bạn có thể dễ dàng quản lý dịch vụ Zookeeper bằng systemd.

Kết luận​

Xin chúc mừng! Bạn đã cài đặt và cấu hình thành công cụm Zookeeper một nút trên máy chủ Debian 10. Thiết lập này rất hữu ích cho môi trường phát triển và thử nghiệm. Tôi hy vọng bạn đã có đủ kiến thức để thiết lập cụm Zookeeper một nút. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên