`

Elastic Job Lite部署

阅读更多

任务调度中心使用:

 

第一个错

linux下执行shell脚本时报错:-bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory。

原因是windows下的文件是dos格式,即每一行结尾以\r\n来标识,而linux下的文件是unix格式,行尾则以\n来标识。

查看文件格式有三种方法:

1.cat -A <filename>,如果输出结果中行末尾是^M$,则是dos格式,如果行末尾只是$,则是unix格式。

2.vim <filename>,编辑文件,执行“:set ff”,若执行结果为fileformat=dos则为dos格式,若执行结果为fileformat=unix则为unix格式。

3.od -t x1 <filename>,以16进制查看文件,若输出结果中存在“0d 0a”则为dos格式,如果只有“0a”则为unix格式。其中“0d”即为回车符“\r”,“0a”即为换行符“\n”。

修改文件格式有三种方式:

1.sed -i "s/\r//" <filename>或sed -i "s/^M//" <filename>,直接将回车符替换为空字符串。

2.vim <filename>,编辑文件,执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。

3.dos2unix <filename>或busybox dos2unix <filename>,如果提示command not found,可以使用前两种方法。

第二个错,再执行

./start.sh: line 34: java: command not found

查看文件的34行是:java -classpath ${LIB_DIR}:. ${CONSOLE_MAIN} $port$

看是JDD环境设置不对,

解决办法:

在执行脚本上加入如下配置即可

#!/bin/bash

JAVA_HOME=/export/servers/jdk1.8.0_20

export PATH=$PATH:$JAVA_HOME/bin

第三个错,再执行

[INFO ] 2021-03-04 08:31:16,120 --main-- [io.elasticjob.lite.lifecycle.restful.RestfulServer] Elastic Job: Start RESTful server                                 
[INFO ] 2021-03-04 08:31:16,140 --main-- [org.eclipse.jetty.server.Server] jetty-8.1.19.v20160209                                                               
[WARN ] 2021-03-04 08:31:16,308 --main-- [org.eclipse.jetty.util.component.AbstractLifeCycle] FAILED SelectChannelConnector@0.0.0.0:80: java.net.BindException: 
地址已在使用                                                                                                                                                          
java.net.BindException: 地址已在使用                                                                                                                                  
        at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_20]                                                                                                   
        at sun.nio.ch.Net.bind(Net.java:436) ~[na:1.8.0_20]                                                                                                     
        at sun.nio.ch.Net.bind(Net.java:428) ~[na:1.8.0_20]                                                                                                     
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214) ~[na:1.8.0_20]                                                             
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.8.0_20]                                                                      
        at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187) ~[jetty-all-server-8.1.19.v20160209.jar:8.1.19.v20160209]  
        at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316) ~[jetty-all-server-8.1.19.v20160209.jar:8.1.19.v20160209]             
        at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265) ~[jetty-all-server-8.1.19.v20160209.jar:8.1.19.v20160209
]                                                                                                                                                               
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) [jetty-all-server-8.1.19.v20160209.jar:8.1.19.v20160209]         
        at org.eclipse.jetty.server.Server.doStart(Server.java:293) [jetty-all-server-8.1.19.v20160209.jar:8.1.19.v20160209]                                    
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) [jetty-all-server-8.1.19.v20160209.jar:8.1.19.v20160209]         
        at io.elasticjob.lite.lifecycle.restful.RestfulServer.start(RestfulServer.java:84) [elastic-job-lite-lifecycle-3.0.0.M1-SNAPSHOT.jar:na]                
        at io.elasticjob.lite.lifecycle.restful.RestfulServer.start(RestfulServer.java:62) [elastic-job-lite-lifecycle-3.0.0.M1-SNAPSHOT.jar:na]                

        at io.elasticjob.lite.console.ConsoleBootstrap.main(ConsoleBootstrap.java:61) [elastic-job-lite-console-3.0.0.M1-SNAPSHOT.jar:na]                   

就其原因是容器 80端口已经被Nginx占用,并且,Linux系统不允许非root账号使用1024以下的端口。

解决办法:先把start.sh端口号改成其默认8899,然后,

Linux系统不允许非root账号使用1024以下的端口,所以Jetty要使用80端口启动只有两个方法,或者使用root,账号启动,或者使用iptables做本地端口映射。由于使用root账号启动Jetty会存在安全隐患,不推荐这么做。在本地做端口映射看起来是最合理的做法。iptables直接在网卡上做的四层端口映射,效率会比Nginx的七层代理要高很多。下面来聊聊怎么使用iptables做本地端口映射。

 

1.使用iptables查看本地的策略

iptables -L -n -v

可以查看所有非nat的本地路由策略,只能看到INPUT\OUTPUT\FORWORD三个表的策略,如果需要看NAT表的策略,需要加-t nat。而内部端口映射的策略需要加到NAT表中的。

iptables -L -n -v -t nat

 

2.增加端口映射的策略

所有发送到本地网卡上的80端口的请求,转发到本地8899:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8899

 

加上上面这条策略后,所有发送到网卡上的80请求会映射到8080,但是如果本地访问127.0.0.1的时候,端口还是映射不过去,因为本地访问127.0.0.1的事情,请求不会到网卡,直接到lo了,所以还需要增加一条本地请求的策略:

iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8899

 

这样无论本地还是,别的机器所有发送到80的请求都会转发到8080。但是需要注意的一点是,从netstat中是看不到80端口的监听的,这个请求转发是在网卡上完成的。

 

3.删除本地策略

如果只是测试,可以使用下面的命令删除刚才创建的策略:

iptables -F -t nat

 

PS,如果使用非ROOT用户启动jetty去绑定80端口,会在日志中看到以下的错误:

2012-09-13 20:37:18.077:WARN::failed SelectChannelConnector@0.0.0.0:80: java.NET.SocketException: 权限不够

 

这次再执行启动命令,信息如下:

[1] 13130                                                                                                                                                       

sh-4.1# nohup: 忽略输入并把输出追加到"nohup.out" 

浏览器地址输入对应机器IP,

 image2021-3-4_15-57-13.png

部署成功了了。

 

分享到:
评论

相关推荐

    elastic job lite console 部署控制台

    用maven将elastic job lite源码编译的压缩包,解压缩在 elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz\bin目录下是启动脚本 windows环境用:start.bat linux环境用:start.sh

    elastic-job-lite-console-2.1.4.tar.gz

    《Elastic-Job Lite Console 2.1.4:分布式任务调度管理的得力助手》 Elastic-Job Lite Console 2.1.4是一款基于Elastic-Job Lite的轻量级分布式任务调度管理工具,它为开发者提供了一个可视化的控制台,用于方便地...

    elastic-job-lite-console-2.1.5

    Elastic-Job Lite Console是...综上所述,Elastic-Job Lite Console 2.1.5是分布式定时任务管理的一个优秀工具,它结合了Elastic-Job Lite的强大功能和轻量级部署的特性,为开发和运维人员提供了便捷的管理和监控手段。

    elastic-job-lite-console-2.1.5.zip[支持Windows/Os/Linux]

    Elastic-Job是一个分布式任务调度框架,由两个独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。这里的"elastic-job-lite-console-2.1.5.zip"是一个压缩包,其中包含了Elastic-Job-Lite的控制台版本,支持在...

    elastic-job-lite-console-master.zip

    用户可以编译源码并部署到自己的服务器上,自定义配置并接入自己的Elastic-Job集群。 总之,Elastic-Job-Lite Console为Elastic-Job-Lite的使用者提供了一个直观且强大的管理工具,通过这个控制台,运维人员可以...

    elastic-job-lite-console-2.1.5.tar.gz

    在部署Elastic-Job-Lite Console 2.1.5时,首先需要解压"elastic-job-lite-console-2.1.5"压缩包,然后根据提供的文档配置服务器环境和数据库连接,接着启动服务。在浏览器中输入服务器地址即可访问控制台。在实际...

    elastic-job-lite-console-2.1.5.tar

    Elastic-Job分为Elastic-Job-Lite和Elastic-Job-Cloud两个版本,其中Elastic-Job-Lite是轻量级的离线分布式作业调度框架,它不依赖任何云平台,适合在各种环境部署。Elastic-Job-Lite提供了一套完整的作业解决方案...

    elasticjob-job-lite-console-2.1.3

    在Linux环境下,部署ElasticJob-Lite控制台通常涉及以下几个关键知识点: 1. **WAR包部署**:WAR文件是一种Web应用程序的归档格式,用于在Java Web服务器上运行。将`elastic-job-lite-console-2.1.3.war`部署到支持...

    elastic-job-lite-console-2.1.5.zip

    Elastic-Job Lite Console 是一个基于 Elastic-Job 框架的轻量级管理控制台,版本号为 2.1.5。Elastic-Job 是由当当网开源的一个分布式任务调度框架,它分为 Lite 版本和 Cloud 版本,其中 Lite 版本更适合中小型...

    elastic-job-lite-master.zip

    而Elastic-Job-Cloud则是在Elastic-Job-Lite基础上增加了YARN的资源调度管理,适合大规模集群部署。 二、Elastic-Job Lite核心特性 1. **分布式任务拆分**:Elastic-Job Lite将一个大任务拆分成多个子任务,并均匀...

    elastic-job-lite-console-2.1.4

    elastic-job-lite-console-2.1.4.tar.gz,可以在windows或者linux环境部署。控制台和Elastic Job并无直接关系,是通过读取Elastic Job的注册中心数据展现作业状态,或更新注册中心数据修改全局配置。

    elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz

    7. **标签解析**:“elastic-job-lite”、“jobConsole”和“elasticJob”都是与Elastic-Job相关的关键词,它们分别对应Elastic-Job的轻量级组件、Elastic-Job Lite Console(即本压缩包的主要内容)和整个Elastic-...

    ElasticJob 中文文档.pdf

    在部署时,需要确保 ZooKeeper 集群的稳定性,否则会影响到 ElasticJob 作业的稳定执行。 在维护和使用 ElasticJob 的过程中,还需要关注作业的监控和告警,特别是在高并发和大数据量的环境下,需要对作业的执行...

    当当网elasticjob分布式调度示例

    2. **云原生**:ElasticJob-Cloud 贴合云环境,支持自动化部署、扩缩容、服务发现等功能,符合云原生应用的设计原则。 3. **服务治理**:与 ElasticJob-Lite 相比,ElasticJob-Cloud 引入了更多的服务治理功能,如...

Global site tag (gtag.js) - Google Analytics