These are chat archives for atomix/atomix

9th
Aug 2018
Maxim Manco
@mmanco
Aug 09 2018 01:32
Hi guys, I have been following Atomix for quite some time and decided to give it a try. great progress so far!
I am seeing bunch of Member unreachable/reachable messages in the logs. tried to look up where does those messages are getting logged and came across DefaultClusterMembershipService.detectFailure method. I am wondering if the condition is correct or whether it should be flipped to !member.isReachable() here: https://github.com/atomix/atomix/blob/master/cluster/src/main/java/io/atomix/cluster/impl/DefaultClusterMembershipService.java#L258
BTW I am playing with rc8
Junbo Ruan
@aruanruan
Aug 09 2018 01:36
maybe
if(!member.isReachable())
o, the code is right
when the status is "reachable", then change to unreachable
Maxim Manco
@mmanco
Aug 09 2018 01:38
I see, that kind of make sense now. thanks.
Junbo Ruan
@aruanruan
Aug 09 2018 01:39
hands
Maxim Manco
@mmanco
Aug 09 2018 01:39
What could be the reason for the member to be unreachable? I am running all members on my local machine
Junbo Ruan
@aruanruan
Aug 09 2018 01:39
it is seldom happen when all nodes in local
i deploy it in different vm
Maxim Manco
@mmanco
Aug 09 2018 01:40
Got it, will give it a shot deploying in several containers and see how it goes
Junbo Ruan
@aruanruan
Aug 09 2018 01:40
when i shutdown one node, it became unreachable for other nodes
Maxim Manco
@mmanco
Aug 09 2018 01:41
Actually I don't do anything special. just keep it running and those messages starting to pop up
Junbo Ruan
@aruanruan
Aug 09 2018 01:46
maybe network jitter or delay, i guess
or cpus are busy doing else
Maxim Manco
@mmanco
Aug 09 2018 02:02
Will keep an eye on network and system load. thanks!
Junbo Ruan
@aruanruan
Aug 09 2018 05:29
@kuujo i have 3 machines & each machine has 2 network interfaces, 3 interfaces of 3 machine are grouped into LAN, other 3 interfaces are grouped into wan, i want to make lan for atomix cluster , wan for client, how can i configure that?
Johno Crawford
@johnou
Aug 09 2018 06:47
How is network jitter or delay going to be an issue on local host 🤔
Junbo Ruan
@aruanruan
Aug 09 2018 08:02
network jitter will occur for remove machine
local may be delayed for cpus is busy
Junbo Ruan
@aruanruan
Aug 09 2018 08:10
@kuujo suggestion: i think the rest server of atomix should be extendible that can install user define instance resources or content objects
by using classpath scanning
Jordan Halterman
@kuujo
Aug 09 2018 08:31
@aruanruan You can define REST resources for primitives
All the existing primitives and their REST APIs work the same way as a custom primitive would
Junbo Ruan
@aruanruan
Aug 09 2018 08:33
i know that, i want to use the rest server to extend some REST services not only primitive but based the primitives
Jordan Halterman
@kuujo
Aug 09 2018 08:34
For example?
I guess it’s a small change to decouple REST resources from primitive types
Junbo Ruan
@aruanruan
Aug 09 2018 08:36
i wrap primitives rsources
supply high level services
Jordan Halterman
@kuujo
Aug 09 2018 08:37
Sure
Junbo Ruan
@aruanruan
Aug 09 2018 08:39
for most situation, i don't want to supply the base primtive services
Jordan Halterman
@kuujo
Aug 09 2018 08:54
I wanted to argue that arbitrary endpoints would be outside the scope of the API, but I think there’s a compelling case to be made for allowing it. Similar projects like Consul have high level APIs for service discovery, health checks, etc, and it could be useful to allow projects to extend Atomix in the same way - just add your resources in a jar to the /lib/ext folder
JAX-RS really lends itself to that architecture too
Junbo Ruan
@aruanruan
Aug 09 2018 08:54
yes, i know that
Jordan Halterman
@kuujo
Aug 09 2018 08:56
Trying to record all the pending issues for 3.0.0. I feel like I’m missing one
Sure I’m just agreeing with you
Jordan Halterman
@kuujo
Aug 09 2018 09:02
I’m not sure about how we would go about allowing the LAN and WAN to be separate. That would really complicate the information that’s disseminated about the nodes in the cluster. The server nodes know about one set of interfaces for each other, but have to send a different set of interfaces to the client for it to connect to. We would have to add some mechanism for categorizing nodes and interfaces in the network configuration and modify messaging code to listen on those specific interfaces.
I guess it’s not too complicated, but it’s also a problem that can be solved at a different level
Ahh that did remind me of another task though thanks!
Junbo Ruan
@aruanruan
Aug 09 2018 09:04
in zookeeper, we can set node address like "ip1:ip2:port"
ip1 for remote client to access, ip2 for internal comunication
Jordan Halterman
@kuujo
Aug 09 2018 09:05
Actually it’s IP:client port:server port IIRC
host:port:port
Junbo Ruan
@aruanruan
Aug 09 2018 09:05
the the network packages go throght inner switcher
my fault
sorry
Jordan Halterman
@kuujo
Aug 09 2018 09:06
The more common problem we have is with containers binding to a private IP which is different than their public IP. This is a problem that needs to be solved and will
Junbo Ruan
@aruanruan
Aug 09 2018 09:07
i make server listen to 0.0.0.0 in server not the special ip in zookeeper
Jordan Halterman
@kuujo
Aug 09 2018 09:07
Currently, the IP to which a node binds is replicated, and if that’s a private container IP and not a host IP then other containers attempt to connect to an unreachable IP
Junbo Ruan
@aruanruan
Aug 09 2018 09:07
but send messages by the sepecial ip
Jordan Halterman
@kuujo
Aug 09 2018 09:08
Yeah we can do that, but the problem is telling other nodes which IP to connect to
Or which I suppose IP is reachable for them
Junbo Ruan
@aruanruan
Aug 09 2018 09:08
in common, the cluster know each other by private ip
i know the question
sorry, it is not easy
my solution of service discovery want to solve this problem for private or public ip
My serivces are deployed in different groups
Jordan Halterman
@kuujo
Aug 09 2018 09:12
It’s still not too hard. I think you just have to have a way to group Atomix nodes in the same way to ensure the correct interfaces are being used and broadcast.
Junbo Ruan
@aruanruan
Aug 09 2018 09:14
my some services are deployed in some special machine like a bridge servering for different groups
public zone & some private zones
Jordan Halterman
@kuujo
Aug 09 2018 09:14
Yeah
If Atomix is a project of the Open Networking Foundation perhaps is should be capable of handling relatively complex network configurations 😉
Junbo Ruan
@aruanruan
Aug 09 2018 09:16
It is why i should write my own consul
and my service are not only REST services
Jordan Halterman
@kuujo
Aug 09 2018 09:16
Will have to solve the simpler container host networking issue first
Junbo Ruan
@aruanruan
Aug 09 2018 09:17
but more different resources
Jordan Halterman
@kuujo
Aug 09 2018 09:17
:+1:
Junbo Ruan
@aruanruan
Aug 09 2018 09:18
we have thouands of electrical instruments
Jordan Halterman
@kuujo
Aug 09 2018 09:20
Okay so I have a pretty good task list. Made good progress in testing in ONOS today, and I’m going to try to get a 3.0.0 release done next week along with the ONOS release candidate. Going to go through that list and either finish all the tasks or at least ensure we can introduce them post 3.0.0 without breaking backwards compatibility.
Junbo Ruan
@aruanruan
Aug 09 2018 09:20
:+1:
Jordan Halterman
@kuujo
Aug 09 2018 09:35
Gotta go take a nap