用Priam设置Cassandra
前面已經(jīng)解釋了如何在AWS中設(shè)置Cassandra 。 所描述的設(shè)置有效,但在某些情況下可能還不夠。 例如,它不能為您提供制作和還原備份的簡(jiǎn)便方法,添加新節(jié)點(diǎn)依賴于自定義python腳本,該腳本會(huì)隨機(jī)選擇一個(gè)種子。
因此,現(xiàn)在我將解釋如何設(shè)置Netflix 的Cassandra幫助器工具Priam 。
我對(duì)其進(jìn)行設(shè)置的主要原因是它提供的備份/還原功能。 所有其他備份方法都非常繁瑣,Priam恰好實(shí)現(xiàn)了重要部分-快照和增量備份 。
但是,Priam有點(diǎn)棘手。 設(shè)置指南不是太詳細(xì),也不容易找到(這是Wiki中的最后一個(gè),不是立即可見的項(xiàng)目)。 首先,每個(gè)Cassandra版本都有一個(gè)分支,因此您必須簽出適當(dāng)?shù)姆种Р⑦M(jìn)行構(gòu)建。 我立即在這里碰到一個(gè)問題,因?yàn)樗鼈兊拿辉试Seclipse導(dǎo)入gradle項(xiàng)目。 在24小時(shí)內(nèi),我報(bào)告了3個(gè)問題,這并不理想。 Priam不支持動(dòng)態(tài)SimpleDB名稱,也不允許您通過命令行覆蓋捆綁的屬性。 我希望沒有更大的問題。 我遇到的那些問題,我進(jìn)行了修復(fù)并提出了拉取請(qǐng)求 。
設(shè)置是什么樣的?
- 將javaagent附加到JVM選項(xiàng)
- 運(yùn)行Priam網(wǎng)站
- 它會(huì)自動(dòng)替換大部分cassandra.yaml,包括種子提供程序(即,節(jié)點(diǎn)如何在集群中找到其他節(jié)點(diǎn))
- 運(yùn)行卡桑德拉
- 它獲取種子信息(存儲(chǔ)在AWS SimpleDB中)并連接到集群
我決定使用獨(dú)立的跳船賽跑者來運(yùn)行war文件,而不是安裝tomcat。 就shell腳本而言,核心位看起來像這樣(除了在節(jié)點(diǎn)初始化時(shí)運(yùn)行的原始文章中的shell腳本 ):
# Get the Priam war file and jar file aws s3 cp s3://$BUCKET_NAME/priam-web-3.12.0-SNAPSHOT.war ~/ aws s3 cp s3://$BUCKET_NAME/priam-cass-extensions-3.12.0-SNAPSHOT.jar /usr/share/cassandra/lib/priam-cass-extensions.jar # Set the Priam agent echo "-javaagent:/usr/share/cassandra/lib/priam-cass-extensions.jar" >> /etc/cassandra/conf/jvm.options# Download jetty-runner to be able to run the Priam war file from the command line wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/9.4.8.v20171121/jetty-runner-9.4.8.v20171121.jar nohup java -Dpriam.clustername=LogSentinelCluster -Dpriam.sdb.instanceIdentity.region=$EC2_REGION -Dpriam.s3.bucket=$BACKUP_BUCKET \ -Dpriam.sdb.instanceidentity.domain=$INSTANCE_IDENTITY_DOMAIN -Dpriam.sdb.properties.domain=$PROPERTIES_DOMAIN \ -Dpriam.client.sslEnabled=true -Dpriam.internodeEncryption=all -Dpriam.rpc.server.type=sync \ -Dpriam.partitioner=org.apache.cassandra.dht.Murmur3Partitioner -Dpriam.backup.retention.days=7 \ -Dpriam.backup.hour=$BACKUP_HOUR -Dpriam.vnodes.numTokens=256 -Dpriam.thrift.enabled=false \ -jar jetty-runner-9.4.8.v20171121.jar --path /Priam ~/priam-web-3.12.0-SNAPSHOT.war &while ! echo exit | nc $BIND_IP 8080; do sleep 10; doneecho "Started Priam web package"service cassandra start chkconfig cassandra onwhile ! echo exit | nc $BIND_IP 9042; do sleep 10; doneBACKUP_BUCKET,PROPERTIES_DOMAIN和INSTANCE_DOMAIN是通過CloudFormation腳本提供的(因?yàn)槲覀儫o法事先知道確切的名稱-特別是對(duì)于SimpleDB)。 請(qǐng)注意,這些屬性在主存儲(chǔ)庫中不起作用-我在請(qǐng)求請(qǐng)求中添加了它們。
為了使它起作用,您需要?jiǎng)?chuàng)建兩個(gè)SimpleDB域(例如,通過CloudFormation)。 您可以將SimpleDB替換為其他一些數(shù)據(jù)存儲(chǔ)(而不依賴于AWS??),但這目前已超出范圍。
運(yùn)行Priam的結(jié)果是您在SimpleDB中擁有了Cassandra節(jié)點(diǎn)(您可以使用此chrome擴(kuò)展名瀏覽它,因?yàn)锳WS不提供任何UI),并且當(dāng)然,備份將在備份S3存儲(chǔ)桶中自動(dòng)創(chuàng)建。
然后,您可以通過登錄到每個(gè)節(jié)點(diǎn)并執(zhí)行以下操作來還原備份:
curl http://localhost:8080/Priam/REST/v1/restore?daterange=201803180000,201803191200?ion=eu-west-1&keyspaces=your_keyspace您指定還原的時(shí)間范圍。 仍然不理想,因?yàn)槿藗兿MM(jìn)行一鍵式還原,但是比推出自己的備份和還原基礎(chǔ)結(jié)構(gòu)要好得多。
這里有一個(gè)非常重要的說明–不支持vnode。 我最初的群集默認(rèn)每臺(tái)計(jì)算機(jī)有256個(gè)vnode,現(xiàn)在只有1個(gè),因?yàn)镻riam不支持1個(gè)以外的任何功能。這很遺憾,因?yàn)関node是設(shè)置Cassandra的推薦方法。 顯然,Netflix不使用那些。 有一個(gè)正在進(jìn)行的工作分支,該分支在5年前就被放棄了。 幸運(yùn)的是,有一個(gè)新的帶有Vnode支持的拉取請(qǐng)求 ,可以與該分支的拉取請(qǐng)求一起使用。
Priam用其他值替換了一些Cassandra默認(rèn)值,因此您可能要比較當(dāng)前設(shè)置和新生成的cassandra.yaml。 總體而言,它還沒有準(zhǔn)備好進(jìn)行超級(jí)制作,但顯然是這樣,因?yàn)镹etflix正在制作中使用它。
翻譯自: https://www.javacodegeeks.com/2018/03/setting-up-cassandra-with-priam.html
總結(jié)
以上是生活随笔為你收集整理的用Priam设置Cassandra的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何下载安装免费的Excel软件手提电脑
- 下一篇: Spring @Lazy批注用例