aws集群重启_在AWS中设置Cassandra集群

aws集群重启

Apache Cassandra是一个NoSQL数据库,它使用一致的哈希机制可以轻松进行水平扩展。 七年前,我尝试了它,并决定不将其用于我的附带项目,因为它太新了。 现在情况有所不同,Cassandra早已建立起来,背后有一家公司(DataStax),还有更多的工具,文档和社区支持。 因此,我再次决定尝试Cassandra。

这次我需要它在AWS上的集群中运行,因此我继续设置了这样的集群。 谷歌搜索如何执行该操作会给出一些有趣的结果,例如this , this和this ,但是它们要么不完整,要么已过时,或者有太多无关紧要的细节。 因此,它们只是适度的帮助。

我的目标是使用CloudFormation(或潜在的Terraform)来启动具有Cassandra自动缩放组(在单个区域中)的堆栈,该组可以随增加组中节点的数量而轻松地增长。

另外,为了使Web应用程序连接到Cassandra而不用对节点IP进行硬编码,我想在所有为我做轮询的Cassandra节点的前面都有一个负载均衡器。 替代方法是进行客户端轮询 ,但这将意味着客户端上的一些额外复杂性,而在Cassandra自动扩展组前面使用负载平衡器似乎可以避免。

我的CloudFormation JSON的相关位可以在这里看到 。 它能做什么:

  • 设置3个私有子网(欧洲西部每个可用区1个)
  • 创建一个安全组,该安全组允许传入和传出端口允许cassandra接受连接(9042),并允许节点进行八卦(7000/7001)。 请注意,只能从VPC内部访问端口,不允许外部连接。 SSH仅通过堡垒主机 。
  • 为所有客户端将连接的端口9042定义一个TCP负载平衡器。 负载均衡器还需要定义一个所谓的“目标组”。
  • 配置具有预先配置的节点数的自动扩展组。 自动扩展组引用了“目标组”,因此负载均衡器始终会看到自动扩展组中的所有节点
  • 根据启动配置,自动缩放组中的每个节点都是相同的。 启动配置在初始化时运行一些脚本。 这些脚本将在每个节点上运行-最初是在一个节点死亡时,或者在某个节点死于另一个节点而又或者群集必须增长时。 这些脚本是从S3中获取的,您可以在其中手动或通过自动过程发布(和版本化)脚本。
  • 注意:这不会配置特定的EBS卷,实际上,如果实例存储不足,则可能需要配置并附加它们。 不过,由于数据已安全复制,因此不必担心节点会死。

那是最简单的部分–一堆AWS资源和端口配置。 特定于Cassandra的设置要困难一些,因为它需要了解Cassandra的功能。

这两个脚本是setup-cassandra.sh和update-cassandra-cluster-config.py ,因此是bash和python。 Bash用于设置机器,而python用于特定于Cassandra的东西。 除了使用bash脚本外,还可以使用预先构建的AMI(映像),例如带有打包程序的AMI(镜像),但是由于仅安装了2个软件,因此我认为支持AMI会有点开销。

bash脚本可以在这里看到 ,只需安装Java 8和最新的Cassandra,运行python脚本,运行Cassandra服务,并创建(如果需要)具有正确复制配置的键空间。 这里有一些注意事项– cassandra.yaml.template可以通过cloudformation脚本提供,而不是通过bash来获取(并通过存储桶名称); 您也可以在python脚本本身中获取它-这是优先选择的问题。 未将Cassandra配置为与SSL配合使用,这通常不是一个好主意,但是SSL配置超出了基本设置的范围。 最后,脚本等待Cassandra进程运行(使用while / sleep循环),然后根据需要创建键空间。 必须使用NetworkTopologyStrategy创建密钥空间(=数据库),并且必须配置特定数据中心(= AWS区域)的副本数。 对于3个可用区域(其中有节点),该值为3。 这意味着每个可用区中都有一个副本(尽管确实如此,但看起来像一个“机架”)。

python脚本做了一些非常重要的配置-如果没有它们,集群将无法工作。 (我通常不会使用Python,因此请随时批评我的Python代码)。 该脚本执行以下操作:

  • 获取当前的自动伸缩组详细信息(使用AWS EC2 API)
  • 按时间排序实例
  • 获取组中的第一个实例以将其分配为种子节点
  • 在配置文件中设置种子节点(通过替换占位符)
  • 将listen_address(因此rpc_address)设置为节点的专用IP,以允许Cassandra侦听传入的连接

指定种子节点很重要,因为所有群集节点都必须通过指定至少一个种子来加入群集。 您可以获取前两个节点,而不仅仅是一个,但这无关紧要。 请注意,种子节点并不总是固定的,它只是集群中最古老的节点。 如果某个最旧的节点在某个时刻终止,则每个新节点将使用第二个最旧的节点作为种子。

我没有显示的是cassandra.yaml.template文件。 它基本上是标准Cassandra安装中的cassandra.yaml文件的副本,但有一些更改:

  • cluster_name修改为与您的应用程序名称匹配。 这只是出于易于理解的目的,与您设置的内容无关。
  • allocate_tokens_for_keyspace: your_keyspace取消注释,并且该键空间设置为与您的主键空间匹配。 这将启用Cassandra 3.0中的新令牌分发算法 。 它允许在节点之间平均分配数据。
  • endpoint_snitch: Ec2Snitch设置了Ec2Snitch而不是SimpleSnitch来利用AWS元数据API。 请注意,此设置位于单个区域中。 对于多区域而言,还有另一个小问题,以及暴露端口和更改广播地址的一些其他复杂情况。
  • 如上所述,将$ {private_ip}和$ {seeds}占位符放置在适当的位置(IP的listen_address和rpc_address)以允许替换。

通过它们,您可以将Cassandra集群作为AWS堆栈的一部分运行,该集群可以自动扩展,并且不需要任何手动干预-既无需设置,也无需扩展。 好吧,据称–一旦碰到现实的用例,可能必须解决一些问题。 为了使客户端连接到群集,只需使用负载平衡器DNS名称(您可以在每个应用程序节点上的配置文件中打印它)

翻译自: https://www.javacodegeeks.com/2017/10/setting-cassandra-cluster-aws.html

aws集群重启

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

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

相关文章

IntelliJ IDEA for Mac 如何将普通 Java 项目变为 Web 项目

点击菜单栏 File --> Project Structure 在弹出的窗口中点击选择左侧的 Facets,接着点击右边的 ,弹出的菜单中选择 web 在弹出的 『Choose Module』窗口中选择要转为 web 的项目(模块),然后点击 OK 选择好模块后…

python flagin flagout_Python 进阶之路 (十) 再立Flag, 社区最全的itertools深度解析(中)...

前情回顾大家好,我又回来了。今天我会继续和大家分享itertools这个神奇的自带库,首先,让我们回顾一下上一期结尾的时候我们讲到的3个方法:combinations()combinations_with_replacement()permutations()让我们对这3个在排列组合中…

android 蓝牙耳机 sco,java – Android:通过Sco蓝牙耳机播放声音

在过去的几天里,我一直试图从我的Android手机上播放我的sco蓝牙耳机上的任何声音.我这个项目的最终目标是最终制作一个车库门开启器,但首先我需要能够通过耳机播放声音.这是我正在使用的当前代码的基础:ManifestCodeaudioManager (AudioManager) getSystemService(…

neo4j 连接超时_Neo4j:遍历查询超时

neo4j 连接超时在过去的几周中,我一直在花一些业余时间来创建一个应用程序,该应用程序从Open Roads数据生成运行路线-当然,已转换并导入了Neo4j! 我创建了一个用户定义的过程,该过程结合了几个最短路径查询&#xff0…

MacBook 如何强制删除『无法正常卸载』的应用程序

文章目录第一步:点击电脑屏幕左上角的 图标,再点击「关于本机」第二步:点击「储存空间」选项卡,接着点击「管理」第三步:选择左侧边栏的「应用程序」,然后在右侧的程序列表中选择要“删除”的程序&#x…

slot多作用域 vue_vue 深度长文之slot 篇

今天我们将分析我们经常使用的 vue 功能 slot 是如何设计和实现的,本文将围绕 普通插槽 和 作用域插槽 以及 vue 2.6.x 版本的 v-slot 展开对该话题的讨论。当然还不懂用法的同学建议官网先看看相关 API 先。接下来,我们直接进入正文吧普通插槽首先我们看…

android 扫描照片功能,Android自定义View- 雷达扫描图

首先来看看效果图:CSDN博客地址这里写图片描述这里我使用了两种实现方式:继承 view 实现。继承 surfaceview 实现。为什么会有两种实现方式呢?主要是因为我在继续加入一些自定义功能的时候,如果是继承 view ,出现了卡顿…

渴望 英语_渴望订阅– RxJava常见问题解答

渴望 英语在教学和指导RxJava以及撰写本书之后 ,我注意到某些领域特别有问题。 我决定发布一些简短的提示,以解决最常见的陷阱。 这是第一部分。 Observable和Flowable本质上是惰性的。 这意味着无论您在Flowable放置多长时间的逻辑,只有当有…

SmartSVN for Mac 使用说明

文章目录连接 SVN 服务器签出(Check Out)导出(Export)打开工作副本(Open Working Copy)打开和管理项目移除工作副本(Remove Working Copy)项目及工作副本目录导航窗口查看和配置被忽…

bldc 原理 方波控制_【百问百答】ST 电机控制实战问答合辑 | 连载之一

点击下方链接可以直接观看电机直播及直播答疑电堂​wx18257eb0e8c82435.h5.xiaoe-tech.com电堂​wx18257eb0e8c82435.h5.xiaoe-tech.com本次实战问答只讨论同步电机,不对步进电机做特别的讨论,希望有助于大家进行电机开发或者是电机应用。Q1:…

android动画编辑软件,ALM视频动画编辑

ALM视频动画编辑app手机端中最为专业,强大的视频编辑工具,丰富的功能堪比pc级别,并且实用流畅不卡顿,操作简单明了,上手容易,视频效果出色,更多丰富素材内容使用!下载ALM视频动画编辑app开始体验吧!ALM视频动画编辑介绍ALM视频动画编辑神器为你提供非常高…

openhub_介绍OpenHub框架

openhub本文介绍OpenHub框架 -基于Apache Camel的新的开源集成解决方案。 本文回答了一些问题,为什么您应该关心另一个集成框架,强弱属性以及如何使用OpenHub启动新项目。 OpenHub框架是Apache Camel,但经过改进…… 当然,您只能…

Oracle 数据库的替代变量问题(即 set define off/on 的用法)

在 SQL*Plus 中默认的 & 表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus 就会要你输入替代值。这就意味着你无法将一个含有该符号的字符串输入数据库或赋给变量,如字符串 SQL&Plus 系统会理解为以 SQL 打头的字符…

console react 去除_vue或react项目生产环境去掉console.log的操作

在开发环境写了很多console.log/info/debug,在生产环境需要去掉这些console。如果手动删除未免也太累了,再说以后想再开发还得重新写console。事实上webpack提供了删除console的插件,在vue-cli3里面是这样用的:首先安装terser-webpack-plugin…

mfc 弹簧_弹簧和线程:事务

mfc 弹簧为了能够在我们的线程中使用事务,我们需要了解事务如何在spring中工作。 spring中的事务信息存储在ThreadLocal变量中。 因此,这些变量特定于单个线程上正在进行的事务。 当涉及由单个线程运行的动作时,事务将在分层调用的Spring组件…

MacBook 如何通过命令终端进入 U 盘内的目录

U 盘通常是在目录 /Volumes 下,输入命令 cd /Volumes/U 盘名称,如下: liaowenxiongdeMacBook-Air:/ root# cd /Volumes/大白菜U盘 liaowenxiongdeMacBook-Air:大白菜U盘 root# ls .Trashes DBC System Volume Information进入目录后&am…

Html调用窗口,等待HTML调用window.print()之前写窗口

我有这样的尝试是把一些内容到一个弹出窗口,然后JavaScript代码连接到打印:等待HTML调用window.print()之前写窗口$(".print_friendly_popup").click(function() {var target $(this).data(print-target);var left (screen.width/2)-(500/2)…

spring 导出csv_Spring批处理CSV处理

spring 导出csv总览 我们将讨论的主题包括使用Spring Batch进行批处理的基本概念,以及如何将数据从CSV导入数据库。 0 – Spring Batch CSV处理示例应用程序 我们正在构建一个应用程序,演示用于处理CSV文件的Spring Batch的基础。 我们的演示应用程序将…

python强制结束函数_为什么Python没有 main 函数?终于有人给出了正确答案!

毫无疑问,Python中没有所谓的 main 入口函数,但在网上经常有文章提到“Python中的main函数”和“建议编写main函数”等。他们的目的可能是模仿真实的 main 函数,但是经常有很多人被误导(或误解)并编写非常繁琐的代码。…

MacOS 如何显示/隐藏文件

文章目录显示/隐藏文件快捷键修改“访达”属性修改文件隐藏属性设置特殊文件名实现隐藏使用命令设置文件隐藏属性显示/隐藏文件 快捷键 按下 Shift Command . 可以显示隐藏型的文件,再按下 Shift Command . 则不显示隐藏型的文件 修改“访达”属性 defaults…