概述
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
- scripts
- metainfo.xml(定义service的一些属性)
- configuration
运行
- 在ambari的service目录下(一般是
/var/lib/ambari-server/resources/stacks/HDP/2.5/services/
)添加你编写的自定义服务。 ambari-server restart
重启ambari- 在ambari-web界面点击add service,然后按步骤安装和启动
- 输入
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切换端口的脚本来源于互联网,未经过测试,可能有坑,待填。
最后
以上就是魔幻薯片为你收集整理的ambari添加自定义服务tomcat(改端口、配置jre环境变量)ambari添加自定义服务tomcat(改端口、配置jre环境变量的全部内容,希望文章能够帮你解决ambari添加自定义服务tomcat(改端口、配置jre环境变量)ambari添加自定义服务tomcat(改端口、配置jre环境变量所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复