故障排除 (AEN 4.1.0) ¶
概览¶
这是 Anaconda Enterprise Notebooks 部署的故障排除指南。
正常操作¶
服务器¶
Anaconda Enterprise Notebooks Server 安装在
/opt/wakari/wakari-server.
您可以通过以下方式获取服务器进程的状态:
# service wakari-server status
wk - server RUNNING pid 20758 , uptime 5 days , 0 : 30 : 23
worker RUNNING pid 20757 , uptime 5 days , 0 : 30 : 23
或者:
root@server # ps -Hu wakari
PID TTY 时间 CMD
20756?00:02:26 .supervisord
20757?00:05:58 mtq-worker
20758?00:00:08 周服务器
20765?00:02:00 周服务器
20766?00:01:55 周服务器
20767?00:02:20 周服务器
20770?00:02:02 周服务器
| 主管 | 细节 |
|---|---|
| 描述 | 管理wakari-worker和多个进程wk-server |
| 用户 | wakari |
| 配置 | /opt/wakari/wakari-server/etc/supervisord.conf |
| 日志 | /opt/wakari/wakari-server/var/log/supervisord.log |
| 控制 | service wakari-server |
| 港口 | 没有任何 |
| 周服务器 | 细节 |
|---|---|
| 描述 | 处理用户交互并将作业传递到 wakari 网关。对它的访问由 nginx 管理。 |
| 用户 | wakari |
| 命令 | /opt/wakari/wakari-server/bin/wk-server |
| 配置 | /opt/wakari/wakari-server/etc/wakari/ |
| 控制 | service wakari-server |
| 日志 | /opt/wakari/wakari-server/var/log/wakari/server.log |
| 港口 | 5000(仅在本地主机上) |
| 瓦卡里工人 | 细节 |
|---|---|
| 描述 | 从异步执行任务 wk-server |
| 用户 | wakari |
| 日志 | /opt/wakari/wakari-server/var/log/wakari/worker.log |
| 控制 | service wakari-server |
| nginx | 细节 |
|---|---|
| 描述 | 提供静态文件并充当所有其他请求的代理,这些请求传递给在端口 5000 上运行的 wk-server 进程。 |
| 用户 | nginx |
| 配置 | /etc/nginx/nginx.conf
/opt/wakari/wakari-server/etc/conf.d/www.enterprise.conf |
| 日志 | /var/log/nginx/woc.log /var/log/nginx/woc-error.log |
| 控制 | service nginx status |
| 港口 | 80 |
Nginx 至少运行两个进程: - 以 root 用户身份运行的主进程 - 以 nginx 用户身份运行的工作进程
网关¶
Anaconda Enterprise Notebooks Gateway 安装在
/opt/wakari/wakari-gateway.
您可以通过以下方式获取网关进程的状态:
# service wakari-gateway status
wk - gateway RUNNING pid 1137 , uptime 5 days , 1 : 59 : 28
或者:
root@gateway # ps -Hu wakari
PID TTY 时间 CMD
第1136章 00:01:59 .supervisord
第1137章 00:00:02 周网关
| 主管 | 细节 |
|---|---|
| 描述 | 管理wk-gateway流程。 |
| 用户 | wakari |
| 配置 | /opt/wakari/wakari-gateway/etc/supervisord.conf |
| 日志 | /opt/wakari/wakari-gateway/var/log/supervisord.log |
| 控制 | service wakari-gateway |
| 港口 | 没有任何 |
| 瓦卡里网关 | 细节 |
|---|---|
| 描述 | 将来自 Anaconda Enterprise Notebooks Server 的请求传递到计算节点。 |
| 用户 | wakari |
| 配置 | /opt/wakari/wakari-gateway/etc/wakari/wk-gateway-config.json |
| 日志 |
|
| 工作目录 | / (根) |
| 港口 | 8089(网络缓存) |
计算节点¶
Anaconda Enterprise Notebooks Compute 安装在
/opt/wakari/wakari-compute.
您可以通过以下方式获取计算节点进程的状态:
# service wakari-compute status
wk - compute RUNNING pid 22050 , uptime 3 days , 1 : 03 : 19
或者:
root@compute # ps -Hu wakari
PID TTY 时间 CMD
1150?00:02:01 .supervisord
第1152章 00:00:01 周计算
wk-compute 将按顺序加载每个配置文件:
/etc/wakari/config.json/etc/wakari/compute-launcher-config.json./compute-launcher-config.json- 由
-c选项指定的配置文件
如果在多个文件中指定了一个选项,则遇到的最后一个优先。
| 主管 | 细节 |
|---|---|
| 描述 | 管理wk-compute流程。 |
| 用户 | wakari |
| 配置 | /opt/wakari/wakari-compute/etc/supervisord.conf |
| 日志 | /opt/wakari/wakari-compute/var/log/supervisord.log |
| 控制 | service wakari-compute |
| 工作目录 | /opt/wakari/wakari-compute/etc |
| 港口 | 没有任何 |
| 周计算 | 细节 |
|---|---|
| 描述 | 启动计算进程 |
| 用户 | wakari |
| 配置 | /opt/wakari/wakari-compute/etc/wakari/wk-compute-launcher-config.json
/opt/wakari/wakari-compute/etc/wakari/scripts/config.json |
| 日志 | /opt/wakari/wakari-compute/var/log/wakari/compute-launcher.application.log
/opt/wakari/wakari-compute/var/log/wakari/compute-launcher.log |
| 工作目录 | / (根) |
| 控制 | service wakari-compute |
| 港口 | 5002(射频) |
项目和权限¶
项目位于计算节点上的 projectRoot 文件夹中(默认为 /projects)。项目目录在项目第一次启动时创建;启动项目脚本从
/opt/wakari/wakari-compute/lib/node_modules/wakari-compute-launcher/skeleton.
项目目录权限如下:
老板: RWX , 用户 谁 创建 的 项目
组: RWX , 所有者的组
其他: - X , 以 允许 访问 到 的 公共 文件夹的
访问控制列表: RWX 用于 任何 其他 团队 成员
项目目录中的文件和子目录与项目目录具有相同的权限,除了:
- 公共文件夹及其中的所有内容都是世界可读的。
- 硬链接到根 anaconda 环境 (
/opt/wakari/anaconda) 的任何文件仍归root或wakari用户所有。
项目文件和目录权限由启动项目脚本维护。项目中的所有文件和目录都将在项目启动时设置其权限,但属于rootor 的文件除外wakari(以避免更改 中链接文件的权限/opt/wakari/anaconda)。因此,
wakari用户不应创建旨在与他人共享的项目,因为权限系统将无法正确管理wakari用户拥有的项目文件。
一般故障排除步骤¶
确保 Anaconda Enterprise Notebooks 服务设置为开机启动¶
(在所有 3 个组件上:服务器、网关和计算节点)
chkconfig --列表 | grep wakari
如果它们丢失,您可以尝试添加它们:
chkconfig --添加 [ wakari -服务器| wakari -网关| 家企业 wakari -计算]
然后可以使用以下restart命令安全地启动服务:
service wakari -服务器 重启
service wakari -网关 重启
service wakari -计算 重启
这些命令需要在适当的节点上执行。
确保所有服务都在运行¶
(见上面的正常操作)。
# service wakari-server status
wk - server RUNNING pid 20758 , uptime 5 days , 0 : 30 : 23
worker RUNNING pid 20757 , uptime 5 days , 0 : 30 : 23
root @server # service nginx status
nginx ( pid 26303 ) is running ...
# service wakari-gateway status
wk - gateway RUNNING pid 1137 , uptime 5 days , 1 : 59 : 28
# service wakari-compute status
wk - compute RUNNING pid 22050 , uptime 3 days , 1 : 03 : 19
如果缺少任何进程,请使用上述命令重新启动它们。
检查无关进程¶
使用以获得下运行的进程的完整列表,用户帐户。ps -Hu wakariwakari
root@server # ps -Hu wakari
PID TTY 时间 CMD
20756?00:02:26 .supervisord
20757?00:05:58 mtq-worker
20758?00:00:08 周服务器
20765?00:02:00 周服务器
20766?00:01:55 周服务器
20767?00:02:20 周服务器
20770?00:02:02 周服务器
root@server # ps -f -C nginx
UID PID PPID C STIME TTY TIME CMD
根 26303 1 0 12:18 ? 00:00:00 nginx:主进程/usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 26305 26303 0 12:18?00:00:00 nginx:工作进程
root@gateway # ps -Hu wakari
PID TTY 时间 CMD
第1136章 00:01:59 .supervisord
第1137章 00:00:02 周网关
root@compute # ps -Hu wakari
PID TTY 时间 CMD
1150?00:02:01 .supervisord
第1152章 00:00:01 周计算
什么是正常的:
- wk-server、wk-gateway 和 wk-compute 进程应该具有由 报告的 PID
supervisorctl。 - nginx 主进程应该有 PID 报告
。
service nginx status - 如果您在一台机器上安装了多个 Anaconda Enterprise Notebooks 组件,则所有已安装组件的进程将显示在该机器上。
- 在 Compute 节点上,用户当前正在运行的任何 Anaconda Enterprise Notebooks 应用程序都将出现。例如:
root@compute # ps -Hu wakari
PID TTY 时间 CMD
1150?00:00:00 .supervisord
第1152章 00:00:00 周计算
1340?00:00:00 狂欢
第1341章 00:00:00 笔记本包装
如果存在额外的 wk-server、wk-gateway、wk-compute 或 supervisord 进程,请使用kill命令删除它们。然后使用上述方法重新启动服务。service SERVICE_NAME restart
检查服务器之间的连通性¶
服务器到网关¶
在服务器上,导航到管理/数据中心。对于列表中的每个数据中心,检查从服务器到该网关的连接(在本例中,网关是http://gateway.example.com:8089):
root @server # curl --connect-timeout 5 http://gateway.example.com:8089 > /dev/null
计算节点的网关¶
在服务器上,导航到管理员/企业资源。对于列表中的每个计算资源,打开它并检查 URL 字段的内容以确保它以“http”或“https”开头。检查从相应网关到该 URL 的连接。例如,如果 URL 是
http://compute.example.com:5002:
root @gateway # curl --connect-timeout 5 http://compute.example.com:5002 > /dev/null
服务器网关¶
此路径由网关配置命令使用
wk-gateway-configure。首先,确保网关链接到配置文件中的正确服务器,并且指定了完整的服务器 URL。然后检查与服务器的连接。
root @gateway # grep WAKARI_SERVER /opt/wakari/wakari-gateway/etc/wakari/wk-gateway-config.json
"WAKARI_SERVER" : "http://wakari.example.com" ,
root @gateway # curl --connect-timeout 5 http://wakari.example.com > /dev/null
root @gateway # curl --connect-timeout 5 http://error.example.com > /dev/null
卷曲: (7 ) 无法 以 连接 到 错误。例子。com 端口 80 : 连接被 拒绝
如果连接失败,请检查以下项目:
- 确保在服务器上正确配置网关(数据中心)和计算节点(企业资源)。
- 验证进程是否正在侦听配置的端口:
根@server #netstat的-plt
活动 的互联网 连接 (仅 服务器)
原 的Recv - Q 发送- Q 本地 地址 外国 地址 状态 的PID /节目 名称
的TCP 0 0 * :HTTP * :* LISTEN 26409 / nginx的
TCP 0 0 * :SSH * : * 听 986 / sshd
TCP 0 0 本地主机:SMTP * :* LISTEN 1063 /主
TCP 0 0 * :commplex -主 * :* LISTEN 26192 /蟒
TCP 0 0 本地主机:27017 * :* LISTEN 29261 / mongod的
TCP 0 0 * :SSH * :* 聆听 986 / sshd
tcp 0 0 本地主机:smtp * :* LISTEN 1063 /主
- 检查两台主机上的防火墙设置/日志以确保数据包没有被阻止或丢弃。
检查配置文件语法¶
使用此命令验证配置文件是否包含有效的 JSON:
root @server # python -m json.tool /opt/wakari/wakari-server/etc/wakari/*.json
root @gateway # python -m json.tool /opt/wakari/wakari-gateway/etc/wakari/*上传.json
根@compute #蟒-m json.tool /opt/wakari/wakari-compute/etc/wakari/*.json
如果文件正确,将显示内容。如果文件中有语法错误,则会显示该消息
。编辑配置文件,确保 JSON 语法正确。No JSON object could be decoded
检查文件所有权¶
验证 /opt/wakari/anaconda 中的所有文件都属于 user/group
wakari:
root @server # 查找 /opt/wakari/anaconda \! -user wakari -print
root @server # find /opt/wakari/anaconda \! -group wakari -print
如果输出中列出了任何文件,请修复其所有权:
chown - R wakari : wakari / opt / wakari / anaconda
验证是否启用了 POSIX ACL ¶
acl必须在包含项目根目录的文件系统上启用该选项。
首先,确定项目根目录。如果配置了自定义 projectRoot,您可以通过以下方式确定它:
root @compute # grep projectRoot /opt/wakari/wakari-compute/etc/wakari/config.json
如果不是,则项目根目录为/projects.
mount列出的选项或默认选项tune2fs
应表明该acl选项已启用。
root @compute # fs=`df /projects | 尾-1 | cut -d " " -f 1`
root @compute # mount | grep $fs
/ dev / vda on / type ext4 ( rw )
root @compute # tune2fs -l $fs | grep 选项
默认 挂载 选项: user_xattr acl
清除浏览器 Cookie ¶
当 Anaconda Enterprise Notebooks 配置更改或软件升级时,浏览器中保留的 cookie 可能会导致问题。清除 cookie 并重新登录可以帮助解决问题。
具体问题¶
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 浏览器显示“重定向过多” | Cookie 已过期 | 清除浏览器的 cookie 和缓存,然后重试。 |
| supervisorctl 错误:“unix:////opt/wakari/wakari-server/etc/supervisor.sock 没有这样的文件” | “supervisord”未在服务器上运行 | 如上所述,确保在 crontab 中包含 supervisord。然后手动启动supervisord。 |
| 删除项目时未找到数据中心消息 | 数据中心已被移除 | 以 root 身份运行 /opt/wakari/wakari-server/bin/wk-server-admin remove-project --db-only <user> <project> |
| 忘记管理员密码 | 使用 ssh 以 root 身份登录服务器,并运行命令. 然后,您可以使用您选择的新密码以用户身份登录 Anaconda Enterprise Notebooks 。/opt/wakari/wakari-server/bin/wk-server-admin add-user wakari --admin -p <new password> -e <your email>wakari |
日志¶
Anaconda Enterprise Notebooks 日志文件的默认位置是 /opt/wakari/install/var/log。
Anaconda Enterprise Notebooks 安装程序登录到 /tmp/wakari_{server,gateway,compute}.log。
如果日志文件变得太大,它们可以被删除。要将日志设置为或多或少详细,Jupyter Notebook 系统有一个设置 'Application.log_level'。将 'Application.log_level' 设置为 'ERROR' 将使日志比默认的更简洁,但仍然提供相当丰富的信息。
杀死了 supervisord 和“错误:此套接字已关闭。” ¶
当主管守护进程“supervisord”被杀死时,发送到标准输出“stdout”和标准错误“stderr”的信息被保存在一个最终填满的管道中。然后尝试启动任何应用程序失败,并显示错误消息“此套接字已关闭”。
为防止出现此问题,请始终干净地关闭并重新启动进程,并且不要在未先关闭 wk-compute 和其他使用它的进程的情况下关闭或杀死 supervisord。
要从此问题中恢复,请关闭进程“wk-compute” 。然后重启 supervisord 和 wk-compute 进程:sudo kill -9
须藤 /等/初始化。d / wakari -计算 停止
sudo / etc / init . d / wakari -计算 开始
服务错误 502:无法连接到应用程序管理器¶
当网关节点显示此错误时,意味着计算资源没有响应。
当进程“wk-compute”已关闭时会导致此错误。要从此问题中恢复,请重新启动 supervisord 和 wk-compute 进程:
须藤 /等/初始化。d / wakari -计算 停止
sudo / etc / init . d / wakari -计算 开始
Amazon Web Services 上的“502 通信错误” ¶
如果您看到显示“502 通信错误:此网关无法与 Wakari 服务器通信”和 Wakari 服务器的 IP 地址的页面,请将 AEN 网关配置为使用服务器的 DNS 主机名。在 Amazon Web Services (AWS) 上,这将是 Amazon Elastic Compute Cloud (EC2) 实例的 DNS 主机名。