centos

centos定时任务如何实现高可用

小樊
47
2025-11-24 01:38:15
栏目: 智能运维

在CentOS系统中,实现定时任务的高可用可以通过以下几种方式:

1. 使用Cron和Keepalived

步骤:

  1. 安装Keepalived

    sudo yum install keepalived -y
    
  2. 配置Keepalived: 编辑/etc/keepalived/keepalived.conf文件,配置VIP和故障转移逻辑。

    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1234
        }
        virtual_ipaddress {
            192.168.1.100
        }
    }
    
  3. 启动Keepalived

    sudo systemctl start keepalived
    sudo systemctl enable keepalived
    
  4. 配置Cron任务: 编辑用户的crontab文件:

    crontab -e
    

    添加定时任务,例如每分钟执行一次脚本:

    * * * * * /path/to/your/script.sh
    

2. 使用Cron和Pacemaker

步骤:

  1. 安装Pacemaker和Corosync

    sudo yum install pacemaker corosync -y
    
  2. 配置Corosync: 编辑/etc/corosync/corosync.conf文件,配置集群节点信息。

    totem {
        version: 2
        cluster_name: my_cluster
        transport: udpu
    }
    nodelist {
        node {
            ring0_addr: node1_ip
            nodeid: 1
        }
        node {
            ring0_addr: node2_ip
            nodeid: 2
        }
    }
    quorum {
        provider: corosync_votequorum
    }
    logging {
        to_logfile: yes
        logfile: /var/log/corosync/corosync.log
        to_syslog: yes
    }
    
  3. 启动Pacemaker和Corosync

    sudo systemctl start corosync
    sudo systemctl enable corosync
    sudo systemctl start pacemaker
    sudo systemctl enable pacemaker
    
  4. 配置Cron任务: 同上,编辑用户的crontab文件,添加定时任务。

3. 使用Cron和Kubernetes CronJobs

如果你在Kubernetes集群中运行应用,可以使用Kubernetes CronJobs来实现高可用。

步骤:

  1. 创建CronJob YAML文件

    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: my-cronjob
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: my-container
                image: my-image
                command:
                - /path/to/your/script.sh
              restartPolicy: OnFailure
    
  2. 部署CronJob

    kubectl apply -f cronjob.yaml
    

总结

选择哪种方法取决于你的具体需求和环境。如果是在物理服务器或虚拟机上运行,Keepalived是一个不错的选择。如果是在Kubernetes集群中,使用Kubernetes CronJobs会更加方便和高效。Pacemaker则适用于需要更复杂集群管理的场景。

0
看了该问题的人还看了