jdev - 2019-11-22

  1. alexis has joined

  2. debacle has left

  3. Daniel has left

  4. Daniel has joined

  5. UsL has left

  6. alexis has left

  7. alexis has joined

  8. Daniel has left

  9. Daniel has joined

  10. Alexis has joined

  11. Wojtek has left

  12. Alexis has left

  13. Daniel has left

  14. alexis has left

  15. alexis has joined

  16. Daniel has joined

  17. Daniel has left

  18. Daniel has joined

  19. sonny has left

  20. sonny has joined

  21. sonny has left

  22. sonny has joined

  23. rion has left

  24. rion has joined

  25. Daniel has left

  26. asterix has joined

  27. asterix has left

  28. asterix has joined

  29. Daniel has joined

  30. asterix has left

  31. asterix has joined

  32. wurstsalat has joined

  33. asterix has left

  34. asterix has joined

  35. Daniel has left

  36. asterix has left

  37. asterix has joined

  38. sonny has left

  39. sonny has joined

  40. Daniel has joined

  41. pulkomandy has left

  42. pulkomandy has joined

  43. UsL has joined

  44. Daniel has left

  45. Daniel has joined

  46. debacle has joined

  47. asterix has left

  48. asterix has joined

  49. pulkomandy has left

  50. goffi has joined

  51. pulkomandy has joined

  52. larma has left

  53. larma has joined

  54. pulkomandy has left

  55. pulkomandy has joined

  56. pulkomandy has left

  57. pulkomandy has joined

  58. debacle has left

  59. debacle has joined

  60. debacle has left

  61. gav has left

  62. gav has joined

  63. sonny has left

  64. gav has left

  65. gav has joined

  66. sonny has joined

  67. pulkomandy has left

  68. debacle has joined

  69. pulkomandy has joined

  70. asterix has left

  71. asterix has joined

  72. UsL has left

  73. Guus has left

  74. Guus has joined

  75. asterix has left

  76. asterix has joined

  77. lovetox has joined

  78. zuk has joined

  79. asterix has left

  80. asterix has joined

  81. asterix has left

  82. asterix has joined

  83. pulkomandy has left

  84. pulkomandy has joined

  85. Guus has left

  86. Guus has joined

  87. Guus has left

  88. Guus has joined

  89. Guus has left

  90. Guus has joined

  91. allie has left

  92. allie has joined

  93. sonny has left

  94. sonny has joined

  95. Zash has left

  96. Zash has joined

  97. wangzhen has joined

  98. asterix has left

  99. asterix has joined

  100. wangzhen has left

  101. asterix has left

  102. asterix has joined

  103. paul has joined

  104. pulkomandy has left

  105. alexis has left

  106. pulkomandy has joined

  107. Zash has left

  108. debacle has left

  109. pulkomandy has left

  110. Zash has joined

  111. pulkomandy has joined

  112. Daniel has left

  113. zuk has left

  114. pulkomandy has left

  115. pulkomandy has joined

  116. Daniel has joined

  117. Meta Bergman has left

  118. Meta Bergman has joined

  119. sonny has left

  120. sonny has joined

  121. goffi has left

  122. pulkomandy has left

  123. pulkomandy has joined

  124. pulkomandy has left

  125. pulkomandy has joined

  126. asterix has left

  127. asterix has joined

  128. pulkomandy has left

  129. pulkomandy has joined

  130. pulkomandy has left

  131. pulkomandy has joined

  132. asterix has left

  133. asterix has joined

  134. asterix has left

  135. asterix has joined

  136. sonny has left

  137. sonny has joined

  138. debacle has joined

  139. asterix has left

  140. asterix has joined

  141. lovetox_ has joined

  142. lovetox_ has left

  143. pulkomandy has left

  144. pulkomandy has joined

  145. asterix has left

  146. asterix has joined

  147. debacle has left

  148. lovetox_ has joined

  149. lovetox_ has left

  150. asterix has left

  151. asterix has joined

  152. lovetox_ has joined

  153. lovetox_ has left

  154. asterix has left

  155. asterix has joined

  156. asterix has left

  157. asterix has joined

  158. lovetox_ has joined

  159. lovetox_ has left

  160. lovetox_ has joined

  161. lovetox_ has left

  162. debacle has joined

  163. alexis has joined

  164. pulkomandy has left

  165. pulkomandy has joined

  166. pulkomandy has left

  167. pulkomandy has joined

  168. SERGE90 has left

  169. SERGE90 has joined

  170. asterix has left

  171. lovetox has left

  172. pulkomandy has left

  173. pulkomandy has joined

  174. UsL has joined

  175. dandan has joined

  176. dandan

    I have a question about DNS SRV setup for xmpp server for a cluster of XMPP servers. Anyone able to help?

  177. Link Mauve

    dandan, ask your question, if someone can answer they’ll do so.

  178. Link Mauve

    They can’t if you don’t ask.

  179. dandan

    Sure, Thanks.

  180. dandan

    The question is that I have a cluster of 2 nodes (very simple) deployed on AWS.

  181. dandan

    I have setup DNS SRV records correctly (hopefully) for all servers.

  182. dandan

    Now the question is that in case I do not use a load balancer for my servers, to what address should my clients connect to?

  183. Alex has left

  184. dandan

    For instance if my configuration is as below: 0 5 5223 server1.mydomain.com 0 5 5223 server2.mydomain.com for _xmpps-client._tcp.mydomain.com then to what address should my clients connect?

  185. dandan

    should they connect to server1.mydomain.com or server2.mydomain.com?

  186. Zash


  187. Zash

    they should pick one of them with about 50/50 chance

  188. dandan

    Yes but that would be up to the client then and different from what load balancer is.

  189. Zash


  190. dandan

    As far as I have understood, these records are supposed to do the work of load balancer.

  191. Zash

    but what you pasted amounts to 50/50 load balancing

  192. Link Mauve

    dandan, without any software required in front of your server.

  193. dandan

    What do you mean Link Mauve?

  194. dandan

    Ah sure. Yes. I mean no load balancing will be needed in that case. But how the client should decide what server to choose? The client has no idea about the load.

  195. Zash

    dandan: if you want more control then use a load balancer

  196. Link Mauve

    dandan, it will pick one at random, throw a coin, and go for that one.

  197. moparisthebest

    The client literally flips a coin

  198. Link Mauve

    flip*, that’s the word.

  199. Link Mauve

    Thanks. ^^

  200. dandan

    Ok then. I see.

  201. Zash

    but if it for whatever reason can't establish a connection to the chosen one it should try the other

  202. dandan

    I see. Well is it really realiable? I mean a NLB seems to be a better solution, or?

  203. Zash

    No idea what "NLB" is

  204. dandan

    Network Load Balancer

  205. Zash

    It's up to you

  206. Zash

    more moving parts etc

  207. dandan

    If this is totally random by the client side, so why the wight is decided on the server side in DNS record?

  208. moparisthebest

    dandan: refer to the algorithm here https://tools.ietf.org/html/rfc2782

  209. dandan

    I mean 50%, 30%, etc.

  210. Zash

    dandan: that's what the second number is

  211. Link Mauve

    dandan, because the administrator might have provisioned different size of servers.

  212. Link Mauve

    So they prefer clients to flip a four-faced coin and go 25% of the time to one physical server, 75% of the time to another one.

  213. Link Mauve

    Or any other possible combinaison.

  214. Zash

    dandan: in your example you have 5 and 5 as weight. so each entry should have a 5/10 = 50% chance of being selected first

  215. dandan

    Yes I know. This is an example.

  216. dandan

    OK. Then so if I have 4 servers of shared load of 50%, 30% and 20% then I should flip a dice of 3 sides with respective probabilities?

  217. Zash

    if you set up SRV records like that, yes

  218. dandan

    OK thanks. One more question if you don't mind.

  219. dandan

    Is it OK not to set DNS SRV records and just go for load balancer?

  220. Zash

    of course

  221. Zash

    altho for xmpps you do need them

  222. dandan

    I am asking because for instance Openfire will complain when DNS SRV records are not set.

  223. Link Mauve

    For normal _xmpp-client record (non-xmpps), you need either a SRV record or a A record, if the user will only ever connect to a single server (or load-balancer).

  224. Guus

    Openfire will warn, but will operate fine.

  225. Link Mauve

    You can set both but the end result will be identical.

  226. dandan

    Yes I have observed that it work as it should but I was wondering if this is recommended to set DNS SRV records or not.

  227. dandan

    Yes sure. The result will be identical as you said.

  228. Link Mauve

    You only need a SRV record if you plan to use xmpps (XEP-0368), or if you want to use the inherent “load” balancing SRV provides with multiple records.

  229. Guus

    or if you want to run a cluster

  230. dandan

    I run a cluster.

  231. Guus

    or if you run on a server for which the host name doesn't match the XMPP domain name

  232. Zash

    or if you wanna use a non-standard port or point at a different machine/A record

  233. dandan

    and want it to be scalable.

  234. Zash

    (what Guus said)

  235. Guus

    generally, DNS SRV records are good.

  236. Guus

    Openfire should give you concrete examples of DNS SRV records suitable for your instance.

  237. Zash

    dandan: If I were you I'd worry about using a separate load balancer later if it turns out you need one

  238. Guus

    but a general grasp of the concept is good to have, so that you can make informed decisions.

  239. dandan

    Yes I know. But I mean if I use a load balancer then I don't need to set DNS SRV records that are recommended by Openfire.

  240. Zash

    It's easy to change DNS

  241. moparisthebest

    dandan: what's the point of a cluster if you put a single point of failure load balancer in front?

  242. Guus

    (capacity, probably)

  243. dandan

    Well, I might be wrong, but by having a cluster I will be able to have fail-over config and scale the system.

  244. Guus

    dandan, it won't fail over a failing loadbalancer.

  245. moparisthebest

    He said AWS, isn't it cheaper to run 1 big server vs 2 small?

  246. dandan

    The load balancer in AWS AFAIK is not a single point failure system since the load balancer itself will be scaled. I might be wrong though.

  247. Guus

    Oh, I dropped in half way through the conversation - I missed that.

  248. Link Mauve

    Fail-over is also definitely possible with SRV records, if the coin flipped by the client leads it to a dead end^Wserver, it will fallback to the other one(s).

  249. Guus

    but yeah, DNS SRV records are less complex by an order of magnitude

  250. Guus

    that's generally good.

  251. paul has left

  252. Guus

    a lot cheaper too, presumably

  253. Zash

    you can have 1 5 5222 first-choice.example.com 2 5 5222 second-choice.example.com etc

  254. moparisthebest

    dandan: are you running them both in the same AWS datacenter too?

  255. dandan

    Yes Zash?

  256. dandan

    Then choose randomly between them?

  257. dandan

    Yes mopasisthebest.

  258. moparisthebest

    dandan: so single point of failure again

  259. Zash

    dandan: no, they get tried in order of the priority (first number)

  260. moparisthebest

    Whole AWS datacenters fail often

  261. Guus

    dandan i suggest you read up on DNS SRV. They're pretty versatile, and easy to work with. You can always invest in load balancers if you feel that DNS SRV doesn't suit your needs.

  262. dandan

    Thanks Guus.

  263. Guus

    wikipedia comes with a handy example

  264. Guus

    Ok, I'm off to bed

  265. dandan

    Zash the question is that how the client will know that for instance the first server is loaded and chose the second one?

  266. Zash

    dandan: it doesn't

  267. Zash

    dandan: it sorts the records by priority and if there are multiple with the same priority it'll shuffle them and pick by weight. if the connection fails it removes that one and tries the whole thing again (roughly)

  268. Zash

    the RFC moparisthebest linked explains how it works, I recommend you read it

  269. Zash

    and as I said, if you need more control then use a load balancer

  270. moparisthebest

    But you probably don't, and regardless don't run all your services in the same DC if you are after reliability

  271. dandan

    Yes you are right.

  272. dandan

    I will read the link that moparisthebest sent.

  273. Zash

    load balancing and high availability at the same time is non-trivial. most xmpp clustering solutions are focused on load balancing afaik

  274. dandan

    Definitely need to read more about it.

  275. dandan

    Zash you mean that the clients have knowledge about all servers that a DNS SRV record has been assigned to it?

  276. Zash

    I don't understand the question

  277. dandan

    Like your example, a client will also have the list of all serves you listed?

  278. Zash

    client would query for the SRV records, receive a list

  279. dandan

    first-choice, second-choice ?

  280. Zash


  281. Zash

    If you query for _xmpp-client._tcp.example.com you get an aswer with all the SRV records there

  282. dandan

    Aha ok. That is what I wanted to know. Is there any special command for querying in XMPP client libraries like Smack for instance or this should be done in other ways?

  283. Zash

    then it follows the sorting algorithm and tries to connect until it gets a connection or runs out of options

  284. Zash

    I know nothing of Smack, can't help you with that.

  285. dandan

    OK. Thanks a lot all of you for your kind help.

  286. Daniel has left

  287. guus.der.kinderen

    Smack does SRV lookup by default

  288. Daniel has joined

  289. guus.der.kinderen

    It'll actually warn you if you're connecting to a domain that has no SRV records