Cách thiết lập Apache ZooKeeper Cluster trên Ubuntu 18.04 LTS

theanh

Administrator
Nhân viên
Zookeeper là một dịch vụ tập trung để quản lý thông tin cấu hình, đặt tên, đồng bộ hóa phân tán và cung cấp các dịch vụ nhóm được phát hành dưới dạng phần mềm nguồn mở. Nó được viết bằng ngôn ngữ Java cho phép bạn tập trung vào logic ứng dụng cốt lõi mà không phải lo lắng về bản chất phân tán của ứng dụng. Kiến trúc của ZooKeeper hỗ trợ tính khả dụng cao thông qua các dịch vụ dự phòng. Zookeeper cho phép các quy trình phân tán phối hợp với nhau thông qua một không gian tên phân cấp chung của các thanh ghi dữ liệu. Zookeeper cũng cung cấp cho khách hàng thông lượng cao, tính khả dụng cao, độ trễ thấp và quyền truy cập được kiểm soát chặt chẽ vào Znode. Zookeeper được thiết kế riêng để lưu trữ thông tin trạng thái, cấu hình, thông tin vị trí, v.v. ZooKeeper cung cấp nhiều tính năng như hệ thống đáng tin cậy, kiến trúc đơn giản, xử lý nhanh, khả năng mở rộng và nhiều hơn nữa.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thiết lập Cụm Apache ZooKeeper một nút duy nhất trên Ubuntu 18.04.

Yêu cầu​

  • Máy chủ chạy Ubuntu 18.04.
  • Mật khẩu gốc được thiết lập trên máy chủ của bạn.

Bắt đầu​

Trước tiên, bạn sẽ cần cập nhật hệ thống của mình lên phiên bản mới nhất. Bạn có thể thực hiện việc này bằng cách chạy lệnh sau:
Mã:
apt-get update -y
 apt-get upgrade -y
Sau khi hệ thống được cập nhật, hãy khởi động lại hệ thống của bạn để áp dụng tất cả các thay đổi.

Cài đặt Java​

Zookeeper được viết bằng Java. Vì vậy, bạn sẽ cần cài đặt Java vào hệ thống của mình. Theo mặc định, phiên bản Java mới nhất không có trong kho lưu trữ mặc định của Ubuntu 18.04. Vì vậy, hãy thêm kho lưu trữ Java bằng lệnh sau:
Mã:
add-apt-repository ppa:linuxuprising/java
Tiếp theo, hãy cập nhật kho lưu trữ và cài đặt Java bằng lệnh sau:
Mã:
apt-get update -y
 apt-get install oracle-java11-set-default
Sau khi Java đã được cài đặt, bạn có thể kiểm tra phiên bản Java bằng lệnh sau:
Mã:
java --version
Bạn sẽ thấy đầu ra sau:
Mã:
java 11.0.2 2018-10-16 LTSJava(TM) SE Runtime Environment 18.9 (bản dựng 11.0.2+7-LTS)Java HotSpot(TM) 64-Bit Server VM 18.9 (bản dựng 11.0.2+7-LTS, chế độ hỗn hợp)
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Tạo Người dùng ZooKeeper​

Tiếp theo, bạn sẽ cần tạo một người dùng zookeeper để chạy dịch vụ zookeeper.

Đầu tiên, tạo một người dùng zookeeper bằng lệnh sau:
Mã:
useradd zookeeper -m
 usermod --shell /bin/bash zookeeper
Tiếp theo, đặt mật khẩu bằng lệnh sau:
Mã:
passwd zookeeper
Tiếp theo, thêm người dùng zookeeper vào nhóm sudo để có thể chạy lệnh ở chế độ đặc quyền:
Mã:
usermod -aG sudo zookeeper
Sau khi tạo người dùng, bạn có thể tiến hành cài đặt ZooKeeper.

Cài đặt ZooKeeper​

ZooKeeper lưu trữ tất cả dữ liệu cấu hình và trạng thái vào đĩa. Vì vậy, bạn sẽ cần tạo cấu trúc thư mục cho ZooKeeper bằng lệnh sau:
Mã:
mkdir -p /data/zookeeper
Tiếp theo, cấp quyền sở hữu hợp lệ cho thư mục /data bằng lệnh sau:
Mã:
chown -R zookeeper:zookeeper /data/zookeeper
Tiếp theo, thay đổi thư mục thành /opt và tải xuống phiên bản mới nhất của ZooKeeper bằng lệnh sau:
Mã:
cd /opt
 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
Tiếp theo, giải nén tệp đã tải xuống bằng lệnh sau:
Mã:
tar -xvzf zookeeper-3.4.9.tar.gz
Tiếp theo, đổi tên tệp nhị phân đã giải nén bằng lệnh sau:
Mã:
mv zookeeper-3.4.9 zookeeper
Tiếp theo, cấp quyền sở hữu cho người dùng ZooKeeper bằng lệnh sau:
Mã:
chown -R zookeeper:zookeeper /opt/zookeeper

Cấu hình ZooKeeper​

Tiếp theo, bạn sẽ cần tạo tệp cấu hình cho ZooKeeper. Bạn có thể thực hiện 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.

Tiếp theo, khởi động dịch vụ ZooKeeper bằng lệnh sau:
Mã:
cd /opt/zookeeper
 bin/zkServer.sh start
Bạn sẽ thấy đầu ra sau:
Mã:
ZooKeeper 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
Bạn có thể kết nối với máy chủ ZooKeeper cục bộ bằng lệnh sau:
Mã:
bin/zkCli.sh -server 127.0.0.1:2181
Sau khi kết nối thành công, bạn sẽ thấy kết quả sau:
Mã:
[zk: 127.0.0.1:2181(CONNECTED) 1]
Bây giờ, hãy nhập help vào dấu nhắc, bạn sẽ thấy danh sách các lệnh mà bạn có thể thực thi từ máy khách.
Mã:
helpZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
Bây giờ, hãy nhập quit để thoát khỏi phiên đã kết nối.

Bạn có thể dừng ZooKeeper bằng lệnh sau:
Mã:
bin/zkServer.sh stop
Bạn sẽ thấy đầu ra sau:
Mã:
ZooKeeper JMX được bật theo mặc địnhSử dụng cấu hình: /opt/zookeeper/bin/../conf/zoo.cfgDừng zookeeper ... STOPPED

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ạn có thể thực hiện bằng lệnh sau:
Mã:
nano /etc/systemd/system/zookeeper.service
Thêm các dòng sau:
Mã:
[Unit]Description=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.

Tiếp theo, tải lại daemon systemd, khởi động dịch vụ ZooKeeper và cho phép nó khởi động khi khởi động bằng lệnh sau:
Mã:
systemctl daemon-reload
Mã:
systemctl start zookeeper
 systemctl enable zookeeper
Bạn có thể kiểm tra trạng thái của dịch vụ 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ừ Thứ 4, ngày 6 tháng 3 năm 2019 lúc 15:03:01 UTC; 5 giây trước Tài liệu: http://zookeeper.apache.org Tiến trình: 3909 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (mã=đã thoát, trạng thái=0/THÀNH CÔNG) PID chính: 3926 (java) Nhiệm vụ: 17 (giới hạn: 1113) CGroup: /system.slice/zookeeper.service ??3926 java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /opt/zookeeper/bin/../build/classes:/opt/zookeeper/bin/..06-03 15:03:00 ubuntu1804 systemd[1]: Đang khởi động Zookeeper Daemon...06-03 15:03:00 ubuntu1804 zkServer.sh[3909]: ZooKeeper JMX được bật theo mặc định06-03 15:03:00 ubuntu1804 zkServer.sh[3909]: Đang sử dụng config: /opt/zookeeper/conf/zoo.cfg06-03 15:03:01 ubuntu1804 zkServer.sh[3909]: Đang khởi động zookeeper ... ĐÃ BẮT ĐẦU06-03 15:03:01 ubuntu1804 systemd[1]: Đã khởi động Zookeeper Daemon.
Xin chúc mừng! Bạn đã cài đặt và cấu hình thành công cụm nút đơn ZooKeeper trên máy chủ Ubuntu 18.04. Bây giờ bạn có thể triển khai cụm nút đa ZooKeeper cho sản xuấ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