milvus高可用搭建

2021-10-09 02:19:04 字數 3386 閱讀 8290

**- 基於keepalived部署milvus高可用問題:

雙寫冷備:兩個寫節點不能同時啟動,否則會導致資料重複,通過增加與閘道器的連通性來解決可能同時啟動的問題,但不能完全保證沒有特殊情況的存在。另外宕機時可能會導致資料丟失。

一寫一讀:可以同時啟動,但是寫節點宕機時,資料不能寫入。

** - 基於minio的共享儲存,寫入速度比本地磁碟慢,如果資料量較大需要適當減小index_file_size,預設1024m,可設定為512m。**

docker pull milvus

新建目錄

/data/milvus/db

/home/milvus/wal

/home/milvus/conf

/home/milvus/logs

/home/milvus/wal

其中db位於minio掛載到本地的目錄,其他為本地磁碟目錄,conf下存放server_config.yaml

啟動:docker run -d --name milvus -p 19530:19530 -p 19121:19121 -p 9091:9091 -v /data/milvus/db:/var/lib/milvus/db -v /home/milvus/conf:/var/lib/milvus/conf -v /home/milvus/logs:/var/lib/milvus/logs -v /home/milvus/wal:/var/lib/milvus/wal milvusdb/milvus:0.9.0-cpu-d051520-cb92b1

若docker啟動報錯cannot set property tasksaccounting

執行:yum update

yum install keepalived

主備節點milvus不能同時啟動。

keepalived監控milvus,vip發生遷移時,首先停掉非vip節點的milvus,然後啟動vip節點的milvus。

主節點恢復正常後,vip不從冷備節點轉移至主節點,只有冷備節點異常後才轉移。

主節點配置:

vim /etc/keepalived/keepalived.conf

! configuration file for keepalived

global_defs

vrrp_script monit_milvus

vrrp_instance vi_server

virtual_ipaddress

track_script

notify_master "/home/start_milvus.sh"

}

冷備節點配置:

vim /etc/keepalived/keepalived.conf

! configuration file for keepalived

global_defs

vrrp_script monit_milvus

vrrp_instance vi_server

virtual_ipaddress

track_script

notify_master "/home/start_milvus.sh"

}

monit_milvus.sh

#!/bin/bash

# 判斷是否獲取vip,並且vip與閘道器是否通

minio=

check_time=3

vip=192.168.16.244

gateway=192.168.16.1

eth=eth0

#另外一台節點的host

host=type1-08

# 判斷與閘道器的連通性

/sbin/arping -i $eth -c 2 -s $vip $gateway >/dev/null 2>&1

#為vip且通,不為vip時返回值為2

if [ $? = 0 ] ; then

echo "是vip且通" >>/home/monit.log

# 判斷minio是否掛載

miniocount=`df | grep /data/milvus | wc -l`

if [[ $miniocount == 0 ]]; then

s3fs -o passwd_file=/etc/passwd-s3fs -o use_path_request_style -o url=$minio -o allow_other -o bucket=milvusdata /data/milvus

fi # 檢測並啟動milvus

running_status=$(docker inspect --format '}' milvus)

if [[ "$" != "true" ]];then

ssh root@$host "docker kill milvus"

docker start milvus

echo starting >>/home/monit.log

fi

echo started >>/home/monit.log

fi

start_milvus.sh

#!/bin/bash

vip=192.168.16.244

gateway=192.168.16.1

eth=eth0

#另外一台節點的host

host=type1-08

echo "-----------" >>/home/start.log

echo "start monit" >>/home/start.log

/sbin/arping -i $eth -c 1 -s $vip $gateway >/dev/null 2>&1

if [ $? = 0 ] ;then

running_status=$(docker inspect --format '}' milvus)

if [[ "$" != "true" ]];then

ssh root@$host "docker kill milvus"

docker start milvus

echo "start milvus" >>/home/start.log

fielse

running_status=$(docker inspect --format '}' milvus)

if [[ "$" == "true" ]];then

docker kill milvus

echo "kill milvus" >>/home/start.log

fi fi

啟動:

systemctl enable keepalived

systemctl start keepalived

mysql keepalived搭建高可用環境

假設已經搭建好了mysql並且存在正常狀態的主主複製 1 安裝keepalived並且根據業務的vip及主機網絡卡,ip配置好 etc keepalived keepalived.conf,具體操作已在 框中實現 1 安裝環境 謹慎,建議先編譯,能通過就不要進行第一步了 yum y install ...

搭建eureka高可用

1.設定伺服器之間的host,測試環境是在window10上搭建的,所以去修改c windows system32 drivers etc檔案,如下 2.建立專案 一組服務需要使用相同的服務名稱,才能被識別為一組!name eureka server eureka client 集群模式需要設定為t...

lvs keepalived DR搭建高可用集群

lvs keepalived dr搭建高可用集群 環境準備 lvsserver1 192.168.1.10 lvsserver2 192.168.1.11 vip 192.168.1.15 rs1 192.168.1.12 rs2 192.168.1.13 lvsserver1和lvsserver2...