[ 
https://issues.apache.org/jira/browse/MESOS-2856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16814147#comment-16814147
 ] 

shashank commented on MESOS-2856:
---------------------------------

Any Update after this ?? i am facing the same issue

> fully functional webui requires all masters+slaves to be routable by browser
> ----------------------------------------------------------------------------
>
>                 Key: MESOS-2856
>                 URL: https://issues.apache.org/jira/browse/MESOS-2856
>             Project: Mesos
>          Issue Type: Bug
>            Reporter: Oliver Nicholas
>            Assignee: Oliver Nicholas
>            Priority: Major
>
> The core issue is that the Mesos web UI doesn't play well behind a proxy.  
> This is closely related to MESOS-1822, but I propose a different mechanism to 
> resolve it.
> The mesos webui expects that it can both: 
>  # redirect your browser to the {{--hostname}} registered for another master 
> if the master you're currently hitting isn't the leader (this is MESOS-1822)
>  # redirect you directly to the {{--hostname}} of any slave (eg/ to look at 
> sandbox logs)
> But I don't want that to be possible really - fundamentally, mesos-master's 
> webui is not appropriate for direct exposure to the Internet; in many 
> enterprise cases it's not appropriate for wide exposure on a VPN either.  It 
> has no access controls. And those machines shouldn't really have public IPs 
> or DNS entries anyway.
> The way I want to resolve this for my enterprise is to have a _single_ 
> hostname (as in URL component, not literally unix host), with public DNS that 
> can handle the entire webui experience (aside: the vhost this hits has a 
> authentication middleware to handle the access control part).  In my case, 
> the vhost is load balanced randomly across the mesos master quorum machines, 
> and some slightly complex nginx rules allow it to effectively proxy any 
> request to the actual leader master regardless of where the request goes.  
> This works nicely.
> However, the mesos webui also attempts to route directly to slave machines  
> with JSONP requests (eg/ as i mentioned above, to load the sandbox stdout for 
> a task).  My slave machines don't even have public IPs.
> Given this existing code for generating the parameters for URLs to slaves:
> {code:javascript}
>         var pid = $scope.slaves[$routeParams.slave_id].pid;
>         var hostname = $scope.slaves[$routeParams.slave_id].hostname;
>         var id = pid.substring(0, pid.indexOf('@'));
>         var host = hostname + ":" + pid.substring(pid.lastIndexOf(':') + 1);
> {code}
> I'd like to implement a {{--enable-webui-proxy-urls}} option on the master 
> that would change behavior in the webui from generating a slave URL as:
> {code:javascript}
> var url = '//' + host + '/files/browse.json?jsonp=JSON_CALLBACK';
> {code}
> to instead generate the URL as:
> {code:javascript}
> var url = '/proxy?host=' + encodeURIComponent(host) + '&orig=' 
> encodeURIComponent('/files/browse.json?jsonp=JSON_CALLBACK');
> {code}
> and then nginx can take care of rewriting/reissuing the request and proxying 
> the results back to the browser.
> All of this could be obviated and probably made more elegant by implementing 
> MESOS-2130/MESOS-2131 but..this seems like a simple change to make.  Any 
> thoughts?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to