Cassandra操作 本文档操作都是在单数据中心,Vnode上操作

1.1. 添加节点到集群中 1.1.1. 添加非seed单节点 1.在新节点上安装Cassandra,但不要启动

2.修改cassandra.yaml文件:

cluster_name – 新节点加入集群名称

listen_address/rpc_address – 新节点IP

seed_provider – 集群seeds列表

3.启动新节点Cassandra

4.使用nodetool status验证节点是否启动完毕:状态为UN

5.运行nodetool cleanup(或OpsCenter)在集群节点上:移除脏数据(建议在低峰执行)

1.2. 添加非seed单节点案例: 已经存在Cassandra集群:

cluster_name = ‘Test Cluster’ xxx_address = 192.168.92.148 seed_provider = 192.168.92.148 wKiom1cppL3B4g3eAAAi2QSK7_A312.png

添加新节点192.168.92.149:

1.安装Cassandra

参考《Cassandra教程》

wKioL1cppdWBh1E0AAAqS7BJjj8685.png

2.修改cassandra.yaml

cluster_name:

wKiom1cppRyQgL1OAAAJH-7ICJM624.png

seed_provider

wKiom1cppTGRTNDYAAAFzgKBsxI614.png

listen_address:

wKiom1cppUKSINlaAAARH9Y2M4k195.png

rpc_address:

wKioL1cppiuSXaHTAAAwhOPL0cU905.png

3.启动Cassandra

wKiom1cppWrQEh_ZAAAHfko1RTA314.png

4.验证新节点192.168.92.149是否启动完毕

wKioL1cpplGjOAObAAAwiZhPyqs058.png

5.删除192.168.92.148上的脏数据

wKioL1cppnDRvX69AAAJU_XNzH8484.png

或者

wKiom1cppa6zkjcMAAEQ_CWmkCk571.png

1.1.3. 添加非seed多个节点 步骤参考1.1.1,唯一不同点步骤3,启动Cassandra需要同时启动,避免数据多次迁移。

wKiom1cppcXgG_yVAAATIyr-29o972.png

wKioL1cppqqx_7fCAAAJIH1hzKU774.png

1.1.4. 添加seed节点 由于seed需要修改cassandra.yaml文件,所以需要重启所有节点

1.先将seed作为非seed节点安装启动,完成数据迁移操作

步骤参考1.1.1

2.修改所有节点的cassandra.yaml文件,添加seed

3.重启所有节点

1.2. 替换一个dead节点 由于一些硬盘损坏等原因,需要执行替换dead节点

1.确保dead节点状态为DN,使用nodetool status:

wKioL1cppsGzufqHAADpeBCNoHM141.png

注意Address需要在下面步骤用到

2.修改新节点cassandra.yaml文件:参考1.1.1

3.启动新节点,使用replace_address选项:

$ sudo bin/cassandra -Dcassandra.replace_address=address_of_dead_node

删除节点:参考1.4(建议72小时之后操作,确保gossip删除掉了老节点)

1.3. 替换一个running节点 由于升级新硬件等原因,需要使用新节点替换

添加新节点到集群中,参考步骤1.1.1

确保替换running节点状态为UN,使用nodetoolstatus:

wKiom1cpphiDrWPlAAA1B_i8fJk015.png

4.删除running节点,参考1.4

1.4. 删除节点 1.4.1. 删除UN状态节点 运行nodetooldecommission删除UN节点

wKioL1cppv_j7ZivAAAH3iGF5ks849.png

或者:

wKiom1cppjmTCRaaAAE-5vBVfQI416.png

1.4.2. 删除DN状态节点 运行nodetoolremovenode命令

wKiom1cppkrQRrCpAAAItR3PQ6g995.png

注意 如果以上步骤无法删除,可能是由于节点存在脏数据,请运行nodetool assassinate,强制删除

1.5. 修改ReplicationFactor 1.5.1. ReplicationFactor减少 运行nodetool cleanup,删除脏数据

或者:

wKioL1cpp0Situ8oAAEQ_GnCSZU529.png

1.5.2. ReplicationFactor增加 运行nodetool repair,迁移数据

或者:

wKioL1cpp2bw3WA-AAEwA_ieu7E092.png

Cassandra优化 2.1. 安装前配置建议 2.1.1. 安装jemalloc jemalloc适合多线程下内存分配管理 wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2 tar xjf jemalloc-3.6.0.tar.bz2 cd jemalloc-3.6.0 ./configure make &&make install echo '/usr/local/lib'>/etc/ld.so.conf.d/local.conf ldconfig wKioL1cpp5HyAG8oAAA3jpQPa8Y101.png

2.1.2. 安装NTP (略) 2.1.3. Commit log和data目录在独立硬盘 wKioL1cpp6PyIWveAAAvC7KYWAI807.png

wKiom1cppt2gKIqAAAAhpSf2WaI010.png

2.1.4. 硬盘类型 硬盘类型

SSD(微秒)

SAS(毫秒)

SATA(秒)

延迟

100~120

8~40

15

2.1.5. Linux优化 1.文件操作符

/etc/security/limits.conf

nofile 65535

memlock unlimited – nofile 32768 – as unlimited /etc/security/limits.d/90-nproc.conf

nproc 32768

2.Swap

/etc/sysctl.conf

vm.max_map_count = 131072 #最大限度使用物理内存 vm.swappiness = 0 使之生效

sysctl -p

永久关闭swap

swapoff –a /etc/fstab:注释掉swap

wKiom1cppyKA6sJrAAAzLjQpz9o105.png

3.NUMA

echo 0 > /proc/sys/vm/zone_reclaim_mode 4.文件系统类型

EXT4 2.1.6. 磁盘阵列RAID优化 使用高效性能RAID0 sudo blockdev --setra 128 /dev/ 2.1.7. cassandra-evn.sh配置建议 JVM配置在cassandra-evn.sh中

MAX_HEAP_SIZE

生产环境建议8G

wKiom1cpp1GwzHp0AACEXhULvLs062.png

HEAP_NEWSIZE

一般设置为MAX_HEAP_SIZE的1/4

添加cassandra压缩线程级别,减少其资源占用

-Dcassandra.compaction.priority=1 打开JVM压缩,减少内存占用,适用于64位JVM

-XX:+UseCompressedOops wKiom1cpp4KxPqHZAABZY1Ttqvc623.png

2.1.8. cassandra.yaml配置建议 concurrent_reads:16 * number_of_drives concurrent_counter_writes:16 * number_of_drives concurrent_writes:8 * number_of_cores #使用Memory Mapped File IO,性能超过Standard IO,64位 disk_access_mode: mmap #write性能提升5% memtable_allocation_type: offheap_objects

2.2. 安装后监控——定位——优化 2.2.1. nodetool tpstats 线程池使用统计,看是否有积压线程

wKiom1cpp6nTmTMAAABUQAaTpeo434.png

或者使用OpsCenter

wKioL1cpqJCz6-lvAAA-lJo_EU0610.png

wKioL1cpqKWDALVwAAAmDlC-FsU281.png

2.2.2. Read Requests/Write Requests 结合CPU和Disk使用监控,来判断系统每秒可以支持的操作数量

wKiom1cpp_DQtQE8AABRdkfpp3w679.png

wKioL1cpqMbC1TDwAAA-wD4PguY526.png

2.2.3. total Memtable size 与内存使用比较,确保大的memtable不会导致内存竞争,大的memtable有利于写多读少情况

wKioL1cpqOKCHLMgAAAk_7lutxM979.png

2.2.4. SSTable count 确保sstablecount比较低(个位数),每次读操作会检查所有sstable,太多的sstable影响read性能

wKioL1cpqPaDs7LMAAAncf0Pt6g071.png

2.2.5. total bytes compacted 确保不会发生频繁操作

wKioL1cpqQiwB3gFAAA_LtjQpYs529.png

2.2.6. read latency/write latency 确保延迟在可接受范围之内,不包含网络延迟

wKioL1cpqSPCdxQWAAAnjLcjGm4907.png

wKiom1cpqE6TT1WAAAAnQwgF-7o431.png

出问题后定位

writelatency写响应平均时长(以毫秒为单位)。依赖于consistency level和replication factor,也包含了写replicas的网络延迟

read latency受到硬盘,网络和应用程序读的方式等影响。比如,使用二级索引,读请求数据大小,client需要的consistencylevel都将影响readlatency。I/O的争用也会增加read latency。当SSTables有很多碎片,compaction跟不上写负载则读也会变慢。

2.2.7. partition size 监控表分区大小,确保max不超过100M

wKiom1cpqG2zVpQaAAAl8484Yio823.png

2.2.8. cell count 监控表cell count,确保不超过20亿

wKioL1cpqVeCp-SOAAAkXqDKpLU110.png

2.2.9. write Read active 读写请求数

wKioL1cpqWnjxZXkAAAqG5kF0pA383.png

2.2.10. OS系统监控 监控CPU、Memory、Disk的使用率、饱和度。

wKioL1cpqYzy_ASAAAAhDAPQE1U728.png

wKiom1cpqLjjAFHLAAAlkQpGBhY571.png

wKioL1cpqY3QeNSrAAAhZsQei-k449.png 转载于:https://blog.51cto.com/eric100/1770036

l3asnumanode 设置_linux numa 配置相关推荐

  1. Python使用matplotlib可视化柱状图、坐标轴标签的符号(-)显示为了方框□□、设置rcParams参数配置解决

    Python使用matplotlib可视化柱状图.坐标轴标签的符号(-)显示为了方框□□.设置rcParams参数配置解决 目录

  2. 【Android 安全】使用 360 加固宝加固应用 ( 购买高级加固服务 | 设置资源加固 | 设置 SO 文件保护配置 | 设置 SO 防盗用文件配置 | 反编译验证加固效果 )

    文章目录 一. 购买加固服务 二. 设置资源加固 三. 设置 SO 文件保护配置 四. 设置 SO 防盗用文件配置 五. 反编译验证加固效果 本博客用于记录下 360 加固保 加固应用流程 ; ( 上 ...

  3. idea设置默认maven配置, 避免每次设置maven

    ladymorgana 2019-02-22 23:27:50  7660  收藏 2 展开 idea设置默认maven配置, 避免每次设置maven Step 1:Other Setting---& ...

  4. Eclipse在更换工作空间之后很多设置要重新配置

    Eclipse在更换工作空间之后很多设置要重新配置,比如服务器,比如反编译工具等 转载于:https://www.cnblogs.com/2027437606qq/p/5029306.html

  5. eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?

    eclipse代码自动提示设置.如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)? 参考文章: (1)eclipse代码自动提示设置.如何配置eclipse的代码自动提示功能( ...

  6. nginx-ingress设置日志格式-配置转发真实ip-超时参数配置-会话保持参数

    nginx-ingress设置日志格式-配置转发真实ip-白名单限制 参考官方文档 nginx-ingress官方文档 修改nginx-ingrss的configmap配置文件 apiVersion: ...

  7. maven、gradle 设置MANIFEST.MF配置

    maven.gradle 设置MANIFEST.MF配置 一.说明 二.gradle 设置MANIFEST.MF 三.maven 设置MANIFEST.MF 一.说明 在使用maven.gradle对 ...

  8. [Linux]在Linux上部署Java开发环境笔记(一)-- 补充:Linux下如何手动设置IP及配置DNS服务

    在Linux上部署Java开发环境笔记(一) -- 补充:Linux下如何手动设置IP及配置DNS服务 2010/06/17 有的Linux系统会有网络设置的图形操作界面,比如"红旗Linu ...

  9. ilo 服务器 重装系统,Microserver Gen8: 基础iLO设置,raid配置,系统安装

    HP Proliant Microserver Gen8 本文档包含小8的基础iLO设置,raid配置,系统安装(windows) 通过图文让您可以自己完成对小8的基本设置,后续会有更高一层应用的文档 ...

最新文章

  1. 用java实现一个简易自动提款机
  2. 第二层EtherChannel
  3. 飞桨模型保存_重磅发布开源框架、生物计算平台螺旋桨,百度飞桨交了年终成绩单...
  4. 接口 DataInput
  5. 【CodeForces - 357C 】Knight Tournament(并查集 或 STLset)
  6. 结构方程模型-调节(干扰)效应检验(一)
  7. web前端开发初学者十问集锦(1)
  8. WinForm(C#):登录页面实现+SQL Server数据库连接方式
  9. 阿里云如何打破Oracle迁移上云的壁垒
  10. 实习日记——工程配置
  11. 教室计算机英语怎么读,教室的英语怎么读
  12. TDengine 入坑
  13. tomcat部署静态html网站方法
  14. 哪位大神能帮我解读下这段代码什么意思吗???万分感谢
  15. 使用ps制作端午海报
  16. 通过薄膜太阳能电池中的热激电流量化陷阱状态
  17. SP-API 修改货件api-修改货件sku个数坑分享
  18. 点击苹果模拟器触发事件
  19. question2answer优化
  20. 大型it项目管理的六大风险管理

热门文章

  1. node.js工程的结构
  2. Hue添加RDBMS(关系型数据库)
  3. 如何基于Dataphin实现敏感数据保护
  4. IEEE EDGE 2020论文:Astraea — 以优雅的方式在边缘部署AI服务
  5. 【云栖号案例 | 教育与科研机构】科研机构上云提供更加精准分析检测服务
  6. 如何查看使用 Cloud Toolkit 部署应用的实时日志
  7. 五四,阿里巴巴新青年了解下?
  8. 你应该知道的 HBase 基础,都在这儿了
  9. 被自己的行为蠢哭了,意识到原因后真香!
  10. 内含福利|CSDN携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!