猫小白

猫小白

由于博客之前部署在阿里云国际版上,试用期快到了,续费不是很方便;并且在双十一的时候6折入手了狗云两台云主机基本闲置,正好最近有时间,就抽空在上边搭了一套K3S集群,把博客迁移到狗云K3S集群上边了。

目前上边一共部署了5个服务:

  • mxb.cc:博客
  • i5sing.com: i5sing 官网
  • 网易云 API:为博客网易云我喜欢的音乐提供API
  • MySQL:i5sing 官网数据库
  • MongoDB: 博客数据库

数据持久化

在其中的一个节点上搭建了一个 NFS,为集群提供数据持久化服务。

数据备份

由于使用的是小厂商的云主机,数据还是需要备份一下的,否则一旦硬盘损坏导致数据丢失就太不幸了。

这里采用的是使用 K8S 的 CronJob 去做备份,每天晚上1点执行备份任务,把数据备份到 OSS 上边;Cron Job 如图:

Cron Jobs

DockerHub 上搜了一下没有特别合适的镜像,所以分别为 Mysql 和 MongoDB 做了两个备份镜像: https://hub.docker.com/r/zfeng/mysqldump-to-oss
https://hub.docker.com/r/zfeng/mongodump-to-oss

Mysql 备份脚本

#!/bin/bash

set -e

MYSQL_HOST_OPTS="-h $MYSQL_ADDRESS --port $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASSWORD"

echo "Starting dump of ${MYSQL_DATABASE} database(s) from ${MYSQL_ADDRESS}..."

DATE_FORMAT="%Y-%m-%d"
FILENAME=$(date +"$DATE_FORMAT").sql

mysqldump $MYSQL_HOST_OPTS $MYSQLDUMP_OPTIONS $MYSQL_DATABASE >/tmp/$FILENAME

gzip /tmp/$FILENAME

/ossutil64 config -e $OSS_ENTRYPOINT -i $OSS_ACCESSKEY_ID -k $OSS_ACCESSKEY_SECRET -L CH -c ossutil64.conf
/ossutil64 -c ossutil64.conf cp -f /tmp/$FILENAME.gz oss://$OSS_BUCKET/$OSS_PREFIX/$FILENAME.gz

/bin/rm -f /tmp/$FILENAME.gz

echo "Done!"

exit 0

MongoDB 备份脚本

#!/bin/bash

set -e

echo "Starting dump of ${MONGO_DB} database(s) from ${MONGO_HOST}..."

DATE_FORMAT="%Y-%m-%d"
DIRECTORY=$(date +"$DATE_FORMAT")

mongodump --host="$MONGO_HOST" --port="$MONGO_PORT" --db="$MONGO_DB" --username="$MONGO_USER" --password="$MONGO_PASSWORD" --gzip --out="/tmp/$DIRECTORY"

tar -zcf /tmp/$DIRECTORY.tar.gz /tmp/$DIRECTORY

/ossutil64 config -e $OSS_ENTRYPOINT -i $OSS_ACCESSKEY_ID -k $OSS_ACCESSKEY_SECRET -L CH -c ossutil64.conf
/ossutil64 -c ossutil64.conf cp -f /tmp/$DIRECTORY.tar.gz oss://$OSS_BUCKET/$OSS_PREFIX/$DIRECTORY.tar.gz

/bin/rm -f /tmp/$DIRECTORY.tar.gz
/bin/rm -f /tmp/$DIRECTORY

echo "Done!"

exit 0

Dockerfile

FROM mongo:4.1.6

ADD backup.sh /backup.sh
RUN chmod +x /backup.sh

ENV OSS_PREFIX backup
ENV MONGO_PORT 27017
ENV MONGO_USER root

ADD http://gosspublic.alicdn.com/ossutil/1.6.12/ossutil64 /ossutil64
RUN chmod 755 /ossutil64

CMD ["/bin/sh", "/backup.sh"]

Kubernetes Dashboard

Dashboard

Kubernetes