mongodb备份脚本

DUMP=/usr/local/mongodb/bin/mongodump    #mongodump命令路径


OUT_DIR=/data/mongodb_bak/mongodb_bak_now    #临时备份目录

TAR_DIR=/data/mongodb_bak/mongodb_bak_list    #备份存放路径

DATE=`date +%Y_%m_%d_%H_%M`   #获取当前系统时间 


DB_USER=YOUR_DB_USERNAME    #数据库账号 


DB_PASS=YOUR_DB_USER_PASSWORD    #数据库密码



DAYS=20    #DAYS=20代表删除20天前的备份,即只保留近20天的备份


TAR_BAK="mongodb_bak_$DATE.tar.gz"    #最终保存的数据库备份文件



cd $OUT_DIR



rm -rf $OUT_DIR/*



mkdir -p $OUT_DIR/$DATE

 
$DUMP -h YOUR_DB_HOST -u $DB_USER -p $DB_PASS --authenticationDatabase "YOUR_DB_NAME" -o $OUT_DIR/$DATE   #备份全部数据库


tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE    #压缩为.tar.gz格式



find $TAR_DIR/ -mtime +$DAYS -delete   #删除20天前的备份文件


exit

复制代码,命名为mongodb_bak.sh,加入系统定时任务。

crontab -e

acme.sh证书同步到华为云

项目代码

环境

  • 华为云 ubuntu 18.04
  • Docker version 19.03.8, build afacb8b7f0
  • docker-compose version 1.25.4, build 8d51620
  • image: neilpang/acme.sh v2.8.6
  • image: jenkins/jenkins:lts Jenkins ver. 2.204.5

目标

  • acme.sh自动更新证书
  • 使用华为云的负载均衡 https监听
  • 证书更新后自动同步到华为云

实现方案

  • server上通过docker部署acme.sh
  • 使用nodejs调用华为云api实现更新证书
  • 使用jenkins实现证书更新后自动调用nodejs

部署acme.sh实现自动更新证书

acme.sh可以通过aliyun_dns_api完成证书颁发,需要阿里云的app_key和app_secret。

参考链接

你可以直接安装acme.sh就能实现。但是当你有多个域名并且分布在多个阿里云帐号的时候,直接安装acme.sh可能解决不了问题(尝试过,但是没配置成功),而用docker跑acme.sh可以完美解决这个问题。所以这里用docker来跑acme.sh。

参考 ilaipi/acme.sh-docker 完成部署

自动更新证书到华为云

GitHub Repo 看源码部署

Jenkins自动同步到华为云

acme.sh有notify机制,notify到个人邮箱,jenkins配置一个任务,通过邮件触发(需要安装一个邮件触发的插件Poll Mailbox Trigger Plugin),检查到邮件就执行服务器上的自动更新代码。

(目前还在实验阶段)

在acme的容器内配置邮件发送服务,使用acme支持的mailgun,注册帐号并完成邮件认证。邮件认证的时候可能需要google voice号码(我认证的时候没有看到中国的选项)。最后调用acme.sh --set-notify --notify-hook mailgun来确认是否配置成功,配置成功的话会发邮件到接收邮箱。

在jenkins中配置的是outlook邮箱(host: imap-mail.outlook.com)。

Jenkins Advanced Email Properties

subjectContains=Renew *.xxxxxxx.com success
receivedXMinutesAgo=600 # 意思是10小时内发送的邮件。一般acme是凌晨0点后执行任务

Jenkins Schedule

TZ=Asia/Shanghai
H H(3-7)/3 * * *
# 这样的意思应该是早上3-7点之间执行3次

ssh 连接保持不断

环境:MBP iTerm2 阿里云ecs

网络:三大运营商没法进入物业,只能用物业提供的一家服务商,8000/年,可能是铁通的网络,非常不稳定,经常GitHub提交代码Push不上去,对外IP地址变化非常快。

平时工作经常要操作阿里云ecs,就通过iTerm2 开个Tab,通过ssh连接服务器。苦恼的是,一段时间不用,ssh连接就会断开。

一直以为是网络IP的问题,不知道怎么解决。

今天突然搜了一下,找到了一个解决办法,在~/.ssh/config文件中增加:

# 15 值可以改  大于1即可 表示每隔多少秒发送心跳
ServerAliveInterval 15

放在Host同级。效果图:

测试了一下,出去吃了顿饭回来,连接没有断。