Reaper是什么
Reaper是專門用于執(zhí)行Cassandra數(shù)據(jù)修復(fù)操作的可視化工具。
當(dāng)然,除了核心功能外,也提供了其他一些功能,例如,快照管理,集群基本信息、狀態(tài)等。
Cassandra為什么需要修復(fù)
如果集群中某一個(gè)節(jié)點(diǎn)A關(guān)閉或無(wú)法訪問(wèn),該節(jié)點(diǎn)不能被寫入。當(dāng)節(jié)點(diǎn)A恢復(fù)后,其他節(jié)點(diǎn)會(huì)通知A錯(cuò)過(guò)了哪些數(shù)據(jù),并修復(fù)。但這并不能保證100%通知到。這些不一致日積月累可能會(huì)導(dǎo)致數(shù)據(jù)丟失。
要解決這個(gè)問(wèn)題,就需要經(jīng)常修復(fù)節(jié)點(diǎn)數(shù)據(jù)。
修復(fù)大體分兩類:增量修復(fù),全量修復(fù)。默認(rèn)使用nodetool repair是增量修復(fù),如需全量修復(fù),使用nodetool repair --full。
按照官方給出的最佳實(shí)踐建議,1到3天進(jìn)行一次增量修復(fù),1到3周進(jìn)行一次全量修復(fù)。當(dāng)然,這要看具體的數(shù)據(jù)情況。
為什么要用Reaper
使用nodetool repair修復(fù)幾次,就會(huì)知道實(shí)在是痛苦,尤其是集群節(jié)點(diǎn)多了之后,所有節(jié)點(diǎn)都要去手動(dòng)維護(hù)不說(shuō),修復(fù)的進(jìn)度還看不到,數(shù)據(jù)量大了之后,修復(fù)一個(gè)節(jié)點(diǎn)動(dòng)輒十幾個(gè)小時(shí),只能不斷的去刷日志。
所以,就需要一個(gè)管理修復(fù)任務(wù)的可視化的工具。
Reaper安裝
Reaper核心是一個(gè)jar包,可以直接運(yùn)行jar包,也可以安裝為L(zhǎng)inux系統(tǒng)服務(wù)。這里介紹安裝為系統(tǒng)服務(wù),其他的安裝方式可參考 Reaper官網(wǎng)。
- 下載安裝包:
https://bintray.com/thelastpickle/reaper-rpm/cassandra-reaper/1.4.4
請(qǐng)自行fq下載。如有困難,考慮源碼編譯jar包安裝的方式。
- 安裝rpm
rpm -ivh reaper-*.*.*.x86_64.rpm
- 啟動(dòng)服務(wù)
service cassandra-reaper start
- 停止服務(wù)
service cassandra-reaper stop
如果啟動(dòng)失敗,提示 java not found,原因是沒(méi)有安裝jdk環(huán)境,或者環(huán)境變量配置有問(wèn)題。
查看啟動(dòng)腳本可以知道,執(zhí)行的是sudo -u "$user" $dir/$cmd >> "$stdout_log" 2>> "$stderr_log" &,$user 是 reaper,所以要確保 sudo -u reaper java -version 能正常輸出。
一般使用安裝包方式安裝的jdk沒(méi)問(wèn)題,綠色安裝的jdk可能有問(wèn)題,在/usr/bin下建個(gè)java的軟連接即可:
ln -s /jdk_home/bin/java /usr/bin/java
5.登錄
http://ip:8080/webui/

默認(rèn)用戶名/密碼: admin/admin。
Reaper配置
- 修改用戶名密碼
which cassandra-reaper
找到服務(wù)啟動(dòng)腳本:/usr/local/bin/cassandra-reaper
cat /usr/local/bin/cassandra-reaper
查看腳本內(nèi)容,找到j(luò)ar包位置:
...
CLASS_PATH="/usr/share/cassandra-reaper/*:/usr/local/share/cassandra-reaper/*"
...
找到j(luò)ar包在/usr/share/cassandra-reaper/目錄下。下面進(jìn)行修改:
cd /usr/share/cassandra-reaper/
vim cassandra-reaper-1.4.4.jar
/shiro.ini
找到users設(shè)置:
# default authentication is the following hardcoded admin user
[users]
admin = admin
- 修改Reaper數(shù)據(jù)存儲(chǔ)方案
Reaper有自己的元信息需要存儲(chǔ),默認(rèn)存儲(chǔ)方式是內(nèi)存,重啟服務(wù)后之前的設(shè)置就都丟失了,所以改成持久化存儲(chǔ)方案。
一共支持4種:
- memory
- H2
- Postgres
- Cassandra
我們選用Cassandra。
修改配置文件:
vim /etc/cassandra-reaper/cassandra-reaper.yaml
找到
storageType: memory
改為:
storageType: cassandra
cassandra:
clusterName: "集群名"
contactPoints: ["節(jié)點(diǎn)1", "節(jié)點(diǎn)2", ...]
keyspace: reaper_db
queryOptions:
consistencyLevel: LOCAL_QUORUM
serialConsistencyLevel: SERIAL
然后,需要在Cassandra中創(chuàng)建名為reaper_db的key space
CREATE KEYSPACE reaper_db WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': '3'}
- 修改datacenterAvailability
vim /etc/cassandra-reaper/cassandra-reaper.yaml
datacenterAvailability值改為L(zhǎng)OCAL:
datacenterAvailability: LOCAL
此配置項(xiàng)根據(jù)具體使用場(chǎng)景設(shè)置。因?yàn)橹挥幸粋€(gè)DC,所以設(shè)置為L(zhǎng)OCAL。具體說(shuō)明請(qǐng)參考Reaper的使用文檔。
- 修改Cassandra配置,允許遠(yuǎn)程JMX管理
Reaper依賴于JMX來(lái)管理節(jié)點(diǎn),需要Cassandra所有節(jié)點(diǎn)開(kāi)啟JMX遠(yuǎn)程操控權(quán)限。
默認(rèn)Cassandra的JMX是只能本地模式,也就在A節(jié)點(diǎn)通過(guò)nodetool -h hostname操控只能其他節(jié)點(diǎn)是不行的。
修改JMX配置
cd cassandra_home
vim conf/cassandra-env.sh
修改JMX相關(guān)的配置
...
LOCAL_JMX=no
...
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
這里禁用掉JMX的用戶授權(quán)功能。
- 重啟Cassandra集群;重啟Cassandra Repair服務(wù)即可。
Repair使用
-
添加集群
Clusters頁(yè)面
在Clusters頁(yè)面輸入集群中任意一個(gè)seed節(jié)點(diǎn),點(diǎn)擊“add cluster”按鈕即可。
添加完成后,可以看到集群的基礎(chǔ)信息。點(diǎn)擊某個(gè)節(jié)點(diǎn),可以查看該節(jié)點(diǎn)的詳細(xì)信息。
-
修復(fù)數(shù)據(jù)
Repairs頁(yè)面
在Repairs頁(yè)面可以創(chuàng)建一個(gè)修復(fù)任務(wù),選擇集群、Keyspace,Owner和Cause隨意填寫。
如果需要更多設(shè)置,可以展開(kāi)Advanced Settings進(jìn)行設(shè)置。可以設(shè)置修復(fù)的節(jié)點(diǎn)、表名、數(shù)據(jù)中心、修復(fù)方式(增量或全量)等。設(shè)置完成后點(diǎn)擊Repair按鈕即可。
創(chuàng)建成功后的修復(fù)任務(wù)會(huì)出現(xiàn)在下邊的Running列表里,點(diǎn)擊對(duì)應(yīng)的任務(wù)的Acitve按鈕即可開(kāi)始執(zhí)行。
Running列表里可以看到修復(fù)的進(jìn)度。
-
定時(shí)修復(fù)
Schedules頁(yè)面
在Schedules頁(yè)面可以創(chuàng)建定時(shí)任務(wù),自動(dòng)觸發(fā)修復(fù)任務(wù),設(shè)置的方式與Repair頁(yè)面類似。
-
快照管理
Snapshots頁(yè)面
這個(gè)頁(yè)面可以很方便管理集群的快照。
參考:
Cassandra repair 命令使用文檔(含最佳實(shí)踐)
Cassandra Reaper 使用文檔
JMX 文檔



