文章目录
参考:《官方部署文档》https://github.com/vearch/vearch/blob/master/docs/Deploy.md
1 部署
1.1 安装 vearch
在24
和107
两台机器上分别 安装vearch 及其环境。
安装参考:《图像检索引擎vearch安装与测试使用
》:https://blog.csdn.net/u012052268/article/details/103264626
其中 在第1.3.2节的时候,不要直接运行bash run_docker.sh
, 因为多台机器运行,config文件需要改变了。
1.1.1 编译Vearch_evn
cd vearch/cloud/
bash compile_env.sh
离线不能用?
1.1.2 编译Vearch
cd vearch/cloud/
bash compile.sh
1.1.3 创建vearch可运行镜像
bash build.sh
离线不能用??
1.1.4 分布式部署配置文件
在cloud
文件夹内创建 config2master.toml
。配置好两个主机sever地址。
内容为:
[global]
name = "vearch"
data = ["datas/"]
log = "logs/"
level = "debug"
signkey = "vearch"
skip_auth = true
# if you are master you'd better set all config for router and ps and router and ps use default config it so cool
[[masters]]
name = "m1"
address = "192.168.1.1"
api_port = 8817
etcd_port = 2378
etcd_peer_port = 2390
etcd_client_port = 2370
[[masters]]
name = "m2"
address = "192.168.1.2"
api_port = 8817
etcd_port = 2378
etcd_peer_port = 2390
etcd_client_port = 2370
[router]
port = 9001
skip_auth = true
[ps]
rpc_port = 8081
raft_heartbeat_port = 8898
raft_replicate_port = 8899
heartbeat-interval = 200 #ms
raft_retain_logs = 10000
raft_replica_concurrency = 1
raft_snap_concurrency = 1
注意,要把192.168.1.1 和 192.168.1.2 更改为自己的服务器地址24
,107
。
1.1.5 启动运行veach
nohup docker run --net=host -v $PWD/config2master.toml:/vearch/config.toml ansj/vearch:0.2 all &
tail -100f nohup.out
千万注意!!!:
- vearch两台机器必须在几秒内 同时启动,才能链接成功(2台都是master)
- 107服务器 由于网段原因,必须关闭浏览器代理 才能访问。
- 由于是在docker中启动,所以:“容器与宿主机”以及“容器与局域网内其他机器” 直接通讯默认是关闭的。 所以,如过想要通过docker运行,就必须加上这个参数:
--net=host
来把容器与宿主机的网络直接等同 ;而且加上这个参数后,就不用-p
映射端口了
参考《Docker容器访问宿主机网络》:https://jingsam.github.io/2018/10/16/host-in-docker.html
最后,
- 打开浏览器访问
http://172.21.30.24:8817/_cluster/stats
和http://10.200.61.107:8817/_cluster/stats
验证集群状态; - 并通过
nohup.out
观察集群心跳数据。
1.1.6 vearch运维:
- 观察系统有没有在运行vearch:
ps -ef | grep vearch # 查看进程
netstat -nap | grep 8817 # 查看端口占用
docker ps -a # 查看有没有vearch容器在运行
- 关闭在运行的vearch:
docker ps -a # 查看有没有vearch容器在运行
docker stop xxxxxx # 停止vearch容器
docker rm xxxxx # 删除vearch容器
- 启动 vearch容器
nohup docker run --net=host -v $PWD/config2master.toml:/vearch/config.toml ansj/vearch:0.2 all &
tail -100f nohup.out
1.2 运行图像搜索插件
1.2.1 安装运行环境
这里会调用 python环境 以及训练好的VGG16模型。 所以需要安装一些python包,提前安装好的可以忽略:
- shortuuid
- opencv-python-4.1.1.26
- opencv-python_headless (一定要装,否则会报
ImportError: libSM.so.6
错误) - msgpack
- torch1.2 (一定要在官网 安装cpu版本啊 血的教训)
- torchvision 0.4 (一定要在官网 安装cpu版本啊 血的教训)
- pytorch官网上下载的
vgg16.pth
放到~/.cache/torch/checkpoints/
里面 - 下载yolov3.weights 放入
/home/CVpy36/xuqingtang/vearch/plugin/model/
1.2.2 修改配置文件
修改配置文件..../vearch/plugin/src/config.py
把服务器ip地址修改为 24 和107(端口不变)
1.2.3 启动图像搜索插件
以上环境准备好了,启动图片插件(虽然叫插件,但是为封装的flask借口去调用vearch各种服务)
cd /home/vearch/vearch/plugin
# 直接运行
./bin/run.sh image运行
# 或者使用nohup
nohup ./bin/run.sh image &
tail -100f nohup.out
看到 ↓ 信息就成功了(nohup.out中不显示错误就行):
load model success
1.2.4 image插件运维
- 观察有没有在运行image插件:
netstat -nap | grep 4101 # 查看端口占用
- 关闭在运行的image插件:
kill -9 xxpidxx
- 启动 image插件
nohup ./bin/run.sh image &
tail -100f nohup.out
2 验证分布式性能
2.1 库级别验证
2.1.1 建立图片数据库 与 表
在A服务器上建立图片数据库 与 表,观察B服务上的库状态。
代码参见:ShangHuRuWangImageRetrieval_vearch_docker/vearcDbOperation.py
- 检查集群健康性,观察集群心跳数据是否正常;
- 对24服务器 进行建库/建表操作;
- 查询数据库状态:
- 24服务器 包含刚刚建立的库和表;
- 107服务器 包含刚刚建立的库和表;
2.1.1 删除图片数据库 与 表
在A服务器上删除图片数据库 与 表,观察B服务上的库状态。(暂不验证)
2.2 数据级别验证
2.2.1 插入数据验证
在A服务器上建立图片数据库 与 表,观察B服务上的库状态。
代码参见:ShangHuRuWangImageRetrieval_vearch_docker/imageRetrievalWithVearchPlugin.py
插入A测试B:
- 检查集群健康性,观察集群心跳数据是否正常;
- 对24服务器 进行
批量插入
多张斑马
照片操作; - 查询数据库状态:
- 24 服务器 包含刚刚插入的图片;
- 107服务器 包含刚刚插入的图片;
插入B测试A:
- 检查集群健康性,观察集群心跳数据是否正常;
- 对107服务器 进行
批量插入
多张身份证
照片操作; - 查询数据库状态:
- 107服务器 搜索出刚刚插入的图片;
- 24 服务器 搜索出刚刚插入的图片;
2.2.2 删除数据验证
插入A测试B:
- 检查集群健康性,观察集群心跳数据是否正常;
- 对24服务器 进行
删除
某张营业
照片操作; - 查询数据库状态:
- 24 服务器 查不到刚删的图片;
- 107服务器 查不到刚删的图片;
原文链接:https://lookme.blog.csdn.net/article/details/103387659
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~