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:
Ít nhất hai server Ubuntu 14.04 được cấu hình bằng hướng dẫn cài đặt ban đầu này .
Mỗi server phải được bảo mật bằng firewall bằng cách sử dụng hướng dẫn IPTables này .
Mỗi server cũng phải được cài đặt Cassandra theo hướng dẫn cài đặt Cassandra này .
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.
. . . 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:
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
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.111
và 222.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
.
-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
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:
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
.
Các tin liên quan
Cách nhập và xuất database OrientDB trên Ubuntu 14.042016-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