用Priam设置Cassandra

前面已经解释了如何在AWS中设置Cassandra 。 所描述的设置有效,但在某些情况下可能还不够。 例如,它不能为您提供制作和还原备份的简便方法,添加新节点依赖于自定义python脚本,该脚本会随机选择一个种子。

因此,现在我将解释如何设置Netflix 的Cassandra帮助器工具Priam 。

我对其进行设置的主要原因是它提供的备份/还原功能。 所有其他备份方法都非常繁琐,Priam恰好实现了重要部分-快照和增量备份 。

但是,Priam有点棘手。 设置指南不是太详细,也不容易找到(这是Wiki中的最后一个,不是立即可见的项目)。 首先,每个Cassandra版本都有一个分支,因此您必须签出适当的分支并进行构建。 我立即在这里碰到一个问题,因为它们的命名不允许eclipse导入gradle项目。 在24小时内,我报告了3个问题,这并不理想。 Priam不支持动态SimpleDB名称,也不允许您通过命令行覆盖捆绑的属性。 我希望没有更大的问题。 我遇到的那些问题,我进行了修复并提出了拉取请求 。

设置是什么样的?

  • 将javaagent附加到JVM选项
  • 运行Priam网站
  • 它会自动替换大部分cassandra.yaml,包括种子提供程序(即,节点如何在集群中找到其他节点)
  • 运行卡桑德拉
  • 它获取种子信息(存储在AWS SimpleDB中)并连接到集群

我决定使用独立的跳船赛跑者来运行war文件,而不是安装tomcat。 就shell脚本而言,核心位看起来像这样(除了在节点初始化时运行的原始文章中的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; done

BACKUP_BUCKET,PROPERTIES_DOMAIN和INSTANCE_DOMAIN是通过CloudFormation脚本提供的(因为我们无法事先知道确切的名称-特别是对于SimpleDB)。 请注意,这些属性在主存储库中不起作用-我在请求请求中添加了它们。

为了使它起作用,您需要创建两个SimpleDB域(例如,通过CloudFormation)。 您可以将SimpleDB替换为其他一些数据存储(而不依赖于AWS​​),但这目前已超出范围。

运行Priam的结果是您在SimpleDB中拥有了Cassandra节点(您可以使用此chrome扩展名浏览它,因为AWS不提供任何UI),并且当然,备份将在备份S3存储桶中自动创建。

然后,您可以通过登录到每个节点并执行以下操作来还原备份:

curl http://localhost:8080/Priam/REST/v1/restore?daterange=201803180000,201803191200®ion=eu-west-1&keyspaces=your_keyspace

您指定还原的时间范围。 仍然不理想,因为人们希望进行一键式还原,但是比推出自己的备份和还原基础结构要好得多。

这里有一个非常重要的说明–不支持vnode。 我最初的群集默认每台计算机有256个vnode,现在只有1个,因为Priam不支持1个以外的任何功能。这很遗憾,因为vnode是设置Cassandra的推荐方法。 显然,Netflix不使用那些。 有一个正在进行的工作分支,该分支在5年前就被放弃了。 幸运的是,有一个新的带有Vnode支持的拉取请求 ,可以与该分支的拉取请求一起使用。

Priam用其他值替换了一些Cassandra默认值,因此您可能要比较当前设置和新生成的cassandra.yaml。 总体而言,它还没有准备好进行超级制作,但显然是这样,因为Netflix正在制作中使用它。

翻译自: https://www.javacodegeeks.com/2018/03/setting-up-cassandra-with-priam.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab入门(一)

MATLAB学习笔记 本系列主要内容来源:matlab官方付费课程的学习笔记 截图较多,之后更新会尽量增加文字说明 matlab简单常用的命令 数组 round:四舍五入函数。

MATLAB入门(二)

可以使用 plot 函数在一张图上绘制两个相同长度的向量。 plot(x,y)plot 函数接受一个附加参数。使用该参数,您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。 plot(x,y,"r--o")以上命令将会绘制一条红色 虚线 (–)&#x…

Spring @Lazy批注用例

Spring框架几乎可以毫不费力地为您解决许多常见的编程问题,但是它的某些功能比其他功能鲜为人知。 在本文中,我们将仔细研究属于该组的Lazy批注。 阅读了几个示例之后,您应该能够将注释应用于日常开发任务。 1. 懒豆初始化 Spring的默认行为…

MATLAB入门(三)

求平均值 两种方法生成列向量 读取文件 将数据保存到小数点后两位 result round(M,2);将矩阵中的每个元素都三次方 x3 x.^3将矩阵中的数据按照升序排序 sort(data)创建一个行变量计算每一个列变量的平均值 avg mean(data)diff函数 Y diff(X) 计算沿大小不等于 1…

Java学习 第三章 数组(一)一维数组

第三章 数组 3-1 数组的概述 数组:多个相同类型数据按一定的顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 数组相关概念: 数组名、下标(索引、角标)、元素、数组的长度 数…

mapreduce 算法_MapReduce算法–了解数据联接第1部分

mapreduce 算法在本文中,我们继续执行一系列实现算法的系列,该算法在使用MapReduce进行数据密集型文本处理中找到,这一次讨论数据联接。 虽然我们将讨论在Hadoop中联接数据的技术并提供示例代码,但在大多数情况下,您可…

几个有用的word小技巧,保准提升效率~

这几天改报告改到头秃。年底了,实验室各种项目在结项,作为一名研一新生,理所应当地承担起了体力活的工作。主要负责项目报告的研究背景调研、报告汇总、格式调整等。 格式调整,看起来非常简单的一项工作,却是最费时费…

Java 8:长期支持的堡垒

斯蒂芬科尔本 ( Stephen Colebourne )的文章“ Java 9可以使用六个星期 ”开始,“ Java 9仅仅六个星期 就已过时。” Colebourne参考了Mark Reinhold博客文章“ Moving Java Forwarding Faster ”,并写道:“新的Java发…

我的2020(年终总结)

我的2020 2020对每个人来说可能都是极不平凡的一年,对我尤其是。这一年我整个的人心境发生了极大的变化。总结来说,有这么几件大事:复试、毕设、大学毕业、研究生开学、分手、再脱单、疫情在家。今天坐在实验室也不知道该干点什么&#xff0…

Java学习 第三章 数组(二)多维数组

多维数组的使用 由数组构成的数组 二维数组: ① 二维数组的声明和初始化 ② 如何调用数组的指定位置的元素 ③ 如何获取数组的长度 ④ 如何遍历数组 ⑤ 数组元素的默认初始化值 :见ArrayTest1.java 数组元素是整形:0 数组元素是浮点型&…

Spring Boot 2中的功能切换

无论您是否喜欢,软件开发都是一项协作活动。 整合工作一直被妖魔化,并被视为必不可少的邪恶。 有几种方法可以解决有效集成的挑战。 功能切换开关属于该组。 在本文中,您将在实践中看到如何在Spring Boot应用程序中使用功能切换(也…

Java学习 第三章 数组(三)排序算法

** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法、排序算法横向比较、Arrays工具类的使用、数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序和外部排序 1.2 十大内部排序算…

【强化学习】一些网站整理

莫烦教程 https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/ 博客园:刘建平Pinard https://www.cnblogs.com/pinard/category/1254674.html Deep-Q-Network 学习笔记 https://www.cnblogs.com/cjnmy36723/p/7017549.html 强化学习到深度强…

xmx java_为什么我的Java进程比Xmx消耗更多的内存?

xmx java你们有些人去过那里。 您已经在启动脚本中添加了-Xmx选项,并放松了下来,因为您知道Java进程将不会消耗比经过微调的选项所允许的更多的内存。 然后,您感到非常讨厌。 要么自己检查开发/测试框中的过程表,要么事情真的变坏…

卫星通信系统概述

卫星通信系统指通过在轨人造卫星作为中继站对无线电信号进行转发,实现地面及空间等用户之间信息传输的系统。卫星通信系统组成包括空间段及地面段,系统组成如图所示。其中空间段主要指在轨卫星、对在轨卫星进行操控的地面站,这些地面站主要实…

ElasticSearch初学者教程

1.简介 在此示例中,我们将演示如何使用Elasticsearch , Elasticsearch是一个基于Apache Lucene的分布式自由文本搜索和分析数据库引擎,具有一个基于maven的简单Java客户端。 在撰写本文时,我们将使用最新版本的Elasticsearch&…

博弈论与纳什均衡

三十分钟理解博弈论“纳什均衡” – Nash Equilibrium https://blog.csdn.net/xbinworld/article/details/50932559 纳什均衡(Nash equilibrium)及经典案例 https://blog.csdn.net/u010420283/article/details/83927742 论文: [1] 刘帅军. 卫星通信系统中动态资源…

Opnet入门

一、opnet快速入门 1.系统界面&文件菜单说明 2.常用文件名后缀及描述 3.Opnet建模层次 用户只有一种节点域模型 三、 OPNET Modeler网络仿真机制 1.事件的属性 每次点击next会出现以下界面: 2.事件的执行 调度型:按照正常程序调度事件 强制性&…

JSON的JUnit Hamcrest Matcher

这篇文章展示了如何编写JUnit测试来检查对象是否与JSON字符串匹配。 如果您要实现REST服务并想测试您的服务是否产生了预期的JSON响应,那么这一点很重要。 JSONassert是比较JSON对象的有用库。 首先,您必须将Java对象转换为JSON字符串(例如&…

Python列表推导式

列表推导式 是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表,即循环创建列表. for可以用来创建列表,列表推导式就相当于是for循环的简化版 1. 最简单的情况 values [10, 21, 5, 7, 12] squares [] …