在GCP虚拟机上运行MLFlow:公网IP访问UI失败求分步操作流程
在GCP VM实例上通过外部IP访问MLflow UI的完整操作流程
我帮你整理了一套亲测有效的完整步骤,一步步来就能解决外部无法访问MLflow UI的问题:
一、先确认VM实例的基础网络配置
- 登录GCP控制台找到你的VM实例,先检查外部IP地址是否已分配——状态得是“已静态”或“临时”,不能是“无”,没有的话赶紧给实例分配一个外部IP。
- 确认实例所在的VPC网络是默认网络或者你自定义的允许外部访问的网络,别用完全隔离的内部网络。
二、配置/验证GCP防火墙规则
MLflow默认用5000端口,必须给这个端口开外部访问权限:
- 进入GCP控制台的VPC网络 > 防火墙页面
- 点击「创建防火墙规则」,按以下信息填写:
- 名称:取个好记的,比如
allow-mlflow-5000 - 网络:选择你的VM实例所在的VPC网络
- 方向:选入站(外部流量进VM)
- 目标:推荐选「指定的目标标签」,然后给你的VM实例加个对应标签(比如
mlflow-server)——比开放所有实例更安全;如果图省事也可以选「所有实例在网络中」,但不推荐。 - 来源IP范围:如果要让所有人访问填
0.0.0.0/0,如果只允许自己的IP访问,就填你的本地公网IP(格式比如114.xxx.xxx.xxx/32) - 协议和端口:勾选tcp,填写
5000 - 点击「创建」就行
- 名称:取个好记的,比如
- 验证规则:确保规则是“已启用”状态,而且如果用了标签,你的VM实例已经添加上对应的标签(去VM实例详情页的「标签」部分看)
三、在VM上正确启动MLflow服务
这步最关键!很多人踩坑就是因为没绑定0.0.0.0:
- 登录VM实例——可以用GCP控制台的SSH按钮直接连,或者本地终端用
gcloud compute ssh [你的实例名称]命令登录 - 先确认MLflow装好了:跑
mlflow --version看看,如果没装就用pip install mlflow装一下 - 启动MLflow的时候,必须加上
--host 0.0.0.0,这样才能监听所有网络接口,允许外部访问:
如果你需要把实验数据存到GCS或者自定义本地目录,再加两个参数就行:mlflow server --host 0.0.0.0 --port 5000mlflow server --host 0.0.0.0 --port 5000 --backend-store-uri ./mlruns --default-artifact-root gs://你的存储桶名称/mlflow-artifacts - 启动成功后,终端会输出
Server is running at http://0.0.0.0:5000,这时候就可以去测试访问了
四、测试访问与问题排查
- 打开本地浏览器,输入
http://[VM的外部IP]:5000,能打开MLflow UI就大功告成了! - 如果还是访问不了,按下面的步骤排查:
- 检查VM标签:确认实例已经加了防火墙规则里指定的标签,没加的话赶紧补上
- 检查VM内部防火墙:有些Linux系统(比如Ubuntu)自带ufw防火墙,得开放5000端口:
sudo ufw allow 5000/tcp sudo ufw reload - 检查MLflow监听地址:在VM上跑
netstat -tulpn | grep 5000,输出得是0.0.0.0:5000,如果是127.0.0.1:5000,说明启动命令没加--host 0.0.0.0,重新启动就行 - 测试网络连通性:本地终端用
telnet [VM外部IP] 5000测试端口是否开放,如果不通,大概率是GCP防火墙规则没配置对
内容的提问来源于stack exchange,提问作者Shadab Hussain
相关产品推荐
相关产品推荐

