用Keepalived搭建milvus高可用方案
用Keepalived搭建milvus高可用方案
本人是在centos中搭建项目,如有问题还请多讨论。
准备工作如下:
1.准备两台服务器 本人192.168.78.118 192.168.78.119
2.两台机器安装docker容器,Python 3.6版本和pip
Python安装参照https://www.cnblogs.com/yjlch1016/p/9289588.html
pip安装可按照https://pip.pypa.io/en/stable/installing/
3.安装mysql 目前milvus只支持mysql和sqlite 建议生产使用mysql
4.两台机器有共享存储设备
安装milvus
1.拉取milvus 1.0版本(可根据自己业务选择)
#docker pull milvusdb/milvus:1.0.0-cpu-d030521-1ea92e
2.创建milvus目录 /app/$user/milvus
在milvus下分别创建db、conf和logs目录
3.在conf下拉取配置文件server_config.yaml,也可去官网复制,修改配置文件内milvus端口号和mysql配置,其他可根据官网配置
wget https://raw.githubusercontent.com/milvus-io/milvus/v1.0.0/core/conf/demo/server_config.yaml
4.启动milvus命令
docker run -d --name xgmilvus \
-p 19530:19530 \
-p 19121:19121 \
-v /app/milvus/db:/var/lib/milvus/db \
-v /app/milvus/conf:/var/lib/milvus/conf \
-v /app/milvus/logs:/var/lib/milvus/logs \
milvusdb/milvus:1.0.0-cpu-d030521-1ea92e
查看是否启动成功命令
docker logs <milvus容器ID>
安装keepalived
1.在主备机环境中输入如下命令
# vim /etc/sysctl.conf
将net.ipv4.ip_forward=1前面的“#”号删除,将net.ipv4.ip_nonlocal_bind=1 插入其后并保存退出
使用如下命令使其生效:
# sysctl -p
2.在主备机中安装 keepalived 及其依赖包
# apt-get install libssl-dev openssl libpopt-dev
# apt-get install keepalived
3.给主备机配置 keepalived的虚拟路由地址设置配置如下:
主机配置
! Configuration File for keepalivedglobal_defs {
router_id sol01 #主机路由ID}
vrrp_script chk_milvus {
script "/etc/keepalived/chk_milvus.sh" # 检查主机的milvus是否正常运行脚本
interval 2
weight -20}
vrrp_instance VI_SERVER {
state MASTER # 主机服务器模式,备机设为BACKUP
interface enp7s0 # 主机监控网卡实例
virtual_router_id 51 # VRRP组名,主备机设置必须完全一致
priority 110 # 优先级(1-254),主机设置必须比备机高,备机可设为90
authentication { # 认证信息,主备机必须完全一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # 虚拟IP地址,主备机必须完全一致
192.168.1.104/24 # 注意配置子网掩码
}
track_script {
chk_milvus
}}
备机配置:
! Configuration File for keepalivedglobal_defs {
router_id sol02 # 备机路由ID}
vrrp_instance VI_SERVER {
state BACKUP # 主机服务器模式,备机设为BACKUP
interface enp3s0 # 备机监控网卡实例
virtual_router_id 51 # VRRP组名,主备机设置必须完全一致
priority 91 # 优先级(1-254),主机设置必须比备机高,备机可设为90
authentication { # 认证信息,主备机必须完全一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # 虚拟IP地址,主备机必须完全一致
192.168.1.104/24 # 注意配置子网掩码
}
notify_master "/etc/keepalived/start_docker.sh master"
notify_backup "/etc/keepalived/stop_docker.sh backup"
}
4.编辑脚本,这里只需修改milvus镜像ID。例如:<docker id>
替换为’85ea130daea1’
主机:
chk_milvus.sh #该脚本用于检测 Milvus server 是否正常
#!/bin/bash
RUNNING_STATUS=$(docker inspect --format '{{.State.Running}}' <docker id>)
if [[ "${RUNNING_STATUS}" != "true" ]];then
exit 1
fi
备机
start_docker.sh #会在主机 server 异常断掉,虚拟地址指向备机后启动备机的 Milvus server
#!/bin/bash
RUNNING_STATUS=$(docker inspect --format '{{.State.Running}}' <docker id>)
if [[ "${RUNNING_STATUS}" != "true" ]];then
docker start <docker id>
fi
stop_docker.sh #会在主机回复正常后,停止备机的 Milvus server
#!/bin/bash
RUNNING_STATUS=$(docker inspect --format '{{.State.Running}}' <docker id>)
if [[ "${RUNNING_STATUS}" = "true" ]];then
docker start <docker id>
fi
5.给上述脚本增加权限命令:
chmod +x chk_milvus.sh
chmod +x start_docker.sh
chmod +x stop_docker.sh
6.启动主备机keepalived,命令如下:
service keepalived start
7.停止Milvus server
systemctl stop keepalived 或 systemctl kill keepalived
8.查看日志命令
tail -f /var/log/messages
检查是否成功
1.主机执行# ip a
查看网断 此时192.168.1.104/24在主机显示
2.查看备机ip 执行 # ip a
此时只有备机IP
3.停掉主机Mlivus server 查看主机ip
4.查看从机IP
5.查看从机Milvus server 是否启动成功
6.此时查看主机日志可发现主机服务一直处于断开状态
7.重新启动主机Mlivus server 服务发现虚拟网断又回来了,这样就表示已经成功搭建Milvus高可用方案