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

# 边缘节点常见问题

## 节点启动后怎么没有启动80和443端口？

此时可以在日志中可以看到 `no available servers to startup` 的提示。

有以下几个可能的原因：

- 可能原因1：你在管理界面中停用了这个节点
- 可能原因2：你没有部署服务到这个节点所在的集群

## 同一个边缘节点可以被两个集群使用吗？

可以，在v0.2.6之后增加了单个节点多个集群设置，你可以在”边缘节点 – 集群节点 – 节点列表 – 节点详情 – 修改设置”里修改单个节点的所属集群，其中主集群可以设置一个，从集群可以设置多个。

## 节点启动正常，但是管理界面显示离线

常见的几个可能原因：

1. 节点带宽可能已满：比如流量比较大时，或者被攻击时，带宽占满导致无法从节点发送更多的数据，所以无法更新节点状态，此时只需要等待节点使用带宽下降时会自动恢复，无需过多关注；
2. 节点进程没有启动：请在节点服务器上检查 `edge-node` 进程是否在运行：`px ax|grep edge-node`，如果没有在运行，请启动：`edge-node start`，启动后检查进程和日志（`/var/log/edge-node.log`）有无异常；
3. 检查节点是否正在使用正确的配置，请检查节点安装目录下 `configs/api_node.yaml` （GoEdge v1.2.7之前是`configs/api.yaml`）文件里的`nodeId`、`secret`是否和节点安装界面上显示的内容一致；如果不一致，请修改后，重启`edge-node`进程（`edge-node restart`）生效；并且每个节点的配置文件内容都不相同，不能相互拷贝使用；
4. 检查节点是否已连接到API节点，或者节点和API节点之间连接不稳定；请检查节点运行日志中是否出现异常，首先在管理界面的节点运行日志中查看是否有异常，如果管理界面中没有出现相关日志，说明节点启动时连接不到API节点，可以到节点所在服务器上找到`edge-node`安装目录下的 `logs/run.log`（或者查看`/var/log/edge-node.log`），检查是否有异常提示；
5. 检查节点服务器上的时间和管理界面上的时间是否一致（可以使用`date`命令查看）。

### 节点和API节点之间连接不稳定

如果边缘节点和API节点之间连接不稳定，可以考虑使用一个中转的网络服务，更多参考 API节点中转。

### 检查时钟

请同步你的所有节点服务器时钟，以使得所有服务器上的时间一致，可以使用 `date` 命令查看服务器当前时间：

    date

如果发现时钟和管理平台所在服务器不一致，可以通过`rdate`或者`ntpdate`同步：

    rdate -s utcnist.colorado.edu

或者

    ntpdate pool.ntp.org

如果发现`rdate`或者`ntpdate`命令不存在，请安装对应的命令。

同时也请检查各个服务器上的时区设置是否一致，可以使用：

    timedatectl

来查看当前服务器时间的时区。

## 节点自动升级是连接的外网吗？

节点自动升级功能 不需要 连接外网，实现原理为API节点安装包内包含了新版本的节点安装文件，升级API节点之后，就可以将这些安装文件发送到节点，从而实现解压升级。所以，此功能不会连接外网，更不会产生网络安全问题。

## 节点可以不使用root安装吗？

可以不使用root用户安装，但是，因为需要监听小端口（<1024的端口）需要root权限，所以远程登录的用户必须可以使用sudo启动edge-node进程。

## 可以使用负载均衡器对多个节点负载均衡吗？

可以使用负载均衡器（LoadBalancer，简称LB）对多个边缘节点再次负载均衡：

              |----|
    User <--> | LB | <--> Node1
              |    | <--> Node2
              |    | <--> Node3
              |----|

步骤如下：

1. 先使用LB反向代理到这些边缘节点；需要注意的是需要用户IP和节点绑定起来（比如使用Sticky算法），不然有可能出现单个用户同时访问多个节点导致意外情况的发生；
2. 将这些边缘节点的IP设置为LB的IP，手动或者自动将域名解析到这个IP，这样用户访问的就是LB，然后LB会自动转发到边缘节点。

## 同一台服务器可以安装两个节点吗？

不可以，除非你使用类似于Docker的容器，然后把节点程序（`edge-node`）安装在容器中。

## 节点可以克隆吗？

节点程序、虚拟机、操作系统都可以克隆，但是克隆后，需要修改节点上的配置文件`configs/api_node.yaml`（GoEdge v1.2.7以前是`configs/api.yaml`）才能正常使用。

## 节点配置文件`api_node.yaml`可以通用吗?

不可以，每个节点都不同，不能相互复制使用，否则会导致数据混乱。

## 出现 database disk image is malformed 怎么处理？

出现这种情况通常是因为你没有在停止节点（edge-node）进程的情况下重启服务器或者其他异常操作导致的本地数据库文件损坏，根据提示类型的不同需要有不同的操作：

- `IP_LIST_DB` 相关：删除 `edge-node/data/ip_*` 相关文件，再重启节点进程（edge-node restart）
- `METRIC` 相关：删除 `edge-node/data/metric.*` 相关文件，再重启节点进程（edge-node restart）
- `AGENTS` 相关：删除 `edge-node/data/agents.*` 相关文件，再重启节点进程（edge-node restart）
- `CACHE` 相关：删除缓存目录下的对应缓存策略目录（比如p43）下的.indexes目录，再重启节点进程（edge-node restart）

注意：以上操作中的提示是重启edge-node进程，而不是重启服务器。

## 边缘节点的访问日志是怎么存储的？

边缘节点上的访问日志会实时通过API发送到API节点，然后API节点再存入数据库。管理员或用户在界面上查询时，会直接查询数据库中的数据。

## 管理系统或API节点宕机后边缘节点还能提供服务吗？

在管理系统或API节点宕机后，不会影响边缘节点提供的大部分服务，用户仍然能正常访问网站上的网站，但是有以下几个功能无法使用：

- 统计 - 无法正常上报统计数据到API节点
- 日志 - 无法正常上传访问日志和其他日志到API节点
- 申请证书 - 无法通过HTTP方式申请证书

## 节点上可以安装其他Web服务吗？

节点上可以安装nginx或者httpd等Web服务，但是端口不能和节点正在使用的端口（通常是80/443）冲突。

## 边缘节点用到nginx、traffic server了吗？

GoEdge边缘节点没有用到httpd、nginx、openrestry或者Apache Traffic Server等任何第三方网络服务软件。

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