每月3元拿下2000带宽阿里云海外服务器完整教程

昨天 178阅读

介绍

原理:阿里云香港最近表现不错,但新手轻量优惠不可选择香港,只能正价购买香港轻量,持有成本较高,所以我们可以利用阿里云(含阿里云国际版)每个账号免费赠送的 200 GB CDT(云数据传输)流量,配合配置最低的 ECS 实例,达到低成本搭乘阿里云香港网络快线的方法,该教程同样适合阿里云国际站。


阿里云7.5折优惠http://a1.ilz6.com/65


CDT公网流量免费额度提升至220 GB/月 - 云数据传输 - 阿里云

产品:
CDT 公网流量

免费额度与适用地域:
免费额度为 220 GB/月,其中:

  • 中国内地地域:20 GB/月

  • 非中国内地地域:200 GB/月

线路类型:
BGP(多线)

弹性公网 IP,2 Gbps

0.004376*24=0.105024*30=3.15072每个月


正文:

本文将介绍如何开启 CDT + 创建阿里云抢占式实例 + 保活,实现月付最低 4 元,享受 200G 单向出网高速流量的方法。

开通阿里云 CDT 功能

在控制台首页搜索框,直接输入“CDT”,自动弹出“控制台 > 云数据传输”选项,点击;或直接访问:https://cdt.console.aliyun.com/overview (阿里云国际站:https://cdt.console.alibabacloud.com/overview ),进入 CDT 工作台。

确认当前账户下的所有 CDT 子功能,如图示开通,如果还没有开通,选择未开通子项,点击“一键升级”:

9d2860f9-c324-4985-b4e9-e5ef2e6761e6.png

一、开通阿里云 OSS 并上传 alpine 镜像

  1. 点击访问oss控制台

  2. http://a1.ilz6.com/oss
  3.  点击控制台oss 并开通:

6dd390fb-4602-4f59-b29b-a5f8682ae632.png

75f0bc1b-27ff-46d8-ab6b-cd59d943942c.png

523a6bdb-afa8-404b-a074-e6eaaa9aa2f9.png

  1. 上传镜像至 oss

2.1 点击管理控制台,创建 bucket,地域切记选择香港

4b1d24e6-3405-40b7-b941-d0328539b309.png

2.2 创建成功后,进入 bucket,上传所需 apline 镜像:点击下载

http://a1.ilz6.com/alpine

3eeb503f-3cef-48d8-9e13-852a923a9ce4.png

点击上传文件,上传刚刚下载好的 alpine 镜像:

9b0daf02-fdb0-4822-bea3-3154c6a18115.png

fa61b057-85da-4b8c-84a9-b0bc1ce891cd.png

2.3 保存上传好的镜像链接,下一步要用:

8018268c-2ad3-4ac2-b6e5-ae3e5b82d753.png

二、创建系统镜像

  1. 导入镜像:

点击 http://a1.ilz6.com/jingxiang 访问ecs控制台,点击镜像,地区选择香港(阿里云国际站:https://ecs.console.alibabacloud.com/image/region/cn-hongkong ),导入刚刚上传到 oss 的 alpine 镜像:

ed10c8fd-de89-4823-97f4-d170a7d34b72.png

点击下一步:

d8e88929-7d65-439c-86a8-b63b3122da77.png

“镜像检测 → 导入后执行检测”最好不勾:

9c22048e-fc72-4ec8-9186-55555c2c7ef1.png

“云盘配置 → 配置云盘属性”勾选,alpine virt ISO 镜像体积很小,虽然原文里给 1GB 空间启动足够,但保险起见,还是建议给 2GB 以上,除非你执意只给 ECS 配置 1GB 的硬盘,但安装许多系统会受限制(系统本体、应用、日志等)。后面创建机器时可选的硬盘容量,必须等于或大于导入镜像步骤设置的云盘容量。

adfc7242-b3a9-4b21-a2ac-d36d8f7ca112.png

耐心等待创建完成:

b12757c8-3032-450b-9ad6-3dd969e79528.png

三、创建抢占式实例

点击 http://a1.ilz6.com/jingxiang (阿里云国际站:https://ecs.console.alibabacloud.com/server/region/cn-hongkong#/点击立即购买,地区选择香港,创建抢占式实例:

规格搜索:ecs.e-c4m1.large 选中该“经济型”:

dcd5ee47-6721-4a0e-ba6d-82f931bc0ccf.png

  • 实例使用时长:无确定使用时长(否则按默认只设置 1 小时,1 小时后被删机);

  • 单台实例上限价格:使用自动出价,香港不同的区价格不一样,而且随资源变化随时浮动,图示价格仅供参考;

  • 实例中断模式:节省停机(必须选这个,否则还是被删机);

  • 区域香港 B、C、D 区任意,首次创建时,会自动配置好对应地区的 VPC,不需要手动配置;

  • 镜像选我们刚才创建的自定义的 alpine;

  • 系统盘容量看自己选择,ESSD Entry 单 GB 价格便宜,但最低要配置 10 GB,极限容量下,价格比 ESSD 云盘贵,推荐 5 - 8 GB 的 ESSD 云盘或 10 GB 的 ESSD Entry 硬盘,1 - 2 GB 的那种玩法有点极限。

ef7bbd09-677c-4c90-bf01-9218e3d02c31.png

先暂不分配 IPv4 地址,原因是该抢占式实例属于可被随时停机的那种,如果有大户开机,占据了某可用区(香港:B、C、D 区任意)的大量资源,这些抢占式实例被停机后,再次启动时,创建时自动分配的 IPv4 地址会被释放,所以我们需要使用 EIP 来使这台机器的 IPv4 地址固定;安全组、防火墙等自行做入网、出网设置,全开就行;如果对 IPv6 的使用没有强需求,建议不要为实例分配 IPv6 地址,阿里云对 IPv6 的支持仍然不是很好。

90926cef-9473-4edb-83e9-aeae856240aa.png

确认配置无误,开氪:

139698f6-99af-4406-80ea-8ea6ab9ac714.png

四、创建 EIP(弹性公网 IP)

EIP 纯持有是持续扣费的,只要绑定到实例后,就不扣费了,后期机器如果不要了删除,记得把闲置的 EIP 也删掉,否则会产生额外费用

  1. 进入 EIP 功能区:

访问:https://vpc.console.aliyun.com/eip/cn-hongkong/eips (阿里云国际:https://vpc.console.alibabacloud.com/eip/cn-hongkong/eips )创建:

ca6a2a20-597d-48e2-8290-6b5b23216d76.png

  1. 确认配置,点击购买:

  • 付费模式:按量付费;

  • 地域和可用区:中国香港;

  • 线路类型:BGP(多线),BGP 多线精品不享受 200GB CDT 免费额度;

  • 网络类型:公网;

  • 安全防护:默认;

  • 计费模式:按 CDT 计费;

  • 带宽峰值:ecs.e-c4m1.large 的口子为 200 Mbps,拉满。

e227676b-8839-452c-b403-8c811605237a.png

9be9eb3a-5081-4b84-b90b-213cca7de38c.png

  1. 绑定实例:

访问: http://a1.ilz6.com/jingxiang (阿里云国际:https://ecs.console.alibabacloud.com/server/region/cn-hongkong ),操作 → 三个点 → 绑定弹性公网 IP:

2f1ca429-4ff3-4a4c-8a52-a6a832c3f5da.png

16211a52-5cb3-45f1-87b6-43ff99bd123a.png

  1. 返回弹性公网 IP,创建加入共享带宽,可继续加大出网带宽量:

924f6e66-dd34-4d57-9fd1-ce22da1570fb.png

计费方式:按主流量(入出取大);
计费模式:按 CDT 计费;
带宽:根据需求自选,拉太大了会增加流量的消耗速度。

35a30a90-f7e7-4f1d-949c-ecef4469edf3.png

d322aa6a-b5e4-4ead-9b70-68667244bc1e.png

在阿里云国际版做过测试,如果下单失败,显示:因安全问题,此次下单被终止,Request ID: 一串 UUID。需要访问:https://account.alibabacloud.com/kyc/index#/kyc 做 KYC 验证,它的审核特别严格,且阿里云国际版注册时,仅支持选择海外地区,根据接码手机号区号,确定账号主体注册区域,如果没有当地合法的长期居留身份,这一步基本无法通过,只能退而求其次,使用实例自带的 200 Mbps 的口子。

4b692ddb-3e03-4a6b-be6c-46a5988e7cde.png

现在就成为 2 Gbps 口子的服务器了。

五、安装系统

  1. 安装

首次需要登录 VNC,输入 root,密码为空,来到 Localhost#: 状态,输入

setup-alpine

进行首次安装,这个跟平时我们安装软件差不多的,一路回车,下一步下一步基本就可以了,其中有几步需要修改一下的,我在图片上标出来。

a4adbf4b-2ac2-4408-add9-873353cc3782.png

这就配置好网络了,阿里云使用 DHCP,不需要手动配置网络。

365baf94-14e6-44eb-8667-78ba76b20dab.png

这样配置好用户名和密码及时区,代理跳过(如果只按原文图示直接按“49”,有可能会连接到一个速度极慢的源,因为这个镜像列表是实时更新的,截止我做测试时,阿里云的镜像源序号是“44”,这个序号未来还会根据该列表的更新而随时变化,切勿刻舟求剑,需要先按“s show mirrorlist”显示镜像源列表,然后选择来自 https://mirrors.aliyun.com/alpine/ 的源)。

8168a8b7-abca-4642-b6b7-1cf5885204b7.png

启用 root 用户,并使用密码方式验证登录。

  1. 配置磁盘、分区、格式化

0f6d77b0-9ef6-45cc-9200-5c58933df0cb.png

这一步会提示 No disks available,Try boot media /media/vda ? 意思没有找到可用有磁盘,是否尝试安装到vda云盘上,改

y

安装完成后

reboot

重启,首次安装向导就完成了。

重要提示:从自制镜像中读取到的 alpine virt iso 救援系统,在 VNC 执行 setup-alpine,将正式系统写入到硬盘后,该临时系统还运行在内存中,必须要重启!必须要重启!必须要重启!重启后进入到的 alpine 系统,才是从系统硬盘中读取的正式系统,才可以进行设置 DNS、配置源、清除硬盘标签、执行脚本重装等后续工作。

  1. 修改 DNS

由于 alpine 系统还未联网,所以这一步还是需要在 VNC 中操作,如果不设置 DNS,只能 ping 通 IP 地址,无法 ping 通域名。

输入

setup-dns

debec5cb-c82a-40de-bf23-202f9b9e266d.png

DNS domain name:

nameserver

DNS 地址随意,推荐:

1.1.1.1 8.8.8.8

当系统的网络连接功能完全正常后,便可使用 Xshell 等 ssh 工具进行远程连接。

  1. 安装 curl,vim

先更新一下软件源:

apk update

安装组件:

apk add curl vim

其它应用也是类似。

  1. 添加额外源(可选)

仓库配置路径:

/etc/apk/repositories

打开仓库配置文件:

vim /etc/apk/repositories

将社区源开头注释去掉:

http://mirrors.aliyun.com/alpine/v3.23/main    # 默认配置,主要的源http://mirrors.aliyun.com/alpine/v3.23/community   # 社区源,默认未开启,去掉前面#号

添加 edge 源,拥有很多第三方应用,旧版 alpine 配置 edge 源,安装软件时,会产生很多依赖问题,不推荐:

http://mirrors.aliyun.com/alpine/edge/communityhttp://mirrors.aliyun.com/alpine/edge/testing

将仓库配置文件保存后,再次更新源:

apk update

已经开好了,剩下的玩法大伙自己发掘吧,现在可以把 oss 与镜像删除了,防止额外扣费。

b76363d8-f0bf-4143-bbf3-4913e8389b4c.png

48bc6c90-d0e2-4264-a9f6-e49643c3107c.png

a14e3441-3657-4098-a777-1149b5cb3ce4.png

六、保活服务器

需要使用阿里云 sdk。

  1. 先创建一个用户并赋予权限

访问:https://ram.console.aliyun.com/users (阿里云国际版:https://ram.console.alibabacloud.com/users

bf184042-1631-46dd-8db4-f8d1f7d11dc7.png

记得保存 AccessKey ID、AccessKey Secret,后面需要用到。

  1. 为刚创建的用户增加授权

  2. AliyunCDTFullAccess

  3. AliyunECSFullAccess

d6d96d87-dbd4-4a8c-abe8-bf2525b15e79.png

新建修改下列脚本,安装必要依赖,设定每分钟执行。切记在另外的机器上设置,不要在阿里云抢占式实例自己上运行。使用 crontab 设置为每分钟执行一次。


# -*- coding: utf-8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from aliyunsdkecs.request.v20140526 import StartInstancesRequest, StopInstancesRequest, DescribeInstancesRequest
import json
import sys
import logging
# pip install aliyun-python-sdk-core aliyun-python-sdk-ecs


# ================== 1. 配置日志 ==================
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s",
    stream=sys.stdout
)
logger = logging.getLogger(__name__)

# ================== 2. 配置阿里云凭证和ECS实例信息 ==================
ACCESS_KEY_ID = 'LTAIxxxxxxx'      # 您的AccessKey ID
ACCESS_KEY_SECRET = 'xxxxxxxxxx'   # 您的AccessKey Secret
REGION_ID = 'cn-hongkong'          # 区域ID
ECS_INSTANCE_ID = 'i-xxxxxxxxx'    # 您要控制的ECS实例ID

# 流量阈值 (GB)
TRAFFIC_THRESHOLD_GB = 180

# ================== 3. 初始化客户端 ==================
try:
    client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION_ID)
    logger.info("AcsClient initialized successfully.")
except Exception as e:
    logger.error(f"Failed to initialize AcsClient: {e}")
    sys.exit(1)

# ================== 4. 查询当前总流量 ==================
def get_total_traffic_gb(client):
    request = CommonRequest()
    request.set_domain('cdt.aliyuncs.com')
    request.set_version('2021-08-13')
    request.set_action_name('ListCdtInternetTraffic')
    request.set_method('POST')

    try:
        response = client.do_action_with_exception(request)
        response_json = json.loads(response.decode('utf-8'))

        total_bytes = sum(d.get('Traffic', 0) for d in response_json.get('TrafficDetails', []))
        total_gb = total_bytes / (1024 ** 3)

        logger.info(f"当前总互联网流量: {total_gb:.2f} GB")
        return total_gb
    except Exception as e:
        logger.error(f"获取CDT流量失败: {e}")
        sys.exit(1)

# ================== 5. 查询ECS实例状态 ==================
def get_ecs_status(client, instance_id):
    try:
        request = DescribeInstancesRequest.DescribeInstancesRequest()
        request.set_InstanceIds([instance_id])
        response = client.do_action_with_exception(request)
        response_json = json.loads(response.decode('utf-8'))

        instances = response_json.get("Instances", {}).get("Instance", [])
        if not instances:
            logger.error("未找到该ECS实例信息。")
            return None

        status = instances[0].get("Status")
        logger.info(f"ECS实例 {instance_id} 当前状态: {status}")
        return status
    except Exception as e:
        logger.error(f"获取ECS实例状态失败: {e}")
        return None

# ================== 6. 启动ECS实例 ==================
def ecs_start(client, instance_id):
    status = get_ecs_status(client, instance_id)
    if status == "Running":
        logger.info(f"ECS实例 {instance_id} 已经是运行状态,无需启动。")
        return

    try:
        request = StartInstancesRequest.StartInstancesRequest()
        request.set_InstanceIds([instance_id])
        request.set_accept_format('json')

        response = client.do_action_with_exception(request)
        logger.info(f"ECS启动响应: {response.decode('utf-8')}")
    except Exception as e:
        logger.error(f"启动ECS实例失败: {e}")

# ================== 7. 停止ECS实例 ==================
def ecs_stop(client, instance_id):
    status = get_ecs_status(client, instance_id)
    if status == "Stopped":
        logger.info(f"ECS实例 {instance_id} 已经是停止状态,无需再次停止。")
        return

    try:
        request = StopInstancesRequest.StopInstancesRequest()
        request.set_InstanceIds([instance_id])
        request.set_ForceStop(False)
        request.set_accept_format('json')

        response = client.do_action_with_exception(request)
        logger.info(f"ECS停止响应: {response.decode('utf-8')}")
    except Exception as e:
        logger.error(f"停止ECS实例失败: {e}")

# ================== 8. 主流程 ==================
def main():
    total_gb = get_total_traffic_gb(client)

    if total_gb < TRAFFIC_THRESHOLD_GB:
        logger.info(f"流量 {total_gb:.2f} GB < 阈值 {TRAFFIC_THRESHOLD_GB} GB,尝试启动 ECS")
        ecs_start(client, ECS_INSTANCE_ID)
    else:
        logger.info(f"流量 {total_gb:.2f} GB ≥ 阈值 {TRAFFIC_THRESHOLD_GB} GB,尝试停止 ECS")
        ecs_stop(client, ECS_INSTANCE_ID)

    logger.info("脚本执行完毕。")

if __name__ == "__main__":
    main()





转载leitbogioro


文章版权声明:除非注明,否则均为小冷云原创文章,转载或复制请以超链接形式并注明出处。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码