zilliztech / attu

The GUI for Milvus
https://github.com/zilliztech/attu
Apache License 2.0
1.21k stars 118 forks source link

Can't connect to my Milvus db #494

Open alikaz3mi opened 4 months ago

alikaz3mi commented 4 months ago

Describe the bug:

While I am able to connect to my milvus db via python:

from pymilvus import connections
connections.connect(
  alias="default", 
  host='localhost', 
  port='19530'
)

I can't connect to milvus via attu application which is installed in my ubuntu 22.04

Steps to reproduce: 1. 2. 3.

Attu version:

2.3.10 Attu version:

shanghaikid commented 4 months ago

attu docker version?

cnzackliu commented 4 months ago

attu docker version?

I have the same problem .

I can connected my milvus via golang, but attu can not.

I install attu with docker-composedocker or desktop, none of these methods are feasible.

Machine

MBP 13-inch, 2020, Four Thunderbolt 3 ports

Docker version

(base) ➜ ~ docker version Client: Cloud integration: v1.0.35+desktop.13 Version: 26.0.0 API version: 1.45 Go version: go1.21.8 Git commit: 2ae903e Built: Wed Mar 20 15:14:46 2024 OS/Arch: darwin/amd64 Context: desktop-linux

Server: Docker Desktop 4.29.0 (145265) Engine: Version: 26.0.0 API version: 1.45 (minimum version 1.24) Go version: go1.21.8 Git commit: 8b79278 Built: Wed Mar 20 15:18:01 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.28 GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0

docker-compose

version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.0
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2020-12-03T00-03-10Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus
    command: ["milvus", "run", "standalone"]
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    ports:
      - "19530:19530"
    depends_on:
      - "etcd"
      - "minio"

  attu:
    container_name: attu
    image: zilliz/attu:v2.3.10
    environment:
      MILVUS_URL: standalone:19530
    ports:
      - "3000:3000"
    depends_on:
      - "standalone"

networks:
  default:
    name: milvus

docker

docker run -p 3000:3000 -e HOST_URL=http://127.0.0.1:8000 -e MILVUS_URL=127.0.0.1:19530 zilliz/attu:latest

desktop

https://github.com/zilliztech/attu/releases/

shanghaikid commented 4 months ago

if you are using attu docker version, make sure the milvus's address is accessible from attu's container.

MILVUS_URL=127.0.0.1:19530 this is not going to work, please change it to a real milvus ip.

cnzackliu commented 4 months ago

if you are using attu docker version, make sure the milvus's address is accessible from attu's container.

MILVUS_URL=127.0.0.1:19530 this is not going to work, please change it to a real milvus ip.

I deploy the attu with docker-compose ,it cannot connected to db. Why?

shanghaikid commented 3 months ago

please make sure attu container can access your milvus server through your network.

theamiteshtripathi commented 2 months ago

did this method solve the issue @cnzackliu .

@shanghaikid can you be little specfic, i am using milvus on docker and attu also on docker...i am using localhost:15930 (what exactly is a real ip)

shanghaikid commented 2 months ago

did this method solve the issue @cnzackliu .

@shanghaikid can you be little specfic, i am using milvus on docker and attu also on docker...i am using localhost:15930 (what exactly is a real ip)

ok, let me explain, hope you can understand this.

  1. You open attu from your browser, then type milvus address, lets say 10.10.10.10, click the connect button
  2. the browser send a request -> attu server with the milvus address(10.10.10.10), which is the container
  3. the attu server should be able to visit the milvus(10.10.10.10), but 10.10.10.10 just an ip address, the container has its own networking, if 10.10.10.10 is not a WAN address, it can not be visited from the container.

so all you need to do is confirm that the address you entering is accessible from the attu container inside.

jasnei commented 1 week ago

I got the same issue, but if you are running is the same docker-compose.yml, start the service with docker compose up -d, it should work. it works for me.

This not work for me

by starting the milvus-standalon first, and then by command line start as follow

docker run -p 8000:3000 -e  -e MILVUS_URL=172.30.0.4:19530 zilliz/attu:latest

in which cannot connect to database.

This works for me

here is my docker-compose.yml

# version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.5
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${PWD}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3
    networks:
      milvus:
        ipv4_address: 172.30.0.2  

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - ${PWD}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
    networks:
      milvus:
        ipv4_address: 172.30.0.3  

  # Milvus vector database service
  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.4.4
    command: ["milvus", "run", "standalone"]
    security_opt:
    - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${PWD}/volumes/milvus:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"
    networks:
      milvus:
        ipv4_address: 172.30.0.4  

  # Attu GUI for Milvus management
  attu:
    container_name: attu
    image: zilliz/attu:v2.4
    environment:
      MILVUS_URL: standalone:19530
    ports:
      - "8000:3000"
    depends_on:
      - "standalone"
    networks:
        milvus:
          ipv4_address: 172.30.0.5

networks:
  milvus:
    driver: bridge
    ipam:
      config:
        - subnet: 172.30.0.0/16  # Changed to avoid overlap
docker compose up -d

and check

localhost:8000

Thanks