ambari添加自定义服务tomcat(改端口、配置jre环境变量)

ambari添加自定义服务tomcat(改端口、配置jre环境变量

简介

  • 大数据平台ambari自定义服务练手入门——tomcat实战
  • ambari上添加自定义服务tomcat,实现服务启动、服务稳定运行、服务关闭。

环境

  • linux(华为arm)、ambari(HDP2.5)、tomcat7、jdk1.8

目录结构

  • ambari-service_tomcat
    • configuration
      • tomcat-ambari-env.xml
    • package
      • scripts
        • master.py(创建 Service 的生命周期控制脚本master.py)
        • params.py
      • others(其他脚本,具体使用看readme)
        • change_port.sh
        • jdk_install.sh
        • readme.txt
        • server.xml
    • metainfo.xml(定义service的一些属性)

运行

  1. 在ambari的service目录下(一般是/var/lib/ambari-server/resources/stacks/HDP/2.5/services/)添加你编写的自定义服务。
  2. ambari-server restart重启ambari
  3. 在ambari-web界面点击add service,然后按步骤安装和启动
  4. 输入 curl localhost:8090 查看是否启动tomcat(也可以通过配置容器外端口映射来访问)

下载地址

(github)tomcat-service_tomcat

其他参考

添加ambari定制服务可参考
https://cloud.tencent.com/developer/article/1372228

异常处理

问题:SyntaxError: EOL while scanning string literal

可能是由于多个引号,没有闭合导致的错误

报错内容:
org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/apache-tomcat-9.0.38
解决:
打开Tomcat安装后目录,进入conf文件夹,找到配置文件server.xml,将注释掉。

问题:Ambari_tomcat安装后启动了闪退:

花了两天时间排错:
——降低tomcat版本源不可行(之前看到有文章说是我的jre1.8版本和tomcat9不适配导致的闪退)
首先还是必须找到日志所在的地方——查看日志

cat  /var/log/ambari-agent/ambari-agent.log

发现报错:

Traceback (most recent call last):
	  File "/usr/lib/python2.6/site-packages/ambari_agent/PythonReflectiveExecutor.py", line 59, in run_file
	    imp.load_source('__main__', script)
	  File "/var/lib/ambari-agent/cache/stacks/HDP/2.5/services/TOMCAT/package/scripts/master.py", line 80, in 
	    Master().execute()
	  File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/script.py", line 367, in execute
	    method(env)
	  File "/var/lib/ambari-agent/cache/stacks/HDP/2.5/services/TOMCAT/package/scripts/master.py", line 73, in status
	    import params
	  File "/var/lib/ambari-agent/cache/stacks/HDP/2.5/services/TOMCAT/package/scripts/params.py", line 19, in 
	    tomcat_dir = os.path.join(*[tomcat_install_dir, tomcat_dirname])
	  File "/usr/lib64/python2.7/posixpath.py", line 77, in join
	    elif path == '' or path.endswith('/'):
	  File "/usr/lib/python2.6/site-packages/resource_management/libraries/script/config_dictionary.py", line 73, in __getattr__
	    raise Fail("Configuration parameter '" + self.name + "' was not found in configurations dictionary!")
	Fail: Configuration parameter 'tomcat-ambari-config' was not found in configurations dictionary!

发现是因为找不到tomcat-ambari-config配置组,以致于获取不到tomcat的状态所以stopped。
我的文件Master.py中的status() 方法:

    def status(self, env):
        import params
        env.set_params(params)
        check_process_status(params.tomcat_pid_file)

Params.py:

tomcat_install_dir = config['configurations']['tomcat-ambari-config']['tomcat.install_dir']

configuration文件夹下:tomcat-ambari-config.xml:


     
        tomcat.install_dir
        /opt
        Local dir where to install component.
    

原因:
Ambari2.5.0在param.py里读不到tomcat-ambari-config.xml
解决:
能读到-env后缀的xml,所以将tomcat-ambari-config.xml改为tomcat-ambari-env.xml
参考

shell命令须知:

linux中>和>>的区别:

  • linux中>表示覆盖原文件内容,>>表示追加内容。

查看进程:

  • ps aux

查看端口使用情况

  • Netstat -tunlp

一些问题(未填的坑

tomcat切换端口的脚本来源于互联网,未经过测试,可能有坑,待填。

你可能感兴趣的:(AMBARI,学习笔记,运维,shell,python,tomcat)