cronsun 定时任务管理

linux上的定时任务可以通过crontab命令配置,简单但是不方便管理。因此,采用分布式cronsun管理各节点的定时任务,并监控日志。
在这里插入图片描述

1. 在master上安装mongodb

  1. 配置yum源,创建mongodb的repo文件,版本信息根据实际进行改动
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
  1. 安装mongodb
    此处可能报错:GPG key retrieval failed: [Errno 14] curl#6 - “Could not resolve host: www.mongodb.org; Unknown error”,处理办法:https://blog.csdn.net/clementad/article/details/46896075
yum install mongodb-org -y
  1. 修改配置文件
vim /etc/mongod.conf
net:
  port: 27017
  bindIp: 0.0.0.0  

security:
  authorization: enabled
  1. 启动并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod
  1. 创建用户
mongo
use admin
db.createUser({
    
    user:"root",pwd:"123456",roles:[{
    
    role:"userAdminAnyDatabase",db:"admin"},"readWriteAnyDatabase"]})

# 此处进入master节点下创建cronsun用户
mongo --host <masterIP>
use admin
db.auth("root", "123456")
use cronsun
db.createUser({
    
    user:'cronsun',pwd:'123456',roles:[{
    
    role:"userAdmin",db:"cronsun"}]})

2. 在msater上安装etcd

  1. 安装命令
yum install etcd -y
  1. 修改配置文件
vim  /etc/etcd/etcd.conf
ETCD_NAME="master" 
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
  1. 启动服务并且验证状态
systemctl start etcd
etcdctl set testdir/testkey0 0
etcdctl get testdir/testkey0 
etcdctl -C http://<masterIP>:4001 cluster-health
etcdctl -C http://<masterIP>:2379 cluster-health

3. 在master上安装cronsun

  1. 下载并解压安装包,有时候网速慢,github上一直连不上,可以手动去网站下
cd /opt
wget https://github.com/shunfei/cronsun/releases/download/v0.3.5/cronsun-v0.3.5-linux-amd64.zip
unzip cronsun-v0.3.5-linux-amd64.zip
  1. 修改cronsun配置文件
vim /opt/cronsun-v0.3.5/conf/db.json
{
    
    
  "Hosts": [
    "<masterIP>:27017"
  ],
  "Database": "cronsun",
  "#AuthSource": "AuthSource Specify the database name associated with the user’s credentials.",
  "#AuthSource": "AuthSource defaults to the cronsun's Database.",
  "#AuthSource": "If connect mongodb like './bin/mongo mytest -u test -p 123 --authenticationDatabase admin' ",
  "#AuthSource": "the AuthSource is 'admin'. ",
  "AuthSource": "admin",
  "UserName": "root",
  "Password": "123456",
  "#Timeout": "connect timeout duration/second",
  "Timeout": 15
}
vim /opt/cronsun-v0.3.5/conf/etcd.json
{
    
    
    "Endpoints":[
        "http://<masterIP>:2379"
    ],
    "Username":"",
    "Password":"",
    "#DialTimeout":"单位秒",
    "DialTimeout": 2
}
  1. 将cronsun拷贝到集群其他节点地址
scp -r /opt/cronsun-v0.3.5 <other_server>:/opt
  1. 在所有节点上启动cronnode,(采用supervisor维护)
/opt/cronsun-v0.3.5/cronnode -conf /opt/cronsun-v0.3.5/conf/base.json
[program:cronsun_node]
command=/opt/cronsun-v0.3.5/cronnode -conf /opt/cronsun-v0.3.5/conf/base.json
directory=/opt
;process_name=%(process_num)02d?
;numprocs=5
autorestart=true
autostart=true
startsecs=1
startretries=10
stderr_logfile=/opt/cronsun-v0.3.5/stderr.log
stdout_logfile=/opt/cronsun-v0.3.5/stdout.log
;environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
  1. 在master上启动cronweb,(采用supervisor维护)
 /opt/cronsun-v0.3.5/cronweb -conf /opt/cronsun-v0.3.5/conf/base.json
[program:cronsun_web]
command=/opt/cronsun-v0.3.5/cronweb -conf /opt/cronsun-v0.3.5/conf/base.json
directory=/opt
;process_name=%(process_num)02d?
;numprocs=5
autorestart=true
autostart=true
startsecs=1
startretries=10
stderr_logfile=/opt/cronsun-v0.3.5/stderr.log
stdout_logfile=/opt/cronsun-v0.3.5/stdout.log
;environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT

4.访问cronsun界面

masterIP :7079/ui/#/node
默认登录账号密码: [email protected]/admin

5. 问题处理

5.1 断电重启

某次虚拟机意外断电,重启cronsun服务时报错:mongod.service: control process exited, code=exited status=14
在这里插入图片描述
处理方法:执行如下命令

sudo chown mongod:mongod /tmp/mongodb-27017.sock

猜你喜欢

转载自blog.csdn.net/shlhhy/article/details/108800003