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,将<Listener className="org.apache.catalina.startup.VersionLoggerListener" />注释掉。

问题: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 <module>
	    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 <module>
	    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:

<configuration>
     <property>
        <name>tomcat.install_dir</name>
        <value>/opt</value>
        <description>Local dir where to install component.</description>
    </property>
…

原因:
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切换端口的脚本来源于互联网,未经过测试,可能有坑,待填。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值