我理解的Cronsun 简单来说是基于go语言编写的一个带ui界面的crontab管理工具,让我们可以在web页面上统一管理多个服务器上的定时任务,也可以看到每次任务执行结果。
网上关于Cronsun的安装部署教程不是很多,这里记录一下的我的安装部署过程。
下面是我在ubuntu环境下安装部署多节点cronsun的过程
准备的三台机器ip分别是172.16.202.128,172.16.202.136,172.16.202.137,分别在三台机器上配置etcd集群,mongodb,cronsun
etcd
创建etcd工作文件夹
mkdir -p /var/lib/etcd
mkdir -p /etc/etcd
下载etcd3: wget https://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz
tar -xzvf
解压到 /opt 目录下
目录下有两个可执行文件etcd 和 etcdctl
cp etcd /usr/bin/
cp etcdctl /usr/bin/
配置服务
# vim /etc/systemd/system/etcd.service
(添加以下内容)
Description=Etcd Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
[Install]
WantedBy=multi-user.target
etcd集群配置
vim /etc/etcd/etcd.conf
172.16.202.128上的etcd配置
#[member]
ETCD_NAME=etcd1
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://172.16.202.128:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.202.128:2379,http://127.0.0.1:2379"
#[cluster]
ETCD_LISTEN_PEER_URLS="http://172.16.202.128:2380" #集群内部通信使用的URL
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.202.128:2380"
#广播给集群内其他成员访问的URL
ETCD_INITIAL_CLUSTER="etcd1=http://172.16.202.128:2380,etcd2=http://172.16.202.136:2380,etcd3=http://172.16.202.137:2380"
#初始集群成员列表
ETCD_INITIAL_CLUSTER_STATE="new"
#初始集群状态,new为新建集群
ETCD_INITIAL_CLUSTER_TOKEN="cronsun-etcd-cluster" #集群的名称
172.16.202.136上的etcd配置
#[member]
ETCD_NAME=etcd2
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://172.16.202.136:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.202.136:2379,http://127.0.0.1:2379"
#[cluster]
ETCD_LISTEN_PEER_URLS="http://172.16.202.136:2380" #集群内部通信使用的URL
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.202.136:2380"
#广播给集群内其他成员访问的URL
ETCD_INITIAL_CLUSTER="etcd1=http://172.16.202.128:2380,etcd2=http://172.16.202.136:2380,etcd3=http://172.16.202.137:2380"
#初始集群成员列表
ETCD_INITIAL_CLUSTER_STATE="new"
#初始集群状态,new为新建集群
ETCD_INITIAL_CLUSTER_TOKEN="cronsun-etcd-cluster" #集群的名称
172.16.202.137上的etcd配置
#[member]
ETCD_NAME=etcd3
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://172.16.202.137:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.202.137:2379,http://127.0.0.1:2379"
#[cluster]
ETCD_LISTEN_PEER_URLS="http://172.16.202.137:2380" #集群内部通信使用的URL
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.16.202.137:2380"
#广播给集群内其他成员访问的URL
ETCD_INITIAL_CLUSTER="etcd1=http://172.16.202.128:2380,etcd2=http://172.16.202.136:2380,etcd3=http://172.16.202.137:2380"
#初始集群成员列表
ETCD_INITIAL_CLUSTER_STATE="new"
#初始集群状态,new为新建集群
ETCD_INITIAL_CLUSTER_TOKEN="cronsun-etcd-cluster" #集群的名称
etcd相关命令
关闭:systemctl enable etcd.service
启动:systemctl start etcd.service
查看集群节点: etcdctl member list
测试服务状态:etcdctl cluster-health
查看etcd运行日志:journalctl -xe -u etcd
#遇到etcd启动有问题的时候通过查看日志可以快速定位到问题
mongodb
下载mongodb: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.2.tgz
tar -xzvf
解压到 /opt 目录下
cd /opt/mongodb-linux-x86_64-4.0.2
mkdir -p /data/db
mkdir -p /data/logs
vim /etc/mongodb/mongodb.conf
dbpath=/data/db
logpath=/data/logs/mongo.log
bind_ip=0.0.0.0
logappend=true
fork=true
port=27017
启动mongodb: bin/mongod --config /etc/mongo/mongodb.conf
cronsun:
wget https://github.com/shunfei/cronsun/releases/download/v0.3.5/cronsun-v0.3.5-linux-amd64.zip
tar -xzvf cronsun-v0.3.5-linux-amd64 -C /opt
cd /opt/cronsun-v0.3.5
vim /opt/cronsun-v0.3.5/conf/db.json
"Hosts": [
"172.16.202.137:27017" # 这里改为mongodb监听的ip和端口
],
vim /opt//cronsun-v0.3.5/conf/etcd.json
"Endpoints":[
"http://172.16.202.137:2379" # 这里改为etcd监听的ip和端口
],
后台启动cronsun
nohup ./cronweb -conf conf/base.json > /dev/null &
nohup ./cronnode -conf conf/base.json > /dev/null &
到此多节点任务系统就可以了 访问 http://ip:7079,任意节点均可访问,且每个节点上的数据都是一样的
vim /opt/cronsun-v0.3.5/conf/mail.conf
{
"Enable": true, //打开报警
"To": ["*****@****.com","****@qq.com"], //发送对象
"Keepalive": 60,
"Host": "smtp.exmail.qq.com",
"Port": 465,
"Username": "****@****.com", //发送邮件的账号
"Password": "*****", //发送邮件的密码
"SSL": true,
"LocalName": ""
}
重启cronweb 刷新后在任务管理界面打开报警
etcd配置详解
#[member]
ETCD_NAME=etcd1 #节点名称,默认为default,本例中三台机器分别为:etcd1,etcd2,etcd3
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #服务运行数据保存的路径,本例中指定独立分区
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.90:2379,http://127.0.0.1:2379" #监听的客户端服务地址
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.90:2379,http://127.0.0.1:2379"
#对外公告的该节点客户端监听地址,这个值会告诉集群中其他节点。
#[cluster]
ETCD_LISTEN_PEER_URLS="http://192.168.10.90:2380"#监听的同伴通信的地址,比如http://ip:2380,如果
有多个,使用逗号分隔。需要所有节点都能够访问,所以不要使用 localhost!
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.90:2380" #对外公告的该节点同伴监听地址,这
个值会告诉集群中其他节点
#广播给集群内其他成员访问的URL
ETCD_INITIAL_CLUSTER="etcd1=http://192.168.10.90:2380,etcd2=http://192.168.10.91:2380,
etcd3=http://192.168.10.92:2380"
#集群中所有节点的信息
ETCD_INITIAL_CLUSTER_STATE="new" #新建集群的时候,这个值为 new;假如加入已经存在的集群,
这个值为 existing。
#初始集群状态,new为新建集群
ETCD_INITIAL_CLUSTER_TOKEN="vagrant-etcd-cluster" #集群的名称
网友评论