<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Lets start with requirements and a design that everybody who has a stake in this can be agreed on - I’ll get a doc started.<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 18 Dec 2014, at 09:18, James Strachan <<a href="mailto:jstracha@redhat.com" class="">jstracha@redhat.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">If the EAP console is available as a Kubernetes Service we can easily add it to the hawtio nav bar like we do with Kibana, Grafana et al.<div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 17 Dec 2014, at 16:17, Thomas Diesler <<a href="mailto:tdiesler@redhat.com" class="">tdiesler@redhat.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Thanks James,<div class=""><br class=""></div><div class="">I’ll look at the fabric8 hawtio console next I see if I can get it to work alongside with the wildfly console. Then I think I should meet with Heiko/Harald (for a long walk) and we talk about this some more.</div><div class=""><br class=""></div><div class="">—thomas</div><div class=""><br class=""></div><div class=""><span id="cid:F4C6F1B0-DD4B-48B4-9BFC-2590CD7E5938@fritz.box" class=""><PastedGraphic-1.tiff></span></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 17 Dec 2014, at 15:59, James Strachan <<a href="mailto:jstracha@redhat.com" class="">jstracha@redhat.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">A persistent volume could be used for the pod running the DC; if the pod is restarted or if it fails over to another host the persistent volume will be preserved (using one of the shared volume mechanisms in kubernetes/openshift like Ceph/Gluster/Cinder/S3/EBS etc)<br class=""><br class=""><blockquote type="cite" class="">On 17 Dec 2014, at 14:42, Brian Stansberry <<a href="mailto:brian.stansberry@redhat.com" class="">brian.stansberry@redhat.com</a>> wrote:<br class=""><br class="">On 12/17/14, 3:28 AM, Thomas Diesler wrote:<br class=""><blockquote type="cite" class="">Folks,<br class=""><br class="">following up on this topic, I worked a little more on WildFly-Camel in<br class="">Kubernetes/OpenShift.<br class=""><br class="">These doc pages are targeted for the upcoming 2.1.0 release (01-Feb-2015)<br class=""><br class=""> * WildFly-Camel on Docker<br class=""> <<a href="https://github.com/wildfly-extras/wildfly-camel-book/blob/2.1/cloud/docker.md" class="">https://github.com/wildfly-extras/wildfly-camel-book/blob/2.1/cloud/docker.md</a>><br class=""> * WildFly-Camel on OpenShift<br class=""> <<a href="https://github.com/wildfly-extras/wildfly-camel-book/blob/2.1/cloud/openshift.md" class="">https://github.com/wildfly-extras/wildfly-camel-book/blob/2.1/cloud/openshift.md</a>><br class=""><br class=""></blockquote><br class="">Great. :)<br class=""><br class=""><blockquote type="cite" class=""><br class="">The setup looks like this<br class=""><br class=""><br class="">We can now manage these individual wildfly nodes. The domain controller<br class="">(DC) is replicated once, the host definition is replicated three times.<br class="">Theoretically, this means that there is no single point of failure with<br class="">the domain controller any more - kube would respawn the DC on failure<br class=""><br class=""></blockquote><br class="">I'm heading on PTO tomorrow so likely won't be able to follow up on this question for a while, but one concern I had with the Kubernetes respawn approach was retaining any changes that had been made to the domain configuration. Unless the domain.xml comes from / is written to some shared storage available to the respawned DC, any changes made will be lost.<br class=""><br class="">Of course, if the DC is only being used for reads, this isn't an issue.<br class=""><br class=""><blockquote type="cite" class="">Here some ideas for improvement …<br class=""><br class="">In a kube env we should be able to swap out containers based on some<br class="">criteria. It should be possible to define these criteria, emit events<br class="">based on them create/remove/replace containers automatically.<br class="">Additionally a human should be able to make qualified decisions through<br class="">a console and create/remove/replace containers easily.<br class="">Much of the needed information is in jmx. Heiko told me that there is a<br class="">project that can push events to influx db - something to look at.<br class=""><br class="">If information display contained in jmx in a console has value (e.g in<br class="">hawtio) that information must be aggregated and visible for each node.<br class="">Currently, we have a round robin service on 8080 which would show a<br class="">different hawtio instance on every request - this is nonsense.<br class=""><br class="">I can see a number of high level items:<br class=""><br class="">#1 a thing that aggregates jmx content - possibly multiple MBeanServers<br class="">in the DC VM that delegate to respective MBeanServers on other hosts, so<br class="">that a management client can pickup the info from one service<br class="">#2 look at the existing inluxdb thing and research into how to automate<br class="">the replacement of containers<br class="">#3 from the usability perspective, there may need to be an openshift<br class="">profile in the console(s) because some operations may not make sense in<br class="">that env<br class=""><br class="">cheers<br class="">—thomas<br class=""><br class="">PS: looking forward to an exiting ride in 2015<br class=""><br class=""><br class=""><blockquote type="cite" class="">On 5 Dec 2014, at 14:36, Thomas Diesler <<a href="mailto:tdiesler@redhat.com" class="">tdiesler@redhat.com</a><br class=""><<a href="mailto:tdiesler@redhat.com" class="">mailto:tdiesler@redhat.com</a>>> wrote:<br class=""><br class="">Folks,<br class=""><br class="">I’ve recently been looking at WildFly container deployments on<br class="">OpenShift V3. The following setup is documented here<br class=""><<a href="https://github.com/wildfly-extras/wildfly-camel-book/blob/2.1/cloud/fabric8.md" class="">https://github.com/wildfly-extras/wildfly-camel-book/blob/2.1/cloud/fabric8.md</a>><br class=""><br class=""> <example-rest-design.png><br class=""><br class=""> The example architecture consists of a set of three high available<br class=""> (HA) servers running REST endpoints.<br class=""> For server replication and failover we use Kubernetes. Each server<br class=""> runs in a dedicated Pod that we access via Services.<br class=""><br class="">This approach comes with a number of benefits, which are sufficiently<br class="">explained in various OpenShift<br class=""><<a href="https://blog.openshift.com/openshift-v3-platform-combines-docker-kubernetes-atomic-and-more/" class="">https://blog.openshift.com/openshift-v3-platform-combines-docker-kubernetes-atomic-and-more/</a>>,<br class="">Kubernetes<br class=""><<a href="https://github.com/GoogleCloudPlatform/kubernetes/blob/master/README.md" class="">https://github.com/GoogleCloudPlatform/kubernetes/blob/master/README.md</a>> and<br class="">Docker <<a href="https://docs.docker.com/" class="">https://docs.docker.com/</a>> materials, but also with a number of<br class="">challenges. Lets look at those in more detail …<br class=""><br class="">In the example above Kubernetes replicates a number of standalone<br class="">containers and isolates them in a Pod each with limited access from<br class="">the outside world.<br class=""><br class="">* The management interfaces are not accessible<br class="">* The management consoles are not visible<br class=""><br class="">With WildFly-Camel we have a Hawt.io<br class=""><<a href="http://wildflyext.gitbooks.io/wildfly-camel/content/features/hawtio.html" class="">http://wildflyext.gitbooks.io/wildfly-camel/content/features/hawtio.html</a>> console<br class="">that allows us to manage Camel Routes configured or deployed to the<br class="">WildFly runtime.<br class="">The WildFly console manages aspects of the appserver.<br class=""><br class="">In a more general sense, I was wondering how the WildFly domain model<br class="">maps to the Kubernetes runtime environment and how these server<br class="">instances are managed and information about them relayed back to the<br class="">sysadmin<br class=""><br class="">a) Should these individual wildfly instances somehow be connected to<br class="">each other (i.e. notion of domain)?<br class="">b) How would an HA singleton service work?<br class="">c) What level of management should be exposed to the outside?<br class="">d) Should it be possible to modify runtime behaviour of these servers<br class="">(i.e. write access to config)?<br class="">e) Should deployment be supported at all?<br class="">f) How can a server be detected that has gone bad?<br class="">g) Should logs be aggregated?<br class="">h) Should there be a common management view (i.e. console) for these<br class="">servers?<br class="">i) etc …<br class=""><br class="">Are these concerns already being addressed for WildFly?<br class=""><br class="">Is there perhaps even an already existing design that I could look at?<br class=""><br class="">Can such an effort be connected to the work that is going on in Fabric8?<br class=""><br class="">cheers<br class="">—thomas<br class=""><br class="">PS: it would be area that we @ wildfly-camel were interested to work on<br class="">_______________________________________________<br class="">wildfly-dev mailing list<br class=""><a href="mailto:wildfly-dev@lists.jboss.org" class="">wildfly-dev@lists.jboss.org</a> <<a href="mailto:wildfly-dev@lists.jboss.org" class="">mailto:wildfly-dev@lists.jboss.org</a>><br class=""><a href="https://lists.jboss.org/mailman/listinfo/wildfly-dev" class="">https://lists.jboss.org/mailman/listinfo/wildfly-dev</a><br class=""></blockquote><br class=""></blockquote><br class=""><br class="">-- <br class="">Brian Stansberry<br class="">Senior Principal Software Engineer<br class="">JBoss by Red Hat<br class=""></blockquote><br class=""><br class="">James<br class="">-------<br class="">Red Hat<br class=""><br class="">Twitter: @jstrachan<br class="">Email: <a href="mailto:jstracha@redhat.com" class="">jstracha@redhat.com</a><br class="">Blog: <a href="http://macstrac.blogspot.com/" class="">http://macstrac.blogspot.com/</a><br class=""><br class="">hawtio: <a href="http://hawt.io/" class="">http://hawt.io/</a><br class="">fabric8: <a href="http://fabric8.io/" class="">http://fabric8.io/</a><br class=""><br class="">Open Source Integration<br class=""><br class=""></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""><div class="">
<span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="margin: 0px; font-size: 12px;" class=""><font face="Helvetica" size="2" style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class=""><br class="Apple-interchange-newline">James</font></div><div style="margin: 0px; font-size: 12px;" class=""><font face="Helvetica" size="2" style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class="">-------</font></div><div style="margin: 0px;" class=""><div style="margin: 0px;" class=""><span class="Apple-style-span" style="font-size: 10px;">Red Hat</span></div><div style="margin: 0px;" class=""><span class="Apple-style-span" style="font-size: 10px;"><br class=""></span></div><div style="margin: 0px;" class=""><span style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">Twitter: @jstrachan</span><br style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class=""><span style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">Email: </span><a href="mailto:jstracha@redhat.com" target="_blank" style="color: rgb(17, 85, 204); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">jstracha@redhat.com</a><br style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class=""><span style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">Blog: </span><a href="http://macstrac.blogspot.com/" target="_blank" style="color: rgb(17, 85, 204); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">http://macstrac.blogspot.com/</a><br style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class=""><br style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class=""><span style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">hawtio: </span><a href="http://fusesource.com/" target="_blank" style="color: rgb(17, 85, 204); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">http:/</a><span style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">/</span><a href="http://hawt.io/" target="_blank" style="color: rgb(17, 85, 204); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">hawt.io/</a><div style="color: rgb(34, 34, 34); font-family: arial; font-size: small; orphans: auto; widows: auto; background-color: rgb(255, 255, 255);" class="">fabric8: <a href="http://fusesource.com/" target="_blank" style="color: rgb(17, 85, 204);" class="">http:/</a>/<a href="http://fabric8.io/" target="_blank" style="color: rgb(17, 85, 204);" class="">fabric8.io/</a><div class=""><br class="">Open Source Integration</div></div></div></div></span>
</div>
<br class=""></div></div></div></blockquote></div><br class=""></div></body></html>