前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >青龙面板定时脚本更新腾讯轻量云快照

青龙面板定时脚本更新腾讯轻量云快照

原创
作者头像
easonxie
发布2024-06-25 23:37:07
1470
发布2024-06-25 23:37:07

很多人买了腾讯的轻量云服务器,轻量云服务器每个地域可以有两个快照,一般来说,我们每次对服务器进行大的改动后,可以进行一次快照备份,这样下次出问题可以马上利用快照回滚。但是这样会丢失服务器运行期间的数据。比较理想的情况是一个快照作为每次大变更的快照备份。另一个快照份额,每天定时更新为当前服务器的最新快照。

目前轻量云不支持定时更新快照,不过我们可以通过腾讯云的API,结合定时脚本,自定义去更新轻量云服务器的快照。

1. 创建腾讯云子账号并关联策略

腾讯可以通过创建子账号,为子账号赋予对应的策略,让子账号有权限操作我们的服务器。创建子账号可以在这里操作用户列表 - 用户 - 访问管理 - 控制台 (tencent.com)

创建完子账号,需要为子账号赋予对应的权限,按最小权限原则,我们可以创建一个专门用于快照备份的策略。

策略 - 访问管理 - 控制台 (tencent.com)这里新建策略,选择按策略语法新建,然后选择空白模板,粘贴下面的这些策略。就完成了快照API策略的新建,然后在腾讯云子账号那边,对相应的子账号授予这个策略。然后新建一个密钥用于api调用

代码语言:txt
复制
{
    "statement": [
        {
            "action": [
                "lighthouse:DescribeAllSnapshotsOverview",
                "lighthouse:CreateInstanceSnapshot",
                "lighthouse:DeleteSnapshots",
                "lighthouse:DescribeSnapshots"
            ],
            "effect": "allow",
            "resource": [
                "*"
            ]
        }
    ],
    "version": "2.0"
}

2. 安装青龙面板

网上有很多安装青龙面板的教程,这里不赘述,可以去青龙面板的官网看看怎么安装。

3. 在青龙面板安装nodejs版本的腾讯云API

如图所示,在青龙面板安装需要的依赖

4. 添加脚本

脚本可以设置传递参数region和instanceId, 是地域和实例id, 实例id在轻量云的详情页可以看到,地域不知道的可以问问客服,或者自己抓包查看。具体的脚本可以看下面的代码。

代码语言:txt
复制
const tencentcloud = require("tencentcloud-sdk-nodejs");


// 获取命令行参数
const region = process.argv[2];
const instanceId = process.argv[3];

const LighthouseClient = tencentcloud.lighthouse.v20200324.Client;
const clientConfig = {
  credential: {
    secretId: "", // 填你的密钥ID
    secretKey: "", //填你的密钥KEY
  },
  region: region,
  profile: {
    httpProfile: {
      endpoint: "lighthouse.tencentcloudapi.com",
    },
  },
};

const client = new LighthouseClient(clientConfig);

// 获取指定实例的全部快照
const describeSnapshots = async (instanceId) => {
  const params = {};
  const { SnapshotSet } = await client.DescribeSnapshots(params);
  console.log(SnapshotSet)
  return SnapshotSet;
};

// 删除指定名称的快照
const deleteSnapshot = async (snapshotId) => {
  const params = {
    SnapshotIds: [snapshotId],
  };
  await client.DeleteSnapshots(params);
};

// 创建指定名称的快照
const createSnapshot = async (instanceId, snapshotName) => {
  const params = {
    InstanceId: instanceId,
    SnapshotName: snapshotName,
  };
  await client.CreateInstanceSnapshot(params);
};

function sleep(ms) {
    return new Promise((resolve) => setTimeout(resolve, ms));
}

(async () => {
  // 获取指定实例的全部快照
  const snapshotSet = await describeSnapshots(instanceId);
  console.log(snapshotSet)

  // 查找指定名称的快照
  const snapshot = snapshotSet.find((s) => s.SnapshotName === "daily-back");

  // 如果快照数量大于1,并且存在指定名称的快照,则删除该快照
  if (snapshotSet.length > 1 && snapshot) {
    await deleteSnapshot(snapshot.SnapshotId);
    console.log(`已删除快照 daily-back`);
    // 创建新的快照
    await sleep(10000)
    await createSnapshot(instanceId, "daily-back");
    console.log(`已创建快照 daily-back`);
  } else if (snapshotSet.length === 1) {
    // 创建新的快照
    await createSnapshot(instanceId, "daily-back");
    console.log(`已创建快照 daily-back`);
  }

  process.exit(0)
})();

5. 添加定时任务

在青龙脚本的定时任务里添加个任务,把对应的脚本地址,地域和实例id填上,然后就可以实现定时更新轻量云快照

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创建腾讯云子账号并关联策略
  • 2. 安装青龙面板
  • 3. 在青龙面板安装nodejs版本的腾讯云API
  • 4. 添加脚本
  • 5. 添加定时任务
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档