`

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

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

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

    elastic-job-lite-console-3.0.0.M1-SNAPSHOT 最新的elastic-job打包成,已经部署测试没有问题

    elastic-job-lite-console-2.1.5

    当当开源系统elastic-job的控制台 无需tomcat部署 直接运行bin下命令即可运行 然后访问localhost:8989 登录的用户名密码都是root

    ElasticJob分布式调度解决方案是面向互联网生态和海量任务的分布式调度解决方案.rar

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的...

    shardingsphere-elasticjob:分布式计划作业框架

    ElasticJob是一种分布式调度解决方案,由两个单独的项目(ElasticJob-Lite和ElasticJob-Cloud)组成。 通过灵活的调度,资源管理和作业管理功能,它创建了适合Internet场景的分布式调度解决方案,并通过开放式架构...

    elastic-job.pptx

    分为引言,其他分布式任务调度框架的痛点,为什么选择elastic-job这个框架,elastic-job框架的特点,elastic-job-lite和elastic-job-cloud这两个框架各有什么特点,代码以及如何进行环境部署,elastic-job是如何进行...

    ElasticJob分布式调度解决方案.rar

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的...

    Elastic-Job编译部署运维平台 Console

    从 Elastic-Job 的 github 地址下载源码:https://github.com/elasticjob/elastic-job-lite 如果不想自己编译可以直接下载我打包好的,解压后直接使用,具体操作下面有步骤: 链接:...

    ElasticJob分布式调度解决方案 v3.0.0

    为您提供ElasticJob分布式调度解决方案下载,ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及...

    shardingsphere-elasticjob:分布式计划作业框架

    ElasticJob是一个分布式调度解决方案,由两个单独的项目(ElasticJob-Lite和ElasticJob-Cloud)组成。 通过灵活的调度,资源管理和作业管理功能,它创建了适合Internet场景的分布式调度解决方案,并通过开放式架构...

    分布式作业调度解决方案elasticjob-3.0.3

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的...

    ElasticJob:分布式调度作业框架-开源

    ElasticJob 是一个分布式调度解决方案,由两个独立的项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 ElasticJob-Lite 是一个轻量级、去中心化的解决方案,提供分布式任务分片服务。 ElasticJob-Cloud 使用 Mesos ...

    elastic:Elastic-Job是当当网大牛基于Zookepper,Quartz开发并且开源的Java分布式定时任务,解决Quartz不支持分布式的弊端。它由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成

    Elastic-Job由2个独立的子项目组成:Elastic-Job-Lite和Elastic-Job-Cloud。 Elastic-Job-Lite是一种无中心的解决方案,使用轻量级的jar来协调分布式作业。 Elastic-Job-Cloud是一个Mesos框架,它使用Mesos + ...

    elastic-job-master.zip

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的...

    ElasticJob分布式调度解决方案-其他

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的...

    大数据“分布式调度框架”大集合.docx

    2.2、Elastic-job Elastic-job是当当开源的一款非常好用的作业框架,Elastic-job在2.x之后,出现了两个相互独立的产品线:Elastic-job-lite和Elastic-job-cloud。 2.2.1、Elastic-job-lite Elastic-job-lite定位为...

    开涛高可用高并发-亿级流量核心技术

    14.7.4 Elastic-Job-Lite功能与架构 287 14.7.5 Elastic-Job-Lite示例 288 15 队列术 295 15.1 应用场景 295 15.2 缓冲队列 296 15.3 任务队列 297 15.4 消息队列 297 15.5 请求队列 299 15.6 数据总线队列 300 15.7...

Global site tag (gtag.js) - Google Analytics