安装部署问题
在私有化部署过程中遇到的部署相关问题,可以查看此文档进行解决。
若文档仍未解决您的问题,请提交工单联系百度的工作人员
单机部署问题
安装[人脸数据库服务]
1、数据库连接失败,报错: Can't connect to local Mysql server through socket '/home/dil-face/databus5535/tmp/mysql.sock'
解决方案:
1)终止databus进程:
ps j -A |grep databus5535|grep -v "grep"
终止databus相关进程及其父进程
终止后请再次执行 ps j -A |grep databus5535|grep -v "grep" 核实,确保进程杀干净
2)卸载databus
# 删除idl-face用户及其家目录,用于清理mysql底层数据
userdel -r idl-face
3)修改启动脚本
进入部署包内 original/package/Applications/face-server/project-conf/
# 通过sed命令将sleep 40s替换为sleep 140s
sed -i 's/sleep 40s/sleep 140s/g' mysql_start.sh
修改后如下图所示:
4)重新部署数据库服务
bash mysql_start.sh
-------------------------------出现下面结果表示安装mysql成功------------------------------
1. databus start
2. 190506 15:08:17 mysqld_safe Logging to '/home/idl-face/databus5535/log/mysql.err'.
3. 190506 15:08:17 mysqld_safe Starting mysqld daemon with databases from /home/idl-
4. face/databus5535/var
5. databus init start
6. databus grant ...
7. databus init start
8. databus init finish
2、数据库服务无法自动部署,如何进行手动部署并设置服务开机自动启动?
(1)首先以root用户创建idl-face新用户
useradd idl-face
passwd 用户自定义
(2)解压original/package/Applications/face-server目录下的basepkg.tar.gz安装包,里面有databus5535目录,将其移到: /home/idl-face/databus5535/ (目录固定,不能为其他目录)
mv ./databus5535 /home/idl-face/
(3)创建一个给mysql用的日志目录 /var/log/mariadb,并赋为 777 权限,并对 /home/idl-face/databus5535/ 赋权
mkdir -p /var/log/mariadb
chmod 777 /var/log/mariadb -R
chown -R idl-face.idl-face /home/idl-face/databus5535/
(4)切换到idl-face用户
su idl-face
(5)进入databus5535目录
cd /home/idl-face/databus5535/bin/
(6)启动服务
nohup ./mysqld_safe --defaults-file=../etc/my.cnf &
(7)初始化数据库
cd /home/idl-face/databus5535/
bin/mysql -uroot -p'Bs~XIsDDv4XcDGCt)S(+4*yjQ&8NJh' --default-character-set=utf8 < sql/database_and_grant.sql
bin/mysql -uroot -p'Bs~XIsDDv4XcDGCt)S(+4*yjQ&8NJh' --default-character-set=utf8 < sql/face.sql
(8)检查数据库是否启动成功
ps -ef | grep mysql
(9)将数据库启动加入开机启动
vim /etc/rc.local
加入bash /home/idl-face/databus5535/sh/mysql_boot.sh
(10)将idl-face用户禁用登录 (非常重要)
执行完成安装后,请一定要将idl-face用户禁用登录
方法:
1、切换到root用户
2、usermod -s /sbin/nologin idl-face
3、安装数据库报错error while loading shared libraries :libncurses.so.5……
报错为缺少对应的libncurses.so.5
可以yum install libncurses.so.5或者yum install libncurses.so.*进行安装
之后ps -ef | grep mysql 查看数据库进程id kill掉
再执行userdel -r idl-face 将对应用户及文件删除
之后执行一键部署脚本或者手动部署即可
一键鉴权和人脸服务
在一键安装鉴权服务和人脸识别服务过程中主要会出现以下几类问题,大家可以根据实际部署中遇到的问题进行排查解决。
(一)检查服务器环境
- 请保证8443端口(鉴权服务端口)不被占用
- CPU支持AVX/AVX2以及BMI2指令集(12年后的CPU基本都支持)
环境检查问题及解决方案
类型 | 描述 | 解决方案 |
---|---|---|
CPU内存环境检查 | 要求≥32GB,实际不满足要求 | 百万级人脸库内存>16GB,执行continue命令即可 |
CPU指令集检查 | 环境检查结果显示当前系统不支持avx/avx2指令集以及bmi2指令集 | 需要更换硬件为可以支持avx/avx2指令集以及bmi2指令集的CPU |
硬件环境检查 | 要求≥500GB,实际不满足要求 | 百万级人脸库硬盘≥100GB,执行continue命令即可 |
显卡检查 | 环境检查结果显示检查不到显卡 | 执行nvidia-smi确认显卡存在,执行continue命令即可 |
显卡驱动检查 | 环境检查结果显示显卡驱动不符合要求 | 卸载掉自己安装的显卡驱动,重新执行一键安装部署命令(一键安装过程中会安装驱动等环境,不建议客户自己安装驱动,驱动版本容易与人脸模型不兼容) |
(二)安装Docker
1.Docker安装过程中发生冲突
Docker需要使用从百度下载的安装部署包中的Docker,如果您本地已有Docker,需要确认Docker是否可以卸载。(如果Docker中已经装了服务就先保存下来移植到新建的部署包中的Docker中)
2.docker启动失败, Failed to program NAT chain: ZONE_CONFLICT: 'docker0' already bound to a zone
问题现象:
通过journalctl -u docker --no-pager
命令发现发现docker报错
failed to start daemon: Error initializing network controller: Error creating
default "bridge" network: Failed to program NAT chain: ZONE_CONFLICT: 'docker0'
already bound to a zone
解决方案:
该报错是因为防火墙的区域冲突,导致创建虚拟网络失败。解决方案如下:
firewall-cmd --zone=trusted --remove-interface=docker0
firewall-cmd --reload
- 部署过程中docker出现no space left on device的报错
请参考 修改docker的默认存储路径
- 安装docker-ce,依赖包冲突
出现需要安装依赖的版本比系统自带版本低的情况,导致安装失败,详细报错如下
--> 解决依赖关系完成
错误:软件包:libsemanage-python-2.5-8.el7.x86_64 (Local_yum)
需要:libsemanage = 2.5-8.el7
已安装: libsemanage-2.5-14.el7.x86_64 (@anaconda)
libsemanage = 2.5-14.el7
可用: libsemanage-2.5-8.el7.x86_64 (Local_yum)
libsemanage = 2.5-8.el7
错误:软件包:audit-libs-python-2.7.6-3.el7.x86_64 (Local_yum)
需要:audit-libs(x86-64) = 2.7.6-3.el7
已安装: audit-libs-2.8.5-4.el7.x86_64 (@anaconda)
audit-libs(x86-64) = 2.8.5-4.el7
可用: audit-libs-2.7.6-3.el7.x86_64 (Local_yum)
audit-libs(x86-64) = 2.7.6-3.el7
错误:软件包:policycoreutils-python-2.5-17.1.el7.x86_64 (Local_yum)
需要:policycoreutils = 2.5-17.1.el7
已安装: policycoreutils-2.5-34.el7.x86_64 (@anaconda)
policycoreutils = 2.5-34.el7
可用: policycoreutils-2.5-17.1.el7.x86_64 (Local_yum)
policycoreutils = 2.5-17.1.el7
您可以尝试添加 --skip-broken 选项来解决该问题
您可以尝试执行:rpm -Va --nofiles --nodigest
2021-10-21 13:58:19,993 - 7100 - install - INFO - subprocess finished,cmd : ['yum', 'install', '-y', 'docker-ce']
解决方案: 服务器联网条件下,则可以通过在线安装解决。
yum -y install docker-ce
如果yum安装 docker-ce 返回 no package docker-ce available
,请使用如下方法解决:
# 安装yum管理工具
yum install -y yum-utils
# yum添加软件源
yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 刷新缓存
yum makecache fast
# 安装docker-ce
yum install docker-ce
(三)安装Nvidia驱动
- 安装nvidia驱动报错 unable to find the kernel source tree for the currently running kernel
问题现象:
执行 python install.py install nvidia
报错如下图
解决方案:
- 安装与内核版本对应的kernel-devel ,可在线安装:
yum install "kernel-devel-uname-r == $(uname -r)"
2)安装的时候在安装命令后面加上内核文件所在目录:
python install.py in nvidia --kernel-source-path=/usr/src/kernels/内核文件目录
- 如果在线安装找不到包,可以访问 http://rpm.pbone.net/ 通过关键词搜索,选择与
uname -r
返回的内核版本一致的rpm包进行下载,安装方式
# 假如 uname -r 返回 3.10.0-1160.59.1.el7.x86_64
# 可下载对应的rpm包 kernel-devel-3.10.0-1160.59.1.el7.x86_64.rpm 进行安装
yum -y install kernel-devel-3.10.0-1160.59.1.el7.x86_64.rpm
# 重新安装nvidia驱动
python install.py in nvidia --kernel-source-path=/usr/src/kernels/3.10.0-1160.59.1.el7.x86_64
2.出现ERROR: The Nouveau kernel driver is currently in use by your system
安装nvidia的过程中需要禁用nouveau,这个步骤需要重启才能生效。如果安装脚本执行完之后,最后的输出如下: 则需要重启机器。然后重新执行安装脚本即可。
- nvidia-docker2 安装失败
如果当前服务器已经安装>17.06.2 版本的docker, 通过python2 install.py inall
或 python2 install.py in nvidia
安装nvidia-docker2 的话 一般会遇到与现有docker版本冲突的问题。
解决方案:
如果服务器可以联网的话,可以yum来在线安装
yum install -y nvidia-docker2
如果yum安装 nvidia-docker2 返回 no package nvidia-docker2 available
,请使用如下方式解决:
distribution=$(source /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
yum clean expire-cache
yum install -y nvidia-docker2
systemctl restart docker
(四)安装人脸服务
-
安装过程中漏装人脸数据库服务
人脸数据库服务一键安装部署请参考:安装部署方案 中单机部署-部署数据库服务。
- 报错 face-server 安装失败,请尝试执行 cd /home/baidu/work/face-server/project-conf/ && bash multi_docker_start.sh
问题现象:
执行python install.py inall
后报错 face-server 安装失败,请尝试执行 cd /home/baidu/work/face-server/project-conf/ && bash multi_docker_start.sh
解决方案:
请复制该命令手工执行,查看命令返回结果
cd /home/baidu/work/face-server/project-conf/ && bash multi_docker_start.sh
1)如果返回数据库连接失败
# 重新安装数据库
ps -ef | grep mysql # 找到对应的数据库进程kill 掉,或者pkill -u idl-face
userdel -r idl-face # 删除用户及家目录
cd original/package/Applications/face-server/project-conf/ && bash mysql_start.sh # 重新执行安装脚本
iptables -I INPUT -p tcp --dport 5535 -j ACCEPT #(该步骤在部署mysql时有要求用户手动执行,避免遗漏,再次执行一遍)
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/ && bash multi_docker_start.sh
- 如果返回报错:“can not find docker image :300478125c1e, please check docker images”
# 手动load 人脸镜像
docker load -i /home/baidu/work/face-server/docker.tar
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/ && bash multi_docker_start.sh
3)如果返回报错:“can not find nvidia-smi”
# 一般是nvidia安装有问题,可执行重新安装
python install.py rm nvidia && python install in nvidia
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/ && bash multi_docker_start.sh
4)如果返回报错:“docker: error response from daemon: network easypack not found“
# 手动创建network,名称为easypack
docker network create --driver bridge easypack
# 重新手动安装人脸服务
cd /home/baidu/work/face-server/project-conf/ && bash multi_docker_start.sh
- "人脸应用部署后,face-service-0-0容器状态为Created"
问题现象:
执行 docker ps -a
发现 face-service-0-0 容器状态为created
解决方案:
可以执行 docker inspect ${人脸容器名}
进一步查看顶部报错信息,如 返回 “network easypack not found”,可执行
docker network create --driver bridge easypack
docker restart face-service-0-0
多机部署问题
私有化多机部署出现问题请提交工单联系百度人员咨询解决。
文件下载问题
md5值校验失败
将部署包里refs.txt文件中下载失败的文件对应的md5改成-
再次执行bash download.sh命令即可