Cassandra JMX 监控配置

最近安装cassandra到产品服务器,很多东西要求就严格了很多,比如perf中使用的JMX,以前是只要知道ip就能访问,但是产品服务器就不行了,这样存在安全隐患,nodetool -h host 可以添加和删除节点。所以今天要讲的东西就是cassandra jmx的授权和访问控制。


这里讲的是第一种,最常用的使用密码和访问控制文件方式,其他方式后面有时间再跟进。


1 修改$CASSANDRA_HOME/conf/cassandra-env.sh 文件

  • 设置你的服务器(需要监控的机器)IP

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=172.29.1.18"

  • cassandra默认是启用本地无需授权方式访问,这里我们需要远程监控就需要改变下方式:修改LOCAL_JMX为no

LOCAL_JMX=no

2 设置JMX中authentication需要用到的文件

## Basic file based authn & authz
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"

  • 创建文件 /etc/cassandra/jmxremote.password,添加角色和密码:(这里的cassandra是用户名,密码是后面的cassandra,可以改为你自己的)

monitorRole QED
controlRole R&D
cassandra cassandra


  • 修改jmxremote.password访问权限:(cassandra:cassandra  只是个例子,填入你自己的启动cassandra的用户和用户组)

chown cassandra:cassandra /etc/cassandra/jmxremote.password
chmod 400 /etc/cassandra/jmxremote.password

  • 创建文件 /etc/cassandra/jmxremote.access, 添加角色权限控制:

monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister

说明: 

readonly 是智能读取MBean中的只读属性。

readwrite 是可以使用MBean进行程序的参数修改和控制程序行为。


3 启动cassandra, 使用nodetool访问:

nodetool status -u cassandra -pw cassandra


参考材料:

1  Cassandra Wiki JMX security

2  Monitoring and Management using JMX

你可能感兴趣的:(cassandra)