OpenVZ Forum


Home » International » Russian » Один внешний ip и множество контейнеров
Один внешний ip и множество контейнеров [message #38189] Thu, 26 November 2009 23:09 Go to next message
f1ps is currently offline  f1ps
Messages: 8
Registered: February 2008
Junior Member
Здравсвуйте!

Сейчас у сервера, на котором крутятся четыре контейнера, соответсвтенно, четыре внешних ip адреса. Внутри каждого контейнера стандартный набор программ веб-серверы, базы данных, почтовые сервера итд. Все это хозяйство довольно хорошо функционирует, но меня напрягает переплачивать за каждый ip. Получается, приходится раскошеливаться при запуске каждой новой виртуальной машины.

Есть ли какие-то способы оставив один IP и дальше продолжать пробрасывать сервисы на одинаковых портах в разные машины? Должны быть прочитал на днях заметку на хабре, в которой говорилось о стаде в 100-500 контейнеров.
Re: Один внешний ip и множество контейнеров [message #38191 is a reply to message #38189] Fri, 27 November 2009 01:03 Go to previous messageGo to next message
kir is currently offline  kir
Messages: 1645
Registered: August 2005
Location: Moscow, Russia
Senior Member

http://wiki.openvz.org/NAT

Kir Kolyshkin
http://static.openvz.org/userbars/openvz-developer.png
Re: Один внешний ip и множество контейнеров [message #38192 is a reply to message #38191] Fri, 27 November 2009 01:41 Go to previous messageGo to next message
f1ps is currently offline  f1ps
Messages: 8
Registered: February 2008
Junior Member
kir wrote on Thu, 26 November 2009 20:03
http://wiki.openvz.org/NAT


Еще раз один внешний ip, четыре контейнера. в каждом из которых, например, апач на 80 порту. Нужно добиться, чтобы для разных хостов запросы на 80 порт шли в разные контейнеры (host1.ru:80 -> 10.1.1.1:80, host2ru:80 -> 10.1.1.2 и т.д).

На сколько я понимаю, iptables -t nat -A PREROUTING -p tcp -d ip_address --dport 8080 может принимать в качетве параметра только ip, который хочется иметь один на всех.
Re: Один внешний ip и множество контейнеров [message #38193 is a reply to message #38192] Fri, 27 November 2009 04:39 Go to previous messageGo to next message
RXL_ is currently offline  RXL_
Messages: 147
Registered: July 2009
Location: Moscow/Russia
Senior Member
Понятие виртуальных хостов www - это уровень приложения и файрволом и маршрутизацией не решается.

Рекомендую поставить на главную ноду nginx - он будет исполнять роль reverse proxy. В нем настроить все необходимые виртуальные хосты. Для передачи запросов на Апач можно использовать команду proxy_pass. Nginx отличает крайне малое потребление ресурсов.

http://wiki.nginx.org/Main


... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Re: Один внешний ip и множество контейнеров [message #38194 is a reply to message #38193] Fri, 27 November 2009 11:28 Go to previous messageGo to next message
f1ps is currently offline  f1ps
Messages: 8
Registered: February 2008
Junior Member
RXL_ wrote on Thu, 26 November 2009 23:39
Понятие виртуальных хостов www - это уровень приложения и файрволом и маршрутизацией не решается.

Рекомендую поставить на главную ноду nginx - он будет исполнять роль reverse proxy. В нем настроить все необходимые виртуальные хосты. Для передачи запросов на Апач можно использовать команду proxy_pass. Nginx отличает крайне малое потребление ресурсов.

http://wiki.nginx.org/Main



Да, вариант действительно интересный. А правильно понимаю, что nginx сможет проксировать только запросы на восьмидисятый порт, или я свободно смогу настроить через него редирект и для других протоколов?
Re: Один внешний ip и множество контейнеров [message #38203 is a reply to message #38194] Fri, 27 November 2009 20:28 Go to previous messageGo to next message
RXL_ is currently offline  RXL_
Messages: 147
Registered: July 2009
Location: Moscow/Russia
Senior Member
Не путайте порты и протоколы!
Nginx - веб-сервер и работает с протоколом HTTP, а порт можете задать любой и не один.


... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Re: Один внешний ip и множество контейнеров [message #38606 is a reply to message #38203] Wed, 06 January 2010 22:50 Go to previous messageGo to next message
f1ps is currently offline  f1ps
Messages: 8
Registered: February 2008
Junior Member
RXL_ wrote on Fri, 27 November 2009 15:28
Не путайте порты и протоколы!
Nginx - веб-сервер и работает с протоколом HTTP, а порт можете задать любой и не один.

Теперь я определенно понял разницу =] А если нужно таким образом проксировать соединения не только по HTTP протоколу, но и любые другие? SSH/IMAP например?
Re: Один внешний ip и множество контейнеров [message #38607 is a reply to message #38606] Wed, 06 January 2010 23:07 Go to previous messageGo to next message
RXL_ is currently offline  RXL_
Messages: 147
Registered: July 2009
Location: Moscow/Russia
Senior Member
Тогда поищите подходящий прокси...

Только не представляю себе, как это возможно: конекчусь по SSH к хосту, но волшебным образом оказываюсь подключенным к другому (!) хосту из некоторого набора да еще чтобы угадать с первого раза. Wink

Для немультиплексируемых протоколов протоколов придется задавать разные порты для разных VE. перенаправлять можно через iptables/nat на HN.


... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

[Updated on: Wed, 06 January 2010 23:11]

Report message to a moderator

Re: Один внешний ip и множество контейнеров [message #38917 is a reply to message #38189] Fri, 19 February 2010 13:02 Go to previous messageGo to next message
Zend is currently offline  Zend
Messages: 5
Registered: February 2010
Junior Member
Не хотел плодить темы, поэтому спрошу здесь.

А фильтрацию пакетов для контейнеров, которые "за НАТом" (которые "серые" адреса имеют), можно как-то производить iptables на HN, не используя для каждого контейнера свой iptables ?
Нужно, например, на HN открыть доступ только с определенных адресов на порты хх, которые проброшены на "локальный" адрес одного из контейнеров - реально ли это сделать?

[Updated on: Fri, 19 February 2010 14:59]

Report message to a moderator

Re: Один внешний ip и множество контейнеров [message #38918 is a reply to message #38917] Fri, 19 February 2010 15:56 Go to previous messageGo to next message
sHaggY_caT is currently offline  sHaggY_caT
Messages: 144
Registered: August 2008
Location: Moscow, Russian Federatio...
Senior Member

Zend wrote on Fri, 19 February 2010 08:02
Не хотел плодить темы, поэтому спрошу здесь.

А фильтрацию пакетов для контейнеров, которые "за НАТом" (которые "серые" адреса имеют), можно как-то производить iptables на HN, не используя для каждого контейнера свой iptables ?



Да, можно.

Zend wrote on Fri, 19 February 2010 08:02

Нужно, например, на HN открыть доступ только с определенных адресов на порты хх, которые проброшены на "локальный" адрес одного из контейнеров - реально ли это сделать?



Да, это возможно сделать. Пример скрипта можно найти в wiki:

http://wiki.openvz.org/Setting_up_an_iptables_firewall


IT-outsource for UNIX servers,
http://ha-systems.ru
Re: Один внешний ip и множество контейнеров [message #38919 is a reply to message #38918] Fri, 19 February 2010 20:46 Go to previous messageGo to next message
Zend is currently offline  Zend
Messages: 5
Registered: February 2010
Junior Member
Я так понимаю, там PRE\POST-ROUTING не используется вообще?

Т.е., принцип работы немножко другой, чем в http://wiki.openvz.org/NAT ?
Я прошу прощения, опыт работы с Linux и iptables небольшой (работал раньше только с FreeBSD\ipfw), поэтому вопрос может глуповат чуть.. Embarassed
Re: Один внешний ip и множество контейнеров [message #38928 is a reply to message #38919] Sat, 20 February 2010 11:36 Go to previous message
sHaggY_caT is currently offline  sHaggY_caT
Messages: 144
Registered: August 2008
Location: Moscow, Russian Federatio...
Senior Member

Zend wrote on Fri, 19 February 2010 15:46
Я так понимаю, там PRE\POST-ROUTING не используется вообще?

Т.е., принцип работы немножко другой, чем в http://wiki.openvz.org/NAT ?
Я прошу прощения, опыт работы с Linux и iptables небольшой (работал раньше только с FreeBSD\ipfw), поэтому вопрос может глуповат чуть.. Embarassed


Если честно, для меня то, как на самом деле работает сеть в OpenVZ, остается, во многом, загадкой.
Если использовать venet, а не veth (venet более предпочтителен при работах на больших нагрузках, veth поддерживает mac-адреса), то можно увидеть вот такие интересности:

[root@vemail03 /]# ip r ls
192.0.2.0/24 dev venet0  scope host 
169.254.0.0/16 dev venet0  scope link 
default via 192.0.2.1 dev venet0 
[root@vemail03 /]# 


При этом, конечно, 192.0.2.1 нет где-либо (ни на venet-интерфейсе в VE0, ни в контейнере)
venet он как-бы точка-точка, но выглядит чуть по-другому.

Для того, что бы из контейнера был доступен внешний мир через venet, не нужно вообще ничего, кроме разрешенных, через ядро, форвардов (разумеется, на ноде должны быть прописаны роуты, и все подряд форварды из секьюрности разрешать нельзя, см. статью в wiki quick start)

Вот veth выглядит немного более по-человечески Smile Он цепляется в обычный бридж с настоящим интерфейсом и себе подобными в VE0, и настраивается один-в-один как Xen, qemu(KVM) виртуалки и вообще linux-bridge

Но, повторюсь, для высоких нагрузок лучше venet Smile

Для ограничения доступа к контейнеру с ноды я использую FORWARD цепочку и соотвествующие правила. Работает. Есть ли способы лучше, не знаю, хотя хотела бы узнать, но в исходниках ковыряться лень.


IT-outsource for UNIX servers,
http://ha-systems.ru
Previous Topic: kernel panic: vzquota_dparents_check_actual
Next Topic: socket(PF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_UDP) = -1 EINVAL (Invalid argument)
Goto Forum:
  


Current Time: Sat Feb 04 12:16:59 GMT 2023

Total time taken to generate the page: 0.00818 seconds