1 文档编写目的
在前面的文章《0548-5.13.1-如何使用普通用户管理CM server和agent服务》解决了只能使用普通用户来管理CM和Agent服务的需求。本文档介绍如何为一个普通用户添加免密kill CDH集群中cloudera-scm-server、cloudera-scm-agent、supervisord进程,结合配置的免密systemctl权限,使得该普通账号能真正作为CDH集群的运维账号。
- 测试环境:CDH6.1.0
2 进程介绍
- cloudera-scm-server进程
ps -ef | grep cloudera-scm-server
cloudera-scm-server的进程可以直接通过上面的命令进行查看
2.cloudera-scm-agent、supervisord进程
ps -ef | grep cm-agent | grep python2
从以上的进程情况看,各个组件的服务都是由supervisord服务进行管理,supervisord是各组件服务的父进程,这从下方的图中也可以看出,因此当我们kill掉supervisord进程之后,组件进程停止。
3 关于pkill和kill命令使用
1.在使用kill -9来kill cloudera-agent-server进程时,会出现kill之后又会自动重启的情况:
如上,当kill掉cloudera-scm-server进程之后,后台又自动将该服务重启,这与服务的启动脚本配置有关,如下:在CM6.1.0版本中,该服务配置了失败重启的策略
该情况同样出现在cloudera-scm-agent和supervisord服务当中:
该情况的原因在于当我们是用kill -9强制kill进程时,被认为是failure,而不是正常停止,根据systemctl配置的服务策略,自动重启了服务,因此无法通过kill -9来停止这三个服务进程。
这里要注意的是,当kill -9停止supervisord进程时,因为原来的supervisord停止了,会导致所有的组件服务也会停止,并由新的supervisord进程重新启动这些组件进程,因此在控制台上会出现异常,部分组件可能需要手动启动。
2.使用kill -15停止cm-agent和supervisord进程,但无法停止cm-server进程
使用kill -15停止cm-server进程和使用kill -9情况一样,kill之后自动重启:
使用kill -15可停止cm-agent和supervisord进程
3.使用pkill 停止cm-agent和supervisord进程,但无法停止cm-server进程
使用pkill停止cm-server进程和使用kill-9和kill-15情况一样,kill之后自动重启:
pkill -f cloudera-scm-server
使用pkill 停止cm-agent进程(此处不能用pkill-f cloudera-scm-agent,该命令非但不能killcm-agent进程,反而会误杀很多组件进程):
pkill -f agent$
使用pkill停止supervisord进程:
pkill -f supervisord
4 配置sudoers
虽然pkill命令无法停止cm-server进程,但并不是该命令对该进程无效,而是因为cm-server服务策略的问题,因此我们仍然将kill cm-server进程的命令配置到sudoers当中。
1.在原来的CDH_SYSTEMCTL命令后面再添加进这三条命令
/usr/bin/pkill -f cloudera-scm-server,
/usr/bin/pkill -f agent$,
/usr/bin/pkill -f supervisord
普通用户user免密sudo的权限配置
5 验证
1.Kill cm-server进程
与预期一致,cm-server进程被kill之后又自动重启。
2.user用户可以kill掉cm-agent进程
3.user用户可以kill掉supervisord进程
4.测试user用户是否可以kill其他进程
这样配置之后,user用户只能killcm-server/cm-agent/supervisord进程,不能kill其他进程。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操