Thứ năm, 31/03/2016 | 00:00 GMT+7

Cách chạy database cụm đa node với Cassandra trên Ubuntu 14.04

Apache Cassandra là một hệ thống database open-souce có khả năng mở rộng cao, đạt được hiệu suất tuyệt vời trên các cài đặt nhiều nút.

Trước đây, ta đã xem qua cách chạy một cụm Cassandra một nút . Trong hướng dẫn này, bạn sẽ học cách cài đặt và sử dụng Cassandra để chạy một cụm nhiều nút trên Ubuntu 14.04.

Yêu cầu

Vì bạn sắp xây dựng một cụm Cassandra nhiều nút, bạn phải xác định có bao nhiêu server bạn muốn có trong cụm của bạn và cấu hình từng server đó. Khuyến nghị, nhưng không bắt buộc, chúng có các thông số kỹ thuật giống nhau hoặc tương tự.

Để hoàn thành hướng dẫn này, bạn cần những thứ sau:

Bước 1 - Xóa dữ liệu mặc định

Các server trong một cụm Cassandra được gọi là các node . Những gì bạn có trên mỗi server bây giờ là một cụm Cassandra một nút. Trong bước này, ta sẽ cài đặt các node để hoạt động như một cụm Cassandra nhiều nút.

Tất cả các lệnh trong bước này và các bước tiếp theo phải được lặp lại trên mỗi nút trong cụm, vì vậy hãy đảm bảo có nhiều terminal mở như bạn có các node trong cụm.

Lệnh đầu tiên bạn sẽ chạy trên mỗi nút sẽ dừng trình Cassandra.

  • sudo service cassandra stop

Khi hoàn tất, hãy xóa tập dữ liệu mặc định.

  • sudo rm -rf /var/lib/cassandra/data/system/*

Bước 2 - Cấu hình cụm

Tệp cấu hình của Cassandra nằm trong folder /etc/cassandra . Tệp cấu hình, cassandra.yaml , chứa nhiều chỉ thị và được comment rất tốt. Trong bước này, ta sẽ sửa đổi file đó để cài đặt cụm.

Chỉ các lệnh sau cần được sửa đổi để cài đặt một cụm Cassandra nhiều nút:

  • cluster_name : Đây là tên của cụm của bạn.

  • -seeds : Đây là danh sách địa chỉ IP được phân tách bằng dấu phẩy của mỗi nút trong cụm.

  • listen_address : Đây là địa chỉ IP mà các node khác trong cụm sẽ sử dụng để kết nối với nút này. Nó mặc định là localhost và cần thay đổi thành địa chỉ IP của nút.

  • rpc_address : Đây là địa chỉ IP cho các cuộc gọi thủ tục từ xa. Nó mặc định là localhost . Nếu tên server của server được cấu hình đúng, hãy để nguyên trạng này. Nếu không, hãy thay đổi thành địa chỉ IP của server hoặc địa chỉ lặp lại ( 127.0.0.1 ).

  • endpoint_snitch : Tên của snitch, là thứ cho Cassandra biết về mạng của nó trông như thế nào. Điều này mặc định là SimpleSnitch , được sử dụng cho các mạng trong một trung tâm dữ liệu. Trong trường hợp của ta , ta sẽ thay đổi nó thành GossipingPropertyFileSnitch , được ưu tiên cho các cài đặt production .

  • auto_bootstrap : Chỉ thị này không có trong file cấu hình, vì vậy nó phải được thêm và đặt thành false . Điều này làm cho các node mới tự động sử dụng đúng dữ liệu. Nó là tùy chọn nếu bạn thêm các node vào một cụm hiện có, nhưng bắt buộc khi bạn đang khởi tạo một cụm mới, tức là một cụm không có dữ liệu.

Mở file cấu hình để chỉnh sửa bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/cassandra/cassandra.yaml

Tìm kiếm file cho các lệnh sau và sửa đổi chúng như bên dưới để phù hợp với cụm của bạn. Thay thế your_server_ip bằng địa chỉ IP của server mà bạn hiện đang làm việc. Danh - seeds: phải giống nhau trên mọi server và sẽ chứa địa chỉ IP của từng server được phân tách bằng dấu phẩy.

/etc/cassandra/cassandra.yaml
. . .  cluster_name: 'CassandraDOCluster'  . . .  seed_provider:   - class_name: org.apache.cassandra.locator.SimpleSeedProvider     parameters:          - seeds: "your_server_ip,your_server_ip_2,...your_server_ip_n"  . . .  listen_address: your_server_ip  . . .  rpc_address: your_server_ip  . . .  endpoint_snitch: GossipingPropertyFileSnitch  . . . 

Ở cuối file , thêm chỉ thị auto_bootstrap bằng cách paste vào dòng này:

/etc/cassandra/cassandra.yaml
auto_bootstrap: false 

Khi bạn hoàn tất việc sửa đổi file , hãy lưu file đó. Lặp lại bước này cho tất cả các server bạn muốn đưa vào cụm.

Bước 3 - Cấu hình firewall

Đến đây, cụm đã được cấu hình, nhưng các node không giao tiếp. Trong bước này, ta sẽ cấu hình firewall để cho phép lưu lượng truy cập Cassandra.

Đầu tiên, khởi động lại daemon Cassandra trên mỗi.

  • sudo service cassandra start

Nếu bạn kiểm tra trạng thái của cụm, bạn sẽ thấy rằng chỉ có nút local được liệt kê, vì nó chưa có khả năng giao tiếp với các node khác.

  • sudo nodetool status
Đầu ra
Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving --  Address      Load       Tokens       Owns    Host ID                               Rack UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1  Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless 

Để cho phép giao tiếp, ta cần mở các cổng mạng sau cho mỗi nút:

  • 7000 , là cổng TCP cho các lệnh và dữ liệu.

  • 9042 , là cổng TCP cho server truyền tải root . cqlsh , tiện ích dòng lệnh Cassandra, sẽ kết nối với cụm thông qua cổng này.

Để sửa đổi các luật firewall , hãy mở file luật cho IPv4.

  • sudo nano /etc/iptables/rules.v4

Copy paste dòng sau trong chuỗi INPUT, dòng này sẽ cho phép lưu lượng truy cập trên các cổng nói trên. Nếu bạn đang sử dụng file rules.v4 từ hướng dẫn firewall , bạn có thể chèn dòng sau ngay trước comment # Reject anything that's fallen through to this point .

Địa chỉ IP được chỉ định bởi -s phải là địa chỉ IP của một nút khác trong cụm. Nếu bạn có hai nút với địa chỉ IP 111.111.111.111222.222.222.222 , luật trên máy 111.111.111.111 nên sử dụng địa chỉ IP 222.222.222.222 .

Luật firewall mới
-A INPUT -p tcp -s your_other_server_ip -m multiport --dports 7000,9042 -m state --state NEW,ESTABLISHED -j ACCEPT 

Sau khi thêm luật , hãy lưu file , sau đó khởi động lại IPTables.

  • sudo service iptables-persistent restart

Bước 4 - Kiểm tra trạng thái cụm

Bây giờ ta đã hoàn thành tất cả các bước cần thiết để biến các node thành một cụm nhiều nút. Bạn có thể xác minh tất cả họ đang giao tiếp bằng cách kiểm tra trạng thái của họ.

  • sudo nodetool status
Đầu ra
Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving --  Address      Load       Tokens       Owns    Host ID                               Rack UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1 UN  192.168.1.6  139.04 KB  256          ?       54b16af1-ad0a-4288-b34e-cacab39caeec  rack1  Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless 

Nếu bạn có thể thấy tất cả các node mà bạn đã cấu hình, bạn vừa cài đặt thành công một cụm Cassandra nhiều nút.

Bạn cũng có thể kiểm tra xem bạn có thể kết nối với cụm bằng cqlsh , ứng dụng client dòng lệnh Cassandra hay không. Lưu ý bạn có thể chỉ định địa chỉ IP của bất kỳ nút nào trong cụm cho lệnh này.

  • cqlsh your_server_ip 9042

Bạn sẽ thấy nó kết nối:

Đầu ra
Connected to My DO Cluster at 192.168.1.6:9042. [cqlsh 5.0.1 | Cassandra 2.2.3 | CQL spec 3.3.1 | Native protocol v4] Use HELP for help. cqlsh> 

Sau đó, bạn có thể thoát khỏi terminal CQL.

  • exit

Kết luận

Xin chúc mừng! Đến đây bạn có một cụm Cassandra nhiều nút đang chạy trên Ubuntu 14.04. Thông tin thêm về Cassandra có tại trang web của dự án . Nếu bạn cần khắc phục sự cố cụm, nơi đầu tiên để tìm manh mối là trong các file log , nằm trong folder /var/log/cassandra .


Tags:

Các tin liên quan

Cách nhập và xuất database OrientDB trên Ubuntu 14.04
2016-01-06
Cách thiết lập database từ xa để tối ưu hóa hiệu suất trang web với MySQL
2014-04-17
Cách kết nối Node.js với database MongoDB trên VPS
2013-10-09
Cách thiết lập database MongoDB có thể mở rộng
2013-02-26