「Apache Cassandra」:修訂間差異
跳至導覽
跳至搜尋
第59行: | 第59行: | ||
* <code>hints_compression</code>改用<code>LZ4Compressor</code>。 | * <code>hints_compression</code>改用<code>LZ4Compressor</code>。 | ||
* <code>internode_compression</code>改成<code>all</code>。 | * <code>internode_compression</code>改成<code>all</code>。 | ||
要注意因為預設裝完Cassandra後會自動跑起來,會需要先清掉<code>/var/lib/cassandra</code>裡面的cluster資料: | |||
<syntaxhighlight lang="bash"> | |||
sudo service cassandra stop; sudo rm -rf /var/lib/cassandra; sudo mkdir /var/lib/cassandra; sudo chown cassandra:cassandra /var/lib/cassandra; sudo service cassandra start | |||
</syntaxhighlight> | |||
=== 帳號密碼 === | === 帳號密碼 === |
於 2021年10月17日 (日) 20:10 的修訂
Apache Cassandra是一套資料庫。
需求
開機就大約吃1.3GB左右,用2GB記憶體機器開機完就已經有吃到Swap了,最好是4GB記憶體,我這邊是用AWS的t4g.medium
跑測試環境。
安裝
先安裝OpenJDK 11:
sudo apt install -y openjdk-11-jdk; sudo apt clean
再來安裝Cassandra 4:
curl -L https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -; echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee /etc/apt/sources.list.d/cassandra.list; sudo apt update; sudo apt install -y cassandra
設定
防火牆
Port | Usage | Comment |
---|---|---|
7000/tcp | Cluster communication | |
7001/tcp | Cluster communication (TLS mode) | |
7199/tcp | JMX | 預設是聽127.0.0.1 ,不一定要開。
|
9042/tcp | Native protocol |
/etc/cassandra/cassandra.yaml
基本上一定會改的:
cluster_name
改成自己要的名稱。listen_address
改成自己的IP位置(但不能是0.0.0.0
,有擋),這樣外部才能連線。可以考慮直接用listen_interface
。seeds
改成第一台機器的IP位置與Port,這個參數只在第一次初始化整個Cassandra時用一次,後續的機器資訊都會存到硬碟裡。如果沒有用Cluster架構的話不需要改。
其他會改的:
commitlog_compression
改用LZ4Compressor
。endpoint_snitch
改成Ec2Snitch
或是Ec2MultiRegionSnitch
,如果你的Cassandra架在AWS上。hints_compression
改用LZ4Compressor
。internode_compression
改成all
。
要注意因為預設裝完Cassandra後會自動跑起來,會需要先清掉/var/lib/cassandra
裡面的cluster資料:
sudo service cassandra stop; sudo rm -rf /var/lib/cassandra; sudo mkdir /var/lib/cassandra; sudo chown cassandra:cassandra /var/lib/cassandra; sudo service cassandra start
帳號密碼
Cassandra預設是不檢查帳號密碼的,需要修改設定:
authenticator
改成PasswordAuthenticator
。authorizer
改成CassandraAuthorizer
。role_manager
改成CassandraRoleManager
(似乎已經是預設)。
重啟所有節點後,然後用預設的帳號密碼(都是cassandra
)連進cluster:
cqlsh cassandra-1.example.com -u cassandra -p cassandra
接下來可以設定最高使用者以及一般使用者:
CREATE USER root WITH PASSWORD 'rootpassword' SUPERUSER;
CREATE USER alice WITH PASSWORD 'alicepassword';
CREATE USER bob WITH PASSWORD 'bobpassword';
然後授權alice
這個keyspace給alice
這個使用者,並且給bob
這個使用者查詢:
GRANT ALL ON KEYSPACE alice TO alice;
GRANT SELECT ON KEYSPACE alice TO bob;
常用指令
cqlsh
使用cqlsh:
cqlsh cassandra-1.example.com -u root -p password
列出所有的keyspace:
DESCRIBE keyspaces;
使用ks1
然後列出table:
USE ks1;
DESCRIBE tables;
其他指令
看目前Cluster的狀態(透過JMX,需要在Cluster上的任意一台機器上存取127.0.0.1:7199
):
nodetool status