Dkron 集群在window下的安装部署

本文详细介绍Dkron分布式定时任务系统在Windows环境下的安装与集群部署过程,涵盖配置信息、命令行操作、节点信息配置、执行任务方式及日志管理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dkron 集群在window下的安装部署
由于在项目中要用到分布式定时任务系统管理项目中的定时任务。就研究了一下国外的一个开源项目Dkron,当然这个项目也有收费版的,我研究的只是免费版的,基本的功能可以满足需要。以下是我研究的主要内容,基于windows系统下的部署。很多信息,也是从官网得到,记录下来,方便自己回顾和大家交流学习。

1.安装包下载

从https://dkron.io/上下载最新版二进制安装包,本次下载的版本是 dkron_3.0.4_windows_amd64.tar

2.集群部署

  1. 首先把安装包分别放在三个集群中,集群地址172.21.15.21 ;172.21.15.31;172.21.15.32 分别在每个集群中创建一个文件夹如dkron的文件夹,在文件夹中解压二进制安装包

    1. 解压后,在dkron文件夹内,再创建一个文件夹,文件夹命名为config,这个文件夹主要存放配置文件的,在config文件夹内新建一个yml文件,命名为dkron.yml

在这里插入图片描述

    3.    在集群中每个dkron.yml文件里添加配置信息,其中node-name是每个集群中节点的名称,不可以重复

在这里插入图片描述
在这里插入图片描述

    4.     利用命令行的方式操作dkron

在集群中每个节点中操作相同的命令,第一步是进入到dkron安装包解压所在文件夹-→cd D:\dkron
第二步:启动dkron节点服务器 → dkron agent --server
在每个节点运行这两步骤,集群就建立起来了,为了检测集群是否搭建成功,可以在在浏览器中输入webui界面查看节点信息,如:172.21.15.21:8080 出现以下信息就表示集群建立成功。

3.相关配置信息

1.dkron agent 的命令行操作CLI相关配置信息

dkron 的命令行操作都以dkron 开头,后面可以跟着不同的配置信息,例如在命令行敲出以下命令 :dkron agent --server --bootstrap-expect= 1 表示dkron以代理服务器形式启动,并且提供数据中心中预期的服务器数量为1。 其他相关配置dkron agent信息如下:

–advertise-addr String 用于向集群中其他节点进行公告的地址。缺省情况下,发布绑定地址。该值支持go-sockaddr / template格式。

–advertise-rpc-port int 默认使用rpc-port的值

–bind-addr String 指定代理应为网络服务绑定的地址,包括内部八卦协议和RPC机制。该名称应以IP格式指定,并且可用于轻松地将所有网络服务绑定到同一地址。该值支持go-sockaddr / template格式。 (默认为“ {{GetPrivateIP}}:8946”)

–bootstrap-expect int 提供数据中心中预期的服务器数量。要么不提供此值,要么该值必须与集群中的其他服务器一致。如果提供了Dkron,Dkron将等待直到指定数量的服务器可用为止,然后引导群集。这样可以自动选举最初的领导者。该标志要求服务器模式。

–data-dir String 指定用于服务器特定数据(包括复制的日志)的目录。默认情况下,这是顶级数据目录,例如[/ var / lib / dkron](默认为“ dkron.data”)

–datacenter String 指定本地代理的数据中心。数据中心的所有成员应共享本地LAN连接。 (默认为“ dc1”)

–dog-statsd-addr String DataDog代理地址

–dog-statsd-tags String Datadog标签,指定为key:value

–enable-prometheus 启用服务普罗米修斯指标

–encrypt string 用于加密网络流量的密钥。必须是base64编码的16字节密钥
-h,–help代理帮助

–http-addr String 将 UI Web服务器绑定到的地址。仅在服务器时使用。该值支持go-sockaddr / template格式。 (默认为“:8080”)

–join String 要加入的初始代理。可以多次指定此标志

–log-level String 日志级别(调试|信息|警告|错误|致命|紧急)(默认为“信息”)

–mail-from String 从电子邮件地址使用

–mail-host String 用于通知的邮件服务器主机地址

–mail-password String 要使用的邮件服务器密码

–mail-payload string 通知邮件有效载荷

–mail-port uint16 邮件服务器端口

–mail-subject-prefix String 通知邮件主题前缀(默认为“ [Dkron]”)

–mail-username String 用于身份验证的邮件服务器用户名

–node-name String 此节点的名称。在集群中必须唯一(默认为“ pris.local”)

–profile String Profile用于控制使用的时序配置文件(默认为“ lan”)

–raft-multiplier int 服务器用来缩放关键Raft时序参数的整数乘数。省略此值或将其设置为0会使用下面介绍的默认计时。较低的值用于拉紧时序并增加灵敏度,而较高的值则用于放松时序并降低灵敏度。进行此调整会影响检测领导者故障和执行领导者选举所花费的时间,但代价是需要更多的网络和CPU资源才能获得更好的性能。默认情况下,Dkron将使用较低性能的计时,适用于最小的Dkron服务器,当前等效于将此值设置为5(此默认值可能会在将来的Dkron版本中更改,具体取决于目标最低服务器配置文件是否更改)。将此值设置为1将建议将Raft配置为其最高性能模式,以用于生产Dkron服务器。允许的最大值为10。(默认值为1)

–region String 指定Dkron代理所属的区域。一个区域通常会映射到一个具有潜在多个区域的地理区域(例如我们),这些区域会映射到诸如us-west和us-east(默认为“ global”)之类的数据中心

–retry-interval string 两次连接尝试之间等待的时间。 (默认为“ 30s”)

–retry-join String 在启用重试后开始时要加入的代理的地址。可以多次指定。

–retry-max int 最大连接尝试次数。默认为0,它将无限期重试。

–rpc-port int 用于与客户端通信的RPC端口。仅在服务器时使用。 RPC IP地址将与绑定地址相同(默认值为6868)

–serf-reconnect-timeout String 这是在放弃并认为它完全消失之前尝试重新连接到故障节点的时间。在Kubernetes中,您可能需要5秒钟左右的时间,因为没有理由尝试为默认的24h值重新连接。如果未收获节点并返回具有相同ID但不同的ID,则Raft的行为也会很奇怪

–server 该节点以服务器模式运行

–statsd-addr String Statsd地址

–tag String 可以多次指定标签,以将多个键/值标签对附加到给定节点,指定为key = value

–webhook-headers String 调用webhook URL时使用的标题。 可以多次指定

–webhook-payload String 在webhook调用中发送的POST请求的正文

–webhook-url String 调用通知的Webhook URL

2. curl localhost:8080/v1 检查服务器是否正常工作

3.配置信息参考

#Dkron example configuration file
#server: false
#bootstrap-expect: 3
#data-dir: dkron.data
#log-level: debug
#tags:
#dc: east
#encrypt: a-valid-key-generated-with-dkron-keygen
#retry-join:
#- 10.0.0.1
#- 10.0.0.2
#- 10.0.0.3
#raft-multiplier: 1
#webhook-url: https://hooks.slack.com/services/XXXXXX/XXXXXXX/XXXXXXXXXXXXXXXXXXXX
#webhook-payload: “payload={“text”: “{{.Report}}”, “channel”: “#foo”}”
#webhook-headers: Content-Type:application/x-www-form-urlencoded
#mail-host: email-smtp.eu-west-1.amazonaws.com
#mail-port: 25
#mail-username": mailuser
#mail-password": mailpassword
#mail-from": cron@example.com
#mail-subject_prefix: [Dkron]

4.节点信息配置参考

为节点分配job时候,可以选择在哪些节点去执行,选择节点的方式如下
{
“tags”: {
“dc”: “dc1”,
“expect”: “3”,
“port”: “6868”,
“region”: “global”,
“role”: “dkron”,
“rpc_addr”: “10.88.94.129:6868”,
“server”: “true”,
“version”: “devel”,
“my_role”: “web”
}
}
可以选择一个属性,也可以选择多个属性,如:
“tags”: {
“my_role”: “web”
}

这个就是在集群中,所有my_role是web的都会执行定时任务

“tags”: {
“my_role”: “web:1”
}
上边这个是在集群中,只运行一个节点的任务

“tags”: {
“my_role”: “web”,
“role”: “dkron”
}
上面是组合选择多个属性,多个属性之间是用and连接,如果不在tags指定的集群成员,则不运行,如果不指定tags,则默认所有的集群成员都执行job任务

5.执行任务的方式

执行任务又分两种
1.是http请求执行
HTTP执行程序可以将请求发送到HTTP端点,参数如下

Method:大写的请求方法
Url:请求网址
head:Json字符串,例如“ [\“ Content-Type:application / json \”]“
body:POST正文
timeout:请求超时,单位秒
ExpectCode:期望响应代码,例如200,206
ExpectBody:期望响应主体,支持正则表达式,例如/ success /
debug:调试选项,当此选项不为空时,将记录所有内容
tlsNoVerifyPeer:假(默认)或真。 如果为true,则禁用对远程SSL证书有效性的验证。
tlsCertificateFile:包含客户端证书的PEM文件的路径。 可选的。
tlsCertificateKeyFile:包含客户端证书私钥的PEM文件的路径。 可选的。
tlsRootCAsFile:PEM文件的路径,该文件包含用作根CA的证书。 可选的。

{
“executor”: “http”,
“executor_config”: {
“method”: “GET”,
“url”: “http://example.com”,
“headers”: “[]”,
“body”: “”,
“timeout”: “30”,
“expectCode”: “200”,
“expectBody”: “”,
“debug”: “true”
}
}
较完整的job输入
{
“name”: “job01”,
“displayname”: “test01”,
“timezone”: “”,
“schedule”: “@every 30s”,
“owner”: “Platform Team”,
“owner_email”: “platform@example.com”,
“success_count”: 91,
“error_count”: 0,
“last_success”: “2020-08-21T07:33:23.9005366Z”,
“last_error”: null,
“disabled”: false,
“tags”: {
“server”: “true”
},
“metadata”: null,
“retries”: 3,
“dependent_jobs”: null,
“parent_job”: “”,
“processors”: {},
“concurrency”: “allow”,
“executor”: “http”,
“executor_config”: {
“body”: “”,
“debug”: “true”,
“expectBody”: “”,
“expectCode”: “200”,
“headers”: “[]”,
“method”: “GET”,
“timeout”: “30”,
“url”: “http://example.com.com”
},
“status”: “success”,
“next”: “2020-08-21T07:33:51Z”
}
通过dashboard创建job,首先打开dashboard页面,注意到在上面菜单栏有jobs菜单项,如下图所示:点击jobs
在这里插入图片描述

然后进入jobs页面,jobs页面主要有三项数据展示,最上边红框里是总体job的概况,中间有添加job的按钮,下边是具体job执行情况和状态信息。我们添加job,点击中间红色加号就可以
在这里插入图片描述

点击加号后,弹出编辑信息,编写job任务信息即可
在这里插入图片描述

    2.  是shell 脚本执行

Shell执行程序运行系统命令 参数如下:
shell:使用shell环境运行此命令
Commend:要运行的命令
env:Env vars,以逗号分隔 环境变量
cwd:命令运行前的目录

{
“executor”: “shell”,
“executor_config”: {
“shell”: “true”,
“command”: “my_command”,
“env”: “ENV_VAR=va1,ANOTHER_ENV_VAR=var2”,
“cwd”: “/app”
}
}

6. dkron keygen dkron密钥的生成

在命令行中执行以下命令: dkron keygen 就可以生成一个密钥,然后复制密钥,在dkron集群的配置文件中,配置相应的密钥,就可以保证代理之间加密连接
在这里插入图片描述

如上图所示:在集群的所有的配置文件中加上生成的密钥,即可
如果集群成员的密钥不同,或者有的成员没有加上密钥,则这个成员就加入不了集群

7.日志管理

  1. job任务输出的日志文件位置设置 这里的输出,主要指job的任务信息和http请求返回的数据
    通过在配置文件中添加以下信息:
    ”processors“: {
    “files”: {
    “log_dir”: “C:/users/dkron/log”, 这里就是数据返回的信息即log所在的本地地址 注意log是文件夹,每次执行job,会在log文件夹下生成不同的log文件信息
    “forward”: “true”
    }
    }

  2. 日志输出写入stdout/stderr 即日志输出写入在命令行页面上进行展示

”processors“: {
“log”: {
“forward”: “true”
}
}

还有一些其他的功能没有完全记录和验证,如果有感兴趣的可以留言交流一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值