LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

[lvs-users] Antw: Re: Sorry, it's pretty unusable!

To: <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>, "Tom van Leeuwen" <tom.van.leeuwen@xxxxxxxxxxxxx>
Subject: [lvs-users] Antw: Re: Sorry, it's pretty unusable!
From: "Ulrich Windl" <Ulrich.Windl@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 21 Oct 2013 13:52:51 +0200
>>> Tom van Leeuwen <tom.van.leeuwen@xxxxxxxxxxxxx> schrieb am 17.10.2013 um 
>>> 15:22
in Nachricht <525FE48C.4080506@xxxxxxxxxxxxx>:
> So he may not be receiving your reply.
> 
> Ulrich if you want source nat on your LVS box, you'll have to do:

Hi Tom,

I really appreciate your help, but...

> 
> 1) Create a loadbalancer:
> ipvsadm -A -t 192.168.200.100:443
> # add real servers
> 
> 2) Create the source nat rule for this loadbalancer:
> iptables -t nat -A POSTROUTING -m ipvs --vaddr 192.168.200.100/32 
> --vport 443 -j MASQUERADE

Unfortunately this does not work:
iptables v1.4.6: Couldn't load match `ipvs':/usr/lib64/xtables/libipt_ipvs.so: 
cannot open shared object file: No such file or directory
 # ls /usr/lib64/xtables
libip6t_HL.so          libipt_icmp.so        libxt_hashlimit.so
libip6t_LOG.so         libipt_realm.so       libxt_helper.so
libip6t_REJECT.so      libipt_set.so         libxt_iprange.so
libip6t_ah.so          libipt_ttl.so         libxt_length.so
libip6t_dst.so         libipt_unclean.so     libxt_limit.so
libip6t_eui64.so       libxt_AUDIT.so        libxt_mac.so
libip6t_frag.so        libxt_CLASSIFY.so     libxt_mark.so
libip6t_hbh.so         libxt_CONNMARK.so     libxt_multiport.so
libip6t_hl.so          libxt_CONNSECMARK.so  libxt_osf.so
libip6t_icmp6.so       libxt_DSCP.so         libxt_owner.so
libip6t_ipv6header.so  libxt_MARK.so         libxt_physdev.so
libip6t_mh.so          libxt_NFLOG.so        libxt_pkttype.so
libip6t_rt.so          libxt_NFQUEUE.so      libxt_policy.so
libipt_CLUSTERIP.so    libxt_NOTRACK.so      libxt_quota.so
libipt_DNAT.so         libxt_RATEEST.so      libxt_rateest.so
libipt_ECN.so          libxt_SECMARK.so      libxt_recent.so
libipt_LOG.so          libxt_TCPMSS.so       libxt_sctp.so
libipt_MASQUERADE.so   libxt_TCPOPTSTRIP.so  libxt_socket.so
libipt_MIRROR.so       libxt_TOS.so          libxt_standard.so
libipt_NETMAP.so       libxt_TPROXY.so       libxt_state.so
libipt_REDIRECT.so     libxt_TRACE.so        libxt_statistic.so
libipt_REJECT.so       libxt_cluster.so      libxt_string.so
libipt_SAME.so         libxt_comment.so      libxt_tcp.so
libipt_SET.so          libxt_connbytes.so    libxt_tcpmss.so
libipt_SNAT.so         libxt_connlimit.so    libxt_time.so
libipt_TTL.so          libxt_connmark.so     libxt_tos.so
libipt_ULOG.so         libxt_conntrack.so    libxt_u32.so
libipt_addrtype.so     libxt_dccp.so         libxt_udp.so
libipt_ah.so           libxt_dscp.so
libipt_ecn.so          libxt_esp.so

> 
> 3) Set sysctl setting to allow conntrack on vs
> sysctl net.ipv4.vs.conntrack=1
> 
> So it seems what you want is possible and not difficult at all...

With SLES11 SP2 it seems a bit more difficult ;-)

Regards,
Ulrich

> 
> Regards,
> Tom
> 
> On 10/17/2013 02:51 PM, Graeme Fowler wrote:
>> Hi
>>
>> On 17 Oct 2013, at 07:48, "Ulrich Windl" <Ulrich.Windl@xxxxxxxxxxxxxxxxxxxx> 
> wrote:
>>> I'm not subscribed to the list, so I hope someone will receive it anyway:
>> Yes we did, but if people reply to the list then you won't see it unless 
> you're watching an archiver somewhere...
>>
>>> I could pretty well use LVS for a load-balance, high-availability scenario 
> like distributing SMTP requests to different servers, but the setup seems so 
> complicated that I won't do. Reading the documentation, I felt that the NAT 
> (masq) mechanism would be the most elegant for my requirements. However as it 
> tuned out it did not work (as for many others). The reason is simple: LVS 
> rewrites the destination TSAP (IP address and port), but it leaves the source 
> TSAP unchanged. So any replies from a real server go to the original sender, 
> instead of the LVS host
>> That's right. In NAT mode, the realservers don't talk directly to anything 
> but the director.
>>
>>> The proposed solution is to set the LVS host as default gateway on any real 
> server. This has several problems:
>>> 1) You create a SPoF on the LVS host
>>> 2) You create a network bottleneck on the LVS host (_all_ traffic from a 
> real goes to the LVS host which must be a router)
>>> 3) If LVS host and real server are not in the same subnet, you cannot route 
> from the real server to the LVS directly
>>> 4) You cannot have two different LVS hosts that use different services on 
> the same real host
>> That's NAT mode for you.
>>
>>> I reall wonder why you don't rewrite the source TSAP (in addition to the 
> destination TSAP) as well so that the sender of the packet seems to be the 
> LVS host. On a second rewrite the LVS destination TSAP would be rewritten to 
> the original requester. I feel this would work like a charm:
>>> 1) The real server will reply to the LVS host automatically
>>> 2) Only LVS traffic needs to go through LVS host
>>> 3) LVS host does not need to be a router (after rewriting the destination, 
>>> I 
> think)
>>> 4) LVS host and real server can be in different subnets
>>> 5) You can use one real server from different LVS hosts
>>>
>>> Did I overlook something that makes this impossible or impractical?
>> Yes. You've sort of described both DR and TUN modes here, except for the 
> source IP being rewritten. LVS/IPVS is *not a proxy*, it's a fancy router. If 
> you want to do this with source rewriting, use a system such as haproxy.
>>
>> NAT mode is most useful where the realservers don't require any special 
> configuration apart from their default gateway.
>>
>> DR and TUN modes require extra configuration on the realservers, but do away 
> with the SPOF and bottleneck in the director.
>>
>> Graeme
>> _______________________________________________
>> Please read the documentation before posting - it's available at:
>> http://www.linuxvirtualserver.org/ 
>>
>> LinuxVirtualServer.org mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx 
>> Send requests to lvs-users-request@xxxxxxxxxxxxxxxxxxxxxx 
>> or go to http://lists.graemef.net/mailman/listinfo/lvs-users 



_______________________________________________
Please read the documentation before posting - it's available at:
http://www.linuxvirtualserver.org/

LinuxVirtualServer.org mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Send requests to lvs-users-request@xxxxxxxxxxxxxxxxxxxxxx
or go to http://lists.graemef.net/mailman/listinfo/lvs-users

<Prev in Thread] Current Thread [Next in Thread>