由于Milvus官方文档只提及如何使用docker安装部署Milvus,关于源码安装方式篇幅较少,因此,我整理撰写了如何通过源码编译方式成功安装Milvus,详见此篇。之所以选择这种复杂的安装方式,可以调试源码进而熟悉Milvus如何搭建整个框架支持AI上层应用功能。根据上篇步骤部署虽然可以成功,然而,我却不能成功启动Milvus服务,这个问题困扰了一两天,现在终于得以解决并能成功调试Milvus源码。接下来,分为三个部分介绍如何启动和成功调试。
Milvus服务启动主要分为两种模式,一种是单机(Milvus Standalone),另一种是集群(Milvus Cluster)。我选择单机模式启动,单机指的是不提供网络功能的数据库。
启动命令:
./bin/milvus run standalone
可能每个人服务器性能、赋予权限等都不同,不一定会遇到和我一样无法成功启动的问题。这里记录我遇到的问题以及解决方案。
这个问题困扰了我两天,后仔细阅读Milvus官方文档发现,Milvus启动的前提依赖于三个外部服务,即etcd、minio和Pulsar。版本要求如下:
未提前安装这三个外部服务的可以先提前安装,根据我上篇部署博客步骤安装的话,在此步应只有Pulsar未安装。
因此,这里只记录安装Pulsar服务步骤:
wget https://archive.apache.org/dist/pulsar/pulsar-2.8.2/apache-pulsar-2.8.2-bin.tar.gz
tar xvfz apache-pulsar-2.8.2-bin.tar.gz
cd apache-pulsar-2.8.2
bin/pulsar standalone
启动成功后,如果看到一堆日志[INFO]提示且味异常中断,则表示启动成功。
不出意外,还是失败!(这是肯定的啦~)
接下来,要根据启动报错日志来解决问题,结果导向问题。
下图是我遇到的问题,我将此部分总结在“3 遇到的问题汇总”,故不赘述,具体可自行跳转到指定位置查看。
成功启动界面如下:
到这一步,所有的问题均解决了。查看端口号,若正在监听,则表示启动成功!可以逐一查询以下端口号是否正在监听:
查看服务是否启动命令:
sudo netstat -tulnp | grep 9091
显示如下信息,表示启动成功:
tcp6 0 0 :::9091
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Milvus_cp1.1",
"type": "cppdbg",
"request": "attach",
"program": "~/milvus_cp1.1/bin/milvus",
"args": [], // Any arguments the program needs
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "", // Task to run before debugging, like 'build'
"miDebuggerPath": "/usr/bin/gdb" // Path to gdb
}
]
}
启动成功部署调试环境后,下载官网提供的python-sdk文件,运行成功界面如下:
打好断点后,启动milvus standalone,会跳转到断点位置,调试成功!
【问题描述】[ERROR] [datacoord/service.go:150] [“grpc server failed to listen error”] [error=“listen tcp :13333: bind: address already in use”] [stack=“github.com/milvus-io/milvus/internal/distributed/datacoord.(*Server).startGrpcLoop\n\t/home/b8402/22_raowenjing/milvus_cp1.1/internal/distributed/datacoord/service.go:150”]
【解决方法】直接杀掉占用13333的端口进程
再次运行./bin/milvus run standalone
【结果】没有报错。
[FATAL] [msgstream/mq_factory.go:16] [“fail to init rocksmq”] [error=“mkdir /var/lib/milvus: permission denied”]
【解决方法】更改权限。因为我是普通用户不能访问root权限。
sudo chown -R xxx:xxx /var/lib/milvus