Переслать локальный сервер memcached на порт 12111 на сервер domain.com memcached

Мои клиенты запускают много скриптов, использующих memcached, но все они используют localhost в качестве адреса. Моему локальному серверу сейчас не хватает оперативной памяти, потому что он делает много других вещей, таких как WWW и MySQL серверы.

Теперь у меня есть новый сервер с 16 ГБ оперативной памяти, который я могу использовать в качестве выделенного сервера memcached. Как перенаправить localhost:12111 на сервер domain.com:12111?

Я не могу переключить localhost на что-то другое в /etc/hosts, потому что все мои базы данных используют такой адрес.

1 ответ

Решение

Приложите усилие, 1 минута поиска в Google даст вам ответ.

Ни в каком конкретном порядке вы не могли бы использовать:

  1. Xinetd
  2. Rinetd
  3. IPTables
  4. SSH туннель
  5. Netcat
  6. Уровень 4-7 балансировки (например, haproxy)

Или выполните простой grep для localhost и замените его именем хоста, которое вы можете изменить.

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
Другие вопросы по тегам