System Administration & Network Administration
port port-forwarding memcached forwarding memcache
Updated Mon, 11 Jul 2022 00:33:14 GMT

Forward localhost memcached server on port 12111 to domain.com memcached server


My customers are running many scripts that uses memcached, but all of them are using localhost as a address. My localhost server is now out of RAM, because it's doing many other things like WWW and MySQL servers.

Now I got a brand new server with 16 GB RAM which I can use as a dedicated memcached server. How to redirect localhost:12111 to domain.com:12111 server ?

I can't switch localhost to something else in /etc/hosts because all my databases use such address.




Solution

Make an effort, 1 minute of Googling would give you the answer.

In no particular order, you could use:

  1. Xinetd
  2. Rinetd
  3. IPTables
  4. SSH tunnel
  5. Netcat
  6. Layer 4-7 balancing (eg haproxy)

Or do a simple grep for localhost and replace it with a hostname that you can change.

iptables

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp --dport 11211 -j DNAT --to 192.168.1.2:11211
iptables -P FORWARD ACCEPT

rinetd

echo " 127.0.0.1 11211 192.168.1.2 11211" >> /etc/rinetd.conf
/etc/init.d/rinetd restart

netcat

nc -l -p 11211 -c "nc 192.168.1.2 11211"

ssh

ssh user@192.168.1.2 -L 11211:192.168.1.2:11211

xinetd

cat > /etc/xinet.d/memfw << eof
  service memfw {
    disable = no 
    type = UNLISTED 
    socket_type = stream 
    protocol = tcp 
    user = nobody 
    wait = no 
    redirect = 192.168.1.2 11211
    port = 11211
  }
eof




Comments (1)

  • +0 – I think first and the last are far the best. — Jun 24, 2012 at 23:01