Database Kiến Thức Linux

Cài Đặt Cluster Cassandra trên Ubuntu 18.04 Cho Môi Trường Production

Trong bài này, Tôi sẽ hướng dẫn cách cài đặt Apache Cassandra Cluster có thể được sử dụng luôn trên môi trường Production với 3 Nodes.

Trong bài này là phần mở rộng của bái post trước, Hướng dẫn cài đặt Cassandra trên Ubuntu 18.04. Khi cài Cassandra được cài đặt và cấu hình chỉ trên một server. Vấn đề ở đây là mô hình này không tốt cho môi trường Production, và không thể nào lưu trữ được số lượng dữ liệu lớn. Để có thể lưu trữ nhiều dữ liệu hơn, ví dụ hơn 1TB. Vì vậy trong Cluster của chúng ta sẽ phải cần 3 nodes, mỗi node có khoảng 500Gb ổ cứng. 

Cassandra là gì?

Cassandra là một cơ sở dữ liệu phân tán có tính sẵn sàng cao, nó có thể lưu trự một lượng lớn dữ liệu. Một công ty lớn đang sử dụng Cassandra như Netflix, Apple và cả eBay để quản lý dữ liệu của họ với hàng tỉ truy cập mỗi ngày. 

Cassandra có tính chịu lỗi rất tốt. Nó dễ dàng mở rộng đến hàng trăm, hàng nghìn node để dữ liệu có thể tự động nhân bản. Thậm chí, nếu bạn mất toàn bộ dữ liệu ở data center thì dữ liệu của bạn vẫn được đảm bảo. Việc nhân rộng dữ liệu giữa các Data Center với nhau cũng được hỗ trợ bởi Cassandra. Trên hết, Cassandra có kiểu dữ liệu phi tập trung, điều này có nghĩa là nó sẽ không có điểm lỗi nào. Các Node bị lỗi có thể được thay thế mà không gây ra tình trạng downtime hệ thống.

Cài đặt Cassandra Cluster

Trong bài này, tôi sử dụng 3 VM với 4 CPU, 4GB Ram và 500Gb ổ cứng cho mỗi con. 

Để cài đặt Cluster, chúng ta cần cài đặt Cassandra trên tất cả server. Sau đó, start serivce và join mỗi Node vào trong Cluster. Chúng ta sẽ kết thúc bài Post bằng việc tạo một key và table cho Cassandra. 

Cài đặt Cassandra trên Ubuntu 18.04

Đầu tiên, tiến hành cập nhật lại Ubuntu và cài đặt Java. 

# apt update -y && apt upgrade -y
Tiếp theo, chúng ta sẽ bắt đầu cài đặt Cassandra.

Download Cassandra

Chúng ta sẽ tìm và tải về bản mới nhất của Cassanra, ở đây chúng tôi ví dụ 3.11.2 

Lưu ys: Những phiên bản này sẽ thường xuyên thay đổi, bạn có thể truy cập link http://apache.claz.org/cassandra để chọn bản mới nhất. 

Giải nén Cassandra.
# tar -xzvf apache-cassandra-3.11.2-bin.tar.gz
Tiếp đến, chúng ta sẽ tạo một User mới cho Cassandra.

Tạo một user mới cho Cassandra. 

Cassanra không thực thi với quyền root, chính vì vậy chúng ta cần một User và Group Cassandra mới và phân quyền cho user này.

Tạo  systemd service cho Cassandra.

Tạo một tệp /etc/systemd/system/cassandra.service và thêm vào những dòng sau:

Lưu ý là chúng ta phải cấu hình user, group là cassandra trong mục Service. Điều này sẽ nói với Systemd là sẽ chạy dịch vụ với user cassandra mà ta đã tạo mới lúc nãy, đồng thời chúng ta sẽ enable service cassandra khởi động cùng hệ thống.
Chúng ta sẽ chưa Start dịch vụ vì cần phải cấu hình một vài thứ để thực hiện cho việc tunning cho môi trường Production.

Cấu hình Cassandra.

Để kết nối tới Cassandra server, chúng ta sẽ cấu hình một vài thông số tại /usr/local/cassandra/conf/cassandra.yaml

Đầu tiên, chúng ta sẽ thay đổi tham số listening address cho Cassandra. Thiết lập địa chỉ IP của server, ví dụ :  192.168.1.47.

Tiếp theo, chúng ta sẽ thiết lập RPC listen address để có thể kết nối từ xa from CQLSH.
Thay đổi Cluster name.
Cuối cùng, chúng ta sẽ cấu hình tham số seed.

Trong bài này, chúng ta giả định việc cài đặt Cassandra Cluster trong một Data Center. Seed sẽ quản lý Cluster và dùng để bootstrap cho những Node khác trong Cassandra Cluster. Thông thường, chúng ta sẽ cần ít nhất 1 seed trên mỗi Data Center, và không nên cấu hình seed cho tất cả các Node. 

Trong trường hợp này, sẽ dùng Node đầu tiền làm seed Node, chúng ta sẽ dùng IP ( 192.168.1.47 ) cho tất cả 3 server Node còn lại. 

Lưu và thoát.

Cassandra Performance Tuning

Hiện tại, Cơ bản chúng ta đã cấu hình hoàn tất, tuy nhiên, chúng ta cần điều chỉnh một vài thứ để cải thiện performance trên hệ thống. 

Tắt Swap

Đầu tiên, chúng ta cần làm là tắt swap với câu lệnh :

Đồng thời, chúng ta sẽ tắt nó trong file /etc/fstab, rào dòng swap mount lại :

Cấu hình Limit

Chúng ta cần thiết lập limit cho hệ thống để Cassandra chạy mượt hơn :
Tạo một file /etc/security/limits.d/cassandra.conf và thêm vào các nội dung :

Lưu và thoát

Cấu hình Heap

Mở file etc/sysctl.conf và thêm vào các dòng sau:

Lưu và thoát

Sau khi cấu hình xong, không cần phải reboot lại, chạy luôn câu lệnh sau để cập nhật trực tiếp :

Cấu hình mọi thứ đã xong, chúng ta có thể khởi động dịch vụ Cassandra.

Khởi động Cassandra Cluster

Sử dụng câu lệnh của systemd để tiến hành khởi động dịch vụ :

Kiểm tra logs của Cassandra.
Tiếp đến, chúng ta sẽ thử kết nối từ xa đến Database của Cassandra. Đơn giản là tải về gói Cassandra giống như gói trên server. Sau đó :
Kiểm tra trạng thái của Cluster.
Chúng ta sẽ thấy phần status là Up và State là Normal. Tiếp đến là khởi động Cassandra trên 2 node còn lại. 

Một khi các dịch vụ đã được start lên hết, kiểm tra trạng thái của Cluster:

Bây giờ, tạo thử một vài tables cho Database. 

Mở CQLSH và chạy câu lệnh:

Tiếp theo, chúng ta sẽ tạo một table trong keyspace này:
cqlsh> create keyspace admintome with replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’: 3};

Đối với một cơ sở dữ liệu RDBM thông thường, thì table trên làm việc ổn. Thế nhưng Cassandra thì không phải vậy, nó là cơ sở dữ liệu phân tán, chính do cách cách tạo và làm việc với table cũng có đôi chút khác biệt. Giờ chúng ta sẽ thay đổi lại cách tạo table trong Cassandra một cách chuẩn hơn.

DROP TABLE admintome.logs;

Bây giờ, khi chúng ta lấy dữ liệu logs từ Kafka và insert nó vào tables, chúng ta sẽ có được Logs được sắp xếp theo thứ tự thời gian.
Chúc Thành Công !!!
congdonglinux.com
Tags

Add Comment

Click here to post a comment