On Wed, Jan 25, 2017 at 5:40 PM, Julien Boeuf <jbo...@google.com> wrote:

> I think "when it sees the proxy address" also has fundamental issues, like
>> requiring the proxy to have a hard-coded stable IP. That means you couldn't
>> add a new proxy to the rotation if experiencing too much load.
>>
>> More likely, in your scheme, I'd expect the "proxy address" to become
>> 100% fake. "Oh! It's 1.1.1.1! That's our secret code for proxy address."
>>
> The main issue here I think, as you pointed out, is that naming and the
> mapper need to agree on something (e.g. the proxy address or a sentinel
> address as in your example) and this is not great. On the other hand, it
> allows us to support cases where the name of the LB (or direct backend
> connection in non-LB case) cannot be really resolved on the client but can
> be resolved on the proxy. This is a really nice feature of HTTP CONNECT so
> I'm willing to live with it.
>

As another alternative, why not fix all of case 1 and support programmatic
configuration, in addition to http_proxy?

What would be wrong with specifying configuration that lb.example.com
should use proxy 1.2.3.4 (like in case 1, but only for the host
lb.example.com)?

A more concrete flow:

   1. client wants to connect to service.example.com
   2. check whether service.example.com should use a proxy. It shouldn't
   3. do DNS SRV resolution for _grpclb._tcp.service.example.com to
   determine if it should use a LB. It should, and says to connect to
   lb.example.com
   4. check whether lb.example.com should use a proxy. It should
   5. use CONNECT to lb.example.com (as a hostname)

I recognize step 3 is speculative, but it seems any discussion as to how
GRPCLB+DNS works in speculative.

If I want Case 2, but don't want to expose internal IP addresses to
>>>> unauthenticated clients, I'd just make GRPCLB public and connect to it
>>>> directly, without CONNECT. DNS returns public IPs, and the GRPCLB
>>>> communication can be authenticated.
>>>>
>>> I don't think that this would pass some security/deployment requirements
> (certainly not ours) as it would force the load balancer to run within the
> client's security zone boundary.
>

How so? I'd use a L4 (if using client certs) or L7 (if using bearer tokens)
reverse proxy instead of a forward proxy. The reverse proxy would be in the
same network location as the forward proxy.

Now, you could complain that now there are two proxies instead of one. I
would agree that is a shortcoming. There could be other issues, like maybe
it is harder to configure clients. But I don't see any security/trust zone
differences between the approaches.

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To post to this group, send email to grpc-io@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CA%2B4M1oMCEysy0brO3ywBwNdXTamvWgz2F3qYFD7xEy1ary8FpQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to