新手指南
本文介绍如何利用GoEdge快速搭建一个简单的CDN服务。
1.了解CDN原理
CDN的全称是Content Delivery Network,即为内容分发网络,一个典型的CDN网络如下:
从上图可以看到:
- 不同区域或者不同网络的用户,可以通过DNS服务被分配到不同的边缘节点上;
- 边缘节点如果已经缓存内容,可以就近直接向用户发送内容;如果还没有缓存内容,则一级一级网上找,直至去源站(即内容提供原始的站点)去获取内容,然后再一级一级返回,直至发送给用户;
- 由于边缘节点可以缓存内容,所以可以有以下几个优点:
- 降低了网络延时,加速了内容的分发,因为用户可以就近获取内容,就无需跨多个网络千里迢迢访问最原始的服务器;
- 大幅降低源站压力,通过边缘节点的分担,源站通常可以减少绝大部分访问;
- 增加数据传输的可靠性,因为每个边缘节点都可以独立发送内容,即使源站服务器宕机,也不会影响内容的访问;
- 增强了源站的安全性,当遭遇大规模类似于DDOS的攻击时,可以通过边缘节点有效减少到源站的流量,也可以在边缘节点增加防御规则(比如WAF),让攻击的流量无法到达源站,从而提升了源站的安全性。
在GoEdge中,为了简化网络结构,我们暂时没有提供中心节点和区域节点,只提供了边缘节点,所以GoEdge的网络结构如下:
2. Why GoEdge?
在业界,很多人都选用Squid、HAProxy、Nginx等工具作为CDN服务应用程序,那么为什么要选择GoEdge呢?诚然这些都是非常优秀的工具,但是GoEdge相对于它们在某些地方仍然有一些明显的优势:
- 完整的管理界面 - 可以通过管理界面操作一切功能,无需使用代码,为我们节省了记忆负担,也减少了出错的机会;
- 安装简单 - 得益于我们发布的程序都是编译好的二进制文件,即使是一个技术小白也可以轻松安装、启动,无需安装额外的系统库,上传、解压、启动可以一气呵成;
- 完整的解决方案 - 不仅仅包含反向代理服务、Web服务,还包含了多租户(用户)、日志、监控、安全(WAF)、DNS等功能;
- 容易集成到别的系统 - 所有数据都通过GRPC操作,第三方系统可以轻易通过GRPC同GoEdge通讯;
- 更容易二次开发 - 基于Go语言的GoEdge,相对于其他C语言的应用来说更加容易二次开发,入门也相对更加简单,只需花一些时间学习Go语言即可上手;
- 提供定制服务 - 如果你是企业级的应用,我们还为你提供定制服务,由于掌握了所有代码的细节,所以我们更容易提供个性化的功能。
3. 安装GoEdge
如果你还没有安装GoEdge管理平台,可以在这里查看 安装管理平台 的方法。
4. 创建集群
集群是一组边缘节点的组合,即可以通过集群集中管理一组节点,当我们想发布新的网站的时候,也需要选择对应的集群,这样集群里的节点才会启动网站服务。
在管理员系统安装完毕后,会自动创建一个”默认集群”,通常直接使用这个集群即可。
如果你想创建新的集群,可以点击左侧”边缘节点”菜单中,然后点击页面中的”创建集群”,就可以创建新的集群了。
5. 创建节点
一个集群只有添加并安装节点后才能工作,节点负责处理和响应实际的用户请求。
节点通常安装在和管理平台不一样的服务器上,但如果你的服务器资源有限,也可以放在同一个服务器上。
在”集群列表”中点击集群详情,即可进行节点列表,类似于:
点击上方的”创建节点”菜单进入创建新节点页面:
其中:
节点名称
- 可以填写任何名称,只要方便我们识别即可IP地址
- 节点服务器对外访问的地址,可以有多个,可以是IPv4(常规的IP),也可以是IPv6
其余参数都可以暂时不填写,点击页面下方的”保存”后即完成了创建节点的工作,下图中红框部分即为刚才添加的节点:
6. 安装节点
在创建完节点之后,就需要在节点服务器上安装应用程序了,点击页面中的”未安装”或者点击节点详情中的”安装节点”页面:
点击页面中的”开始安装”,系统会提示你填写SSH信息等,补充这些信息并点击”重新安装”,如果顺利的话,节点安装成功后,在节点列表中就能看到运行状态:
如果你不想使用SSH安装,可以尝试从 官网下载 最新的压缩包后,然后 手工安装。
7. 创建网站服务
在集群、节点都准备就绪后,就可以将网站发布到这些节点上,点击左侧”网站服务”菜单,然后再页面中点击”创建服务”,即可创建新的服务:
其中:
服务名称
- 无特别要求,只需要易懂即可,通常也可以用域名代替部署的集群
- 需要将当前服务部署到的集群,集群中必须已经安装了节点服务类型
- CDN或者HTTP负载均衡需要选择”CDN加速”绑定端口
- 通常只需要绑定HTTP 80端口和HTTPS 443端口即可绑定域名
- 在设置好域名解析后,可以通过绑定的域名可以访问服务,这里也支持*.teaos.cn
类似的域名HTTPS证书
- 如果想支持HTTPS的话,需要上传证书,但可以在创建服务后再添加源站地址
- 可以添加需要被代理的源站地址,通常是IP+端口,如果你没有填写端口,则系统会自动判断并加上对应的端口号
点击”保存”后,服务即可创建完毕:
添加完毕后,可以通过节点IP直接访问试试能否访问服务。
8. 手工解析域名
在服务添加完毕后,可以在第三方域名管理平台将域名A记录解析到节点IP上,如果有多个节点,可以添加多个A记录,通常可以在为不同的节点对应的A记录选择不同的线路。
等待解析生效后,就可以通过域名访问我们创建的服务了。
9. 自动解析域名
对于大规模的CDN来说,手工来管理域名解析确实费时费力,我们在系统中也提供了自动域名解析功能,请在稍微熟悉系统后,点击左侧菜单中的”域名解析”,可以通过比较完善的互动窗口来设置你的自动解析。
关于自动解析域名的帮助可以点击 这里 查看。
10. 测试
可以通过域名或者节点IP来访问服务,来查看服务访问是否有问题,如果有任何异常,请查看本页面中的”问题诊断”一节。
11. 问题诊断
一个服务无法访问有很多原因,但是通常都有规律可循,请依次做以下检查:
- 确保集群的所有节点都在正常工作,可以在集群详情中查看节点状态
- 在管理界面”边缘节点”菜单中,点击”运行日志”,查看节点是否有异常,通常可能有以下几个异常:
端口绑定失败
- 端口号或者地址输入错误,这种情况通常只需要输入端口号即可,不需要填写地址端口已经被使用
- 端口被其他服务所占用,比如nginx
已经监听了80端口,所以节点无法重新监听,这种情况下,请将其他正在监听此端口的服务关闭- 其他的服务访问异常,请根据提示进行对应的操作
如果在浏览器中域名无法访问,检查域名解析是否已经生效,可以通过
ping
命令来确认域名已经解析到对应的节点上,类似于:ping teaos.cn
如果端口无法连接,使用SSH登录节点所在服务器,然后通过
netstat
检查端口是否已经已经监听:netstat -an|grep 80|grep LISTEN
netstat -an|grep 443|grep LISTEN
如果某个端口号没有被监听,说明你在服务里填写的”绑定端口”是不正确的,常见的还有只填写了HTTPS端口,但是没有上传HTTPS证书;或者有一些用户HTTP和HTTPS的端口号弄混,也会导致端口无法连接。
- 检查防火墙设置:可以检查服务器端防火墙是否放行了对应的端口
12. 问题反馈
如果你在安装或者使用过程中出现任何问题,可以在 社区页面 找到我们的联系方式,随时欢迎反馈。