New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature]: Allow user to specify listening ip address for milvus components #26538
Comments
/assign @jiaoew1991 |
/assign @smellthemoon |
@LoveEachDay will "0.0.0.0" do for |
@congqixia We have two problems here:
Bind to |
working on it |
@LoveEachDay : I believe in other distributed systems there is an
|
In the case of docker and kubernetes IP addresses are dynamically allocated. It might make sense to be able to specify a CIDR network range to filter the IP or a network interface name as well ?! |
@ieugen We use the way to set up the advertise addr. In Kubernetes, only one pod ip address will be assigned, you can leave the Pass a cidr may not feasible. It's the user ability to make sure the ip address is routable and can be statically assigned. |
I think some filtering could be implemented so that the code would work like this:
Original code here
|
@LoveEachDay : I have added more information connected to this issue #25032 (comment) . In docker swarm, addding healthchecks to milvus makes the service run eventually. Perhaps different components each go through the IP selection process and reach different results => failures ?! |
this should be supported on milvus 2.3.2 |
thank you @xiaofan-luan . I am curios which parts. For docker swarm, since we can't specify container IP, we would need a CIDR based filter (we specify the CIDR the app should filter interfaces, when it finds an IP in that CIDR range, it should bind to it). There is an old issue with swarm and IP addresses for containers: moby/moby#24170 . To have an idea, this is what
|
On a server with IPV6 address, the service will restart continuously. |
how you you deploy any database if you can specify which port to use?
the internal design of milvus works fine. It stored both endpoint and port. I think the problem is how SDK connect to milvus |
g l
Non of us are docker swarm expert and milvus is ideally designed for K8s. |
hi @xiaofan-luan , Thanks for replying. It's more prevalent in Docker Swarm because swarm has 1 network interface per network (2 + localhost minimum) and I can't do anything about that unfortunatelly (because of Swarm limitations, not milvus). Yesterday I was very helpless when I had to "fix" this after a 12h weekend upgrade of our servers. The logic for selecting the IP is exemplified above. I considered fixing this myuself - but I don't know go and I am not working with milvus directly. For some reason it started working after a few hours and a lot of config tweeking. User supplies The code IMO should look something like this:
|
This could be an option. @LoveEachDay |
@xiaofan-luan @ieugen Add a cidr check would be a good option to cover this scenario which has multiple ips for milvus components. I would suggest we add a config option in the milvus.yaml like this:
And in the
|
Any plans to get this feature in a release ? |
Is there an existing issue for this?
Is your feature request related to a problem? Please describe.
By default, milvus components will use
funcutil.GetLocalIP()
to initialize grpc listening ip address, which may not work when pod/container has multiple network interfaces such asdocker swarm
, see also: #25032Describe the solution you'd like.
In the
milvus.yaml
we can add anaddress
config for each components which allow user to specify a routable address like this:Describe an alternate solution.
No response
Anything else? (Additional Context)
No response
The text was updated successfully, but these errors were encountered: