檢視 Apache Cassandra 的原始碼
←
Apache Cassandra
跳至導覽
跳至搜尋
由於以下原因,您無權編輯此頁面:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
'''Apache Cassandra'''是一套資料庫。 == 需求 == 開機就大約吃1.3GB左右,用2GB記憶體機器開機完就已經有吃到Swap了,最好是4GB記憶體,我這邊是用[[AWS]]的<code>t4g.medium</code>跑測試環境,不過當資料量夠大的時候4GB還是不太夠用,建議在正式環境下至少開到8GB的記憶體使用。 硬碟空間就是隨著資料量自己抓。 == 安裝 == 先安裝[[OpenJDK]] 11: <syntaxhighlight lang="bash"> sudo apt install -y openjdk-11-jdk; sudo apt clean </syntaxhighlight> 再來安裝Cassandra 4: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> == 設定 == === 防火牆 === {| class="sortable wikitable" ! Port ! Usage ! Comment |- | 7000/tcp | Cluster communication | |- | 7001/tcp | Cluster communication (TLS mode) | |- | 7199/tcp | JMX | 預設是聽<code>127.0.0.1</code>,不一定要開。 |- | 9042/tcp | Native protocol | |} === /etc/cassandra/cassandra.yaml === 基本上一定會改的: * <code>cluster_name</code>改成自己要的名稱。 * <code>listen_address</code>改成自己的IP位置(但不能是<code>0.0.0.0</code>,有擋),這樣外部才能連線。可以考慮直接用<code>listen_interface</code>。 * <code>rpc_address</code>也要改成自己的IP位置(也不能是<code>0.0.0.0</code>)。 * <code>seeds</code>改成第一台機器的IP位置與Port,這個參數只在第一次初始化整個Cassandra時用一次,後續的機器資訊都會存到硬碟裡。如果沒有用Cluster架構的話不需要改。 其他會改的: * <code>commitlog_compression</code>改用<code>LZ4Compressor</code>。 * <code>endpoint_snitch</code>改成<code>Ec2Snitch</code>或是<code>Ec2MultiRegionSnitch</code>,如果你的Cassandra架在[[AWS]]上。 * <code>hints_compression</code>改用<code>LZ4Compressor</code>。 * <code>internode_compression</code>改成<code>all</code>。 === /etc/cassandra/jvm-server.options === 記得把<code>jvm11-server.options</code>的內容複製進來,另外要注意JVM GC的部份: * Java 11預設用G1GC,一般建議是在記憶體比較充足的情況下選用(網路上有些文章是建議16GB以上),在記憶體比較小的時候會建議使用CMS。 === 清掉初始資料 === 要注意因為預設裝完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> === 帳號密碼 === Cassandra預設是不檢查帳號密碼的,需要修改設定: * <code>authenticator</code>改成<code>PasswordAuthenticator</code>。 * <code>authorizer</code>改成<code>CassandraAuthorizer</code>。 * <code>role_manager</code>改成<code>CassandraRoleManager</code>(似乎已經是預設)。 重啟所有節點後,然後用預設的帳號密碼(都是<code>cassandra</code>)連進cluster: <syntaxhighlight lang="bash"> cqlsh cassandra-1.example.com -u cassandra -p cassandra </syntaxhighlight> 接下來可以設定最高使用者以及一般使用者: <syntaxhighlight lang="sql"> CREATE USER root WITH PASSWORD 'rootpassword' SUPERUSER; CREATE USER alice WITH PASSWORD 'alicepassword'; CREATE USER bob WITH PASSWORD 'bobpassword'; </syntaxhighlight> 請先重新登入確認這些使用者可以用,接著把<code>cassandra</code>這個使用者砍掉: <syntaxhighlight lang="sql"> DROP USER cassandra; </syntaxhighlight> 然後先建立對應的keyspace,並且授權<code>alice</code>這個keyspace給<code>alice</code>這個使用者,並且給<code>bob</code>這個使用者查詢: <syntaxhighlight lang="sql"> CREATE KEYSPACE alice WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3}; GRANT ALL ON KEYSPACE alice TO alice; GRANT SELECT ON KEYSPACE alice TO bob; </syntaxhighlight> == 常用指令 == === cqlsh === 使用cqlsh: <syntaxhighlight lang="bash"> cqlsh cassandra-1.example.com -u root -p password </syntaxhighlight> 列出所有的keyspace: <syntaxhighlight lang="sql"> DESCRIBE keyspaces; </syntaxhighlight> 使用<code>ks1</code>然後列出table: <syntaxhighlight lang="sql"> USE ks1; DESCRIBE tables; </syntaxhighlight> === 其他指令 === 看目前Cluster的狀態(透過JMX,需要在Cluster上的任意一台機器上存取<code>127.0.0.1:7199</code>): <syntaxhighlight lang="bash"> nodetool status </syntaxhighlight> 利用profileload可以看到目前有哪些指令在跑(這個指令主要不是用來做這個用途的,只是目前沒有其他方法可以看): <syntaxhighlight lang="bash"> nodetool profileload </syntaxhighlight> == 操作 == === 修復 === 這邊提供的修復方式是直接放棄現有本地節點的資料,透過其他節點恢復,所以需要在資料有設定多份replication的前提下才能這樣用: * 移除<code>/var/lib/cassandra</code>,或是搬到<code>/var/lib/cassandra.old</code>(如果空間夠的話)。 * 到<code>/etc/cassandra/cassandra-env.sh</code>裡面的<code>JVM_OPTS</code>加上<code>-Dcassandra.replace_address=10.1.2.3</code>(自己的IP位置)。 * 重跑Cassandra。 接著應該會在<code>/var/log/cassandra/system.log</code>裡看到一些記錄,另外透過網路流量之類的資訊應該也可以看到正在同步。 === 移除節點 === <syntaxhighlight lang="bash"> nodetool decommission </syntaxhighlight> === 刪除節點 === <syntaxhighlight lang="bash"> nodetool removenode 01234567-89ab-cdef-0123-456789abcdef nodetool removenode status nodetool removenode force </syntaxhighlight> === 清理節點的多餘資料 === <syntaxhighlight lang="bash"> nodetool cleanup </syntaxhighlight> == 除錯 == 可以翻翻<code>/var/log/cassandra</code>這邊。 == 連結 == * {{Official|https://cassandra.apache.org/}} [[Category:軟體]]
此頁面使用了以下模板:
Template:Official
(
檢視原始碼
)
Template:Official website
(
檢視原始碼
)
Module:Arguments
(
檢視原始碼
)
Module:Official website
(
檢視原始碼
)
Module:URL
(
檢視原始碼
)
返回到「
Apache Cassandra
」。
導覽選單
個人工具
登入
命名空間
頁面
討論
臺灣正體
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊