Cassandra集群部署最优配置

内存选择

Cassandra节点没有最合适的内存配置,内存的大小取决于节点需要处理的数据。一般来说,集群节点至少需要8GB的内存,所部署的服务器服务器至少需要有64GB到256GB的内存。
如果Cassandra节点的内存给的太小,那么节点的memtables就会越小,这就意味着该Cassandra节点就会在硬盘上生成大量的小SSTable。查询的时候就会消耗更多的磁盘I/O。对性能影响很大。
所以说,赋给Cassandra节点的内存越大,节点的性能就会越好

CPU选择

Cassandra需要处理大量的写入压缩等操作,所以CPU的性能对Cassandra的性能也非常重要。
DataStax建议:16核的服务器是一个好的选择

带宽的选择

由于Cassandra是一个分布式的数据库,所以数据的读写和复制对Cassandra的性能都有非常大的影响。
所以网络带宽至少需要1GB或更大。

硬盘的选择

Cassandra何时使用硬盘

  • 当Cassandra把数据写入commit log时。
  • 当Cassandra把数据从memtables里刷到SSTable数据文件时。
  • 当Cassandra定期压缩SSTables时(压缩会临时增大磁盘使用空间,在最坏的情况下,比如压缩策略使用SizeTierdCompactionStrategy时,压缩SSTable使用的空间会是SSTable总量的两倍)。

最好使用SSD

由于Cassandra读写的数据最终都在硬盘上,所以硬盘的性能越好,Cassandra的性能也会越好。Cassandra对SSD的读写也进行了优化,使用SSD也能大大加速对数据的读写。

NFS, SAN和NAS都不推荐

为了提高IO,硬盘最好是在本地,并且越快越好。

如何评估硬盘的使用量

Cassandra对硬盘的使用主要用在存储commit log和数据目录。数据目录主要存储SSTable数据。除了这些,Cassandra还需要更多的空间来执行压缩工作。
最理想的情况下,存储commit log和数据目录的硬盘要分开。

下面我们看下如何计算集群的存储空间:

  1. 计算物理硬盘的原始大小:比如12块盘,每块盘7.2TB,则总量为12 * 7.2TB = 86.4TB
  2. 计算磁盘的可用空间,基本按90%算。 86.4 * 0.9 = 76.76TB。
  3. 由于Cassandra需要磁盘存储来进行压缩和修复操作,所以我们不能把所有空间都用于commit log存储和数据存储。DataStax建议仅分配可用容量的50% ~80%来存储数据。其他的空间用于压缩等操作。

Linux系统参数

同步时钟并启用NTP

由于只有时间戳比已有数据更新时,Cassandra才会更新数据列。所以在集群上所有节点同步时钟非常重要。您可以使用NTP(Network Time Protocol)或其他方法来同步时钟。
如果您集群无法访问Internet,可以通过编辑/etc/sysconfig/ntpd文件将其中一台服务器设置为NTP服务器。然后同步其他服务器。

在NUMA系统中禁用zone_reclaim_mode

为了避免潜在的性能问题,必须禁用’zone_reclaim_mode`。
可以使用如下方式检查:

cat /proc/sys/vm/zone_reclaim_mode
0

如果输出不是0,则使用如下方式来禁用:

echo 0 > /proc/sys/vm/zone_reclaim_mode

TCP设置

因为Cassandra的数据传输非常的重,所以我们需要通过编辑/etc/sysctl.conf文件来增加默认的TCP设置:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.optmem_max = 40960
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

然后使用sudo sysctl –p /etc/sysctl.conf命令来使其生效。

用户资源限制

/etc/security/ limits.conf文件中更新:

<cassandra_user> - memlock unlimited
<cassandra_user> - nofile 100000
<cassandra_user> - nproc 32768
<cassandra_user> - as unlimited
soft nofile 32768
hard nofile 32768
hard nproc 32768
soft nproc 32768

另外还需要包含如下设置:

vm.max_map_count = 1048575

关闭透明大页

echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag

禁用swap

sudo swapoff -all
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值