{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# 新手指南

本文介绍如何利用GoEdge快速搭建一个简单的CDN服务。

## 1.了解CDN原理

CDN的全称是Content Delivery Network，即为内容分发网络，一个典型的CDN网络如下：

从上图可以看到：

1. 不同区域或者不同网络的用户，可以通过DNS服务被分配到不同的边缘节点上；
2. 边缘节点如果已经缓存内容，可以就近直接向用户发送内容；如果还没有缓存内容，则一级一级网上找，直至去源站（即内容提供原始的站点）去获取内容，然后再一级一级返回，直至发送给用户；
3. 由于边缘节点可以缓存内容，所以可以有以下几个优点：
   1. 降低了网络延时，加速了内容的分发，因为用户可以就近获取内容，就无需跨多个网络千里迢迢访问最原始的服务器；
   2. 大幅降低源站压力，通过边缘节点的分担，源站通常可以减少绝大部分访问；
   3. 增加数据传输的可靠性，因为每个边缘节点都可以独立发送内容，即使源站服务器宕机，也不会影响内容的访问；
   4. 增强了源站的安全性，当遭遇大规模类似于DDOS的攻击时，可以通过边缘节点有效减少到源站的流量，也可以在边缘节点增加防御规则（比如WAF），让攻击的流量无法到达源站，从而提升了源站的安全性。

在GoEdge中，为了简化网络结构，我们暂时没有提供中心节点和区域节点，但是提供了L2节点（也叫汇聚回源节点，仅商业版可用），所以GoEdge的网络结构如下：

## 2. Why GoEdge？

在业界，很多人都选用Squid、HAProxy、Nginx等工具作为CDN服务应用程序，那么为什么要选择GoEdge呢？诚然这些都是非常优秀的工具，但是GoEdge相对于它们在某些地方仍然有一些明显的优势：

- 完整的管理界面 - 可以通过管理界面操作一切功能，无需使用代码，为我们节省了记忆负担，也减少了出错的机会；
- 安装简单 - 得益于我们发布的程序都是编译好的二进制文件，即使是一个技术小白也可以轻松安装、启动，无需安装额外的系统库，上传、解压、启动可以一气呵成；
- 完整的解决方案 - 不仅仅包含CDN加速、Web服务，还包含了多租户（用户）、日志、监控、安全（WAF）、DNS等功能；
- 容易集成到别的系统 - 所有数据都通过GRPC操作，第三方系统可以轻易通过GRPC同GoEdge通讯；
- 更容易二次开发 - 基于Go语言的GoEdge，相对于其他C语言的应用来说更加容易二次开发，入门也相对更加简单，只需花一些时间学习Go语言即可上手。

## 3. 安装GoEdge

如果你还没有安装GoEdge管理平台，可以在这里查看 安装管理平台 的方法。

## 4. 创建集群

集群是一组边缘节点的组合，即可以通过集群集中管理一组节点，当我们想发布新的网站的时候，也需要选择对应的集群，这样集群里的节点才会启动网站。

在管理员系统安装完毕后，会自动创建一个”默认集群”，通常直接使用这个集群即可。

如果你想创建新的集群，可以点击左侧”边缘节点”菜单中，然后点击页面中的”创建集群”，就可以创建新的集群了。

## 5. 创建节点

一个集群只有添加并安装节点后才能工作，节点负责处理和响应实际的用户请求。

节点通常安装在和管理平台不一样的服务器上，但如果你的服务器资源有限，也可以放在同一个服务器上。

在”集群列表”中点击集群详情，即可进行节点列表，类似于：

点击上方的”创建节点”菜单进入创建新节点页面：

其中：

- `节点名称` - 可以填写任何名称，只要方便我们识别即可
- `IP地址` - 节点服务器对外访问的地址，可以有多个，可以是IPv4（常规的IP），也可以是IPv6

其余参数都可以暂时不填写，点击页面下方的”保存”后即完成了创建节点的工作，下图中红框部分即为刚才添加的节点：

## 6. 安装节点

在创建完节点之后，就需要在节点服务器上安装应用程序了，点击页面中的”未安装”或者点击节点详情中的”安装节点”页面：

点击页面中的”开始安装”，系统会提示你填写SSH信息等，补充这些信息并点击”重新安装”，如果顺利的话，节点安装成功后，在节点列表中就能看到运行状态：

如果你不想使用SSH安装，可以尝试从 官网下载 最新的压缩包后，然后 手工安装。

## 7. 创建网站

在集群、节点都准备就绪后，就可以将网站发布到这些节点上，点击左侧”网站列表”菜单，然后再页面中点击”创建网站”，即可创建新的网站：

其中：

- `所属用户` - 可以为网站指定一个用户，我们刚开始使用的时候可以不选
- `部署的集群` - 需要将当前网站部署到的集群，集群中必须已经安装了节点
- `绑定端口` - 通常只需要绑定HTTP 80端口和HTTPS 443端口即可
- `绑定域名` - 在设置好域名解析后，可以通过绑定的域名可以访问网站，这里也支持`*.example.com`类似的域名
- `HTTPS证书` - 如果想支持HTTPS的话，需要上传证书，但可以在创建网站后再添加
- `源站地址` - 可以添加需要被加速的源站地址，通常是IP+端口，如果你没有填写端口，则系统会自动判断并加上对应的端口号

点击”保存”后，网站即可创建完毕：

添加完毕后，可以通过节点IP直接访问试试能否访问网站。

## 8. 手工解析域名

在网站添加完毕后，可以在第三方域名管理平台将域名A记录解析到节点IP上，如果有多个节点，可以添加多个A记录，通常可以在为不同的节点对应的A记录选择不同的线路。

等待解析生效后，就可以通过域名访问我们创建的网站了。

## 9. 自动解析域名

对于大规模的CDN来说，手工来管理域名解析确实费时费力，我们在系统中也提供了自动域名解析功能，请在稍微熟悉系统后，点击左侧菜单中的”域名解析”，可以通过比较完善的互动窗口来设置你的自动解析。

关于自动解析域名的帮助可以点击 这里 查看。

## 10. 测试

可以通过域名或者节点IP来访问网站，来查看网站访问是否有问题，如果有任何异常，请查看本页面中的”问题诊断”一节。

## 11. 问题诊断

一个网站无法访问有很多原因，但是通常都有规律可循，请依次做以下检查：

1. 确保集群的所有节点都在正常工作，可以在集群详情中查看节点状态
2. 在管理界面”边缘节点”菜单中，点击”运行日志”，查看节点是否有异常，通常可能有以下几个异常：
   - `端口绑定失败` - 端口号或者地址输入错误，这种情况通常只需要输入端口号即可，不需要填写地址
   - `端口已经被使用` - 端口被其他服务所占用，比如`nginx`已经监听了80端口，所以节点无法重新监听，这种情况下，请将其他正在监听此端口的网站关闭
   - 其他的网站访问异常，请根据提示进行对应的操作
3. 如果在浏览器中域名无法访问，检查域名解析是否已经生效，可以通过 `ping` 命令来确认域名已经解析到对应的节点上，类似于：

       ping example.cn

4. 如果端口无法连接，使用SSH登录节点所在服务器，然后通过 `netstat` 检查端口是否已经已经监听：

       netstat -an|grep 80|grep LISTEN
       netstat -an|grep 443|grep LISTEN

   如果某个端口号没有被监听，说明你在网站里填写的”绑定端口”是不正确的，常见的还有只填写了HTTPS端口，但是没有上传HTTPS证书；或者有一些用户HTTP和HTTPS的端口号弄混，也会导致端口无法连接。
5. 检查防火墙设置：可以检查服务器端防火墙是否放行了对应的端口

## 12. 问题反馈

如果你在安装或者使用过程中出现任何问题，可以在 社区页面 找到我们的联系方式，随时欢迎反馈。

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}