Как мне сбалансировать нагрузку исходящих соединений с помощью iptables и iproute2?

У меня есть сервер за двумя общедоступными шлюзами

INTERNET
 |   |
GW1 GW2
 |   |
 SERVER

GW1's IP is 192.168.w.x, MAC aa:bb:cc:dd:ee:ff
GW2's IP is 192.168.y.z, MAC ff:ee:dd:cc:bb:aa # note: w != y

, и я пытаюсь сбалансировать загрузку исходящих соединений с сервера. Я использовал решение pepoluan здесь и решение mefat здесь , но оно предназначено для работы с входящими соединениями.

Вот мой / etc / iproute2 / rt_tables

...
1   gw1
2   gw2

iproute2 routes / rules как

ip route add default via 192.168.w.x table gw1
ip route add default via 192.168.y.z table gw2 # w != y
ip rule add fwmark 1 table gw1
ip rule add fwmark 2 table gw2

Правила iptables на сервере:

iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark '!' --mark 0 -j ACCEPT

# incoming (ensure that responses are routed back through the GW from which they came)
iptables -t mangle -A PREROUTING -m mac --mac-source aa:bb:cc:dd:ee:ff -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -m mac --mac-source ff:ee:dd:cc:bb:aa -j MARK --set-mark 0x2

# outgoing (load balance)
iptables -t mangle -A OUTPUT -m statistic --mode nth --every 2 --packet 0 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -m statistic --mode nth --every 2 --packet 1 -j MARK --set-mark 0x2

# save mark
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark

Я замаскировал частный интерфейс на общий интерфейс на каждом из шлюзов и сделал сервер на шлюзах надежной машиной, чтобы шлюзы принимали входящие

Когда я делаю

ping -m 1 8.8.4.4

на сервере, я вижу, что для пакетов установлена ​​метка 0x1, и они переходят от OUTPUT к nat: POSTROUTING, но, похоже, не доходят до шлюза.

kernel: TRACE: raw:OUTPUT:policy:3 IN= OUT=eth0 SRC=192.168.a.b DST=8.8.4.4 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26835 DF PROTO=ICMP TYPE=8 CODE=0 ID=2004 SEQ=1 UID=0 GID=0 MARK=0x1 
kernel: TRACE: mangle:OUTPUT:rule:1 IN= OUT=eth0 SRC=192.168.a.b DST=8.8.4.4 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26835 DF PROTO=ICMP TYPE=8 CODE=0 ID=2004 SEQ=1 UID=0 GID=0 MARK=0x1 
kernel: TRACE: mangle:OUTPUT_direct:return:1 IN= OUT=eth0 SRC=192.168.a.b DST=8.8.4.4 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26835 DF PROTO=ICMP TYPE=8 CODE=0 ID=2004 SEQ=1 UID=0 GID=0 MARK=0x1 
kernel: TRACE: mangle:OUTPUT:policy:2 IN= OUT=eth0 SRC=192.168.a.b DST=8.8.4.4 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26835 DF PROTO=ICMP TYPE=8 CODE=0 ID=2004 SEQ=1 UID=0 GID=0 MARK=0x1 
...
kernel: TRACE: nat:POST_public_allow:return:1 IN= OUT=eth0 SRC=192.168.a.b DST=8.8.4.4 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26835 DF PROTO=ICMP TYPE=8 CODE=0 ID=2004 SEQ=1 UID=0 GID=0 MARK=0x1 
kernel: TRACE: nat:POST_public:return:4 IN= OUT=eth0 SRC=192.168.a.b DST=8.8.4.4 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26835 DF PROTO=ICMP TYPE=8 CODE=0 ID=2004 SEQ=1 UID=0 GID=0 MARK=0x1 
kernel: TRACE: nat:POSTROUTING:policy:4 IN= OUT=eth0 SRC=192.168.a.b DST=8.8.4.4 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=26835 DF PROTO=ICMP TYPE=8 CODE=0 ID=2004 SEQ=1 UID=0 GID=0 MARK=0x1 

(Цепи вроде " Я следую этому руководству (начиная с «Миграция FSMO на Server 2016»). Первый шаг - запросить, кто на самом деле выполняет роли в netdom

PS C:\Windows\system32> netdom query fsmo
Schema master               [sourceserver].[domain].local
Domain naming master        [sourceserver].[domain].local
PDC                         [sourceserver].[domain].local
RID pool manager            [sourceserver].[domain].local
Infrastructure master       [sourceserver].[domain].local
The command completed successfully.  

, это выглядит так, как ожидалось, поэтому я запускаю следующий комментарий (PowerShell на целевом сервере)

PS C:\Windows\system32> Move-ADDirectoryServerOperationMasterRole -Identity [targetserver] -OperationMasterRole SchemaMaster
, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster

, просто он выдает мне ошибку, которую я не знаю, что делать.

Move-ADDirectoryServerOperationMasterRole : Unable to find a default server with Active Directory Web Services running.
At line:1 char:1
+ Move-ADDirectoryServerOperationMasterRole -Identity COMSRV2018 -Opera ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (COMSRV2018:ADDirectoryServer) [Move-ADDirector...ationMasterRole],
    ADServerDownException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1355,Microsoft.ActiveDirectory.Management.Commands.MoveADDirectory
   ServerOperationMasterRole

Повторный запуск запроса netdom по-прежнему указывает на то, что роли fsmo связаны с исходным сервером.

Один очевидный эффект заключается в том, что у меня много красных индикаторов на целевых серверах Daschboard , где все говорят В сети - ожидание перезапуска

red indicators in the target servers Daschboard

Я не решаюсь просто перезапустить сервер из-за полученной мной ошибки. Может кто-нибудь посоветует, что делать в этот момент? Первый шаг - запросить, кто на самом деле выполняет роли с netdom

PS C:\Windows\system32> netdom query fsmo
Schema master               [sourceserver].[domain].local
Domain naming master        [sourceserver].[domain].local
PDC                         [sourceserver].[domain].local
RID pool manager            [sourceserver].[domain].local
Infrastructure master       [sourceserver].[domain].local
The command completed successfully.  

, это выглядит так, как ожидалось, поэтому я запускаю следующий комментарий (PowerShell на целевом сервере)

PS C:\Windows\system32> Move-ADDirectoryServerOperationMasterRole -Identity [targetserver] -OperationMasterRole SchemaMaster
, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster

, просто он выдает мне ошибку, которую я не знаю, что делать.

Move-ADDirectoryServerOperationMasterRole : Unable to find a default server with Active Directory Web Services running.
At line:1 char:1
+ Move-ADDirectoryServerOperationMasterRole -Identity COMSRV2018 -Opera ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (COMSRV2018:ADDirectoryServer) [Move-ADDirector...ationMasterRole],
    ADServerDownException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1355,Microsoft.ActiveDirectory.Management.Commands.MoveADDirectory
   ServerOperationMasterRole

Повторный запуск запроса netdom по-прежнему указывает на то, что роли fsmo связаны с исходным сервером.

Один очевидный эффект заключается в том, что у меня много красных индикаторов на целевых серверах Daschboard , где все говорят В сети - ожидание перезапуска

red indicators in the target servers Daschboard

Я не решаюсь просто перезапустить сервер из-за полученной мной ошибки. Может кто-нибудь посоветует, что делать в этот момент? Первый шаг - запросить, кто на самом деле выполняет роли в netdom

PS C:\Windows\system32> netdom query fsmo
Schema master               [sourceserver].[domain].local
Domain naming master        [sourceserver].[domain].local
PDC                         [sourceserver].[domain].local
RID pool manager            [sourceserver].[domain].local
Infrastructure master       [sourceserver].[domain].local
The command completed successfully.  

, это выглядит так, как ожидалось, поэтому я запускаю следующий комментарий (PowerShell на целевом сервере)

PS C:\Windows\system32> Move-ADDirectoryServerOperationMasterRole -Identity [targetserver] -OperationMasterRole SchemaMaster
, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster

, просто он выдает мне ошибку, которую я не знаю, что делать.

Move-ADDirectoryServerOperationMasterRole : Unable to find a default server with Active Directory Web Services running.
At line:1 char:1
+ Move-ADDirectoryServerOperationMasterRole -Identity COMSRV2018 -Opera ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (COMSRV2018:ADDirectoryServer) [Move-ADDirector...ationMasterRole],
    ADServerDownException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1355,Microsoft.ActiveDirectory.Management.Commands.MoveADDirectory
   ServerOperationMasterRole

Повторный запуск запроса netdom по-прежнему указывает на то, что роли fsmo связаны с исходным сервером.

Один очевидный эффект заключается в том, что у меня много красных индикаторов на целевых серверах Daschboard , где все говорят В сети - ожидание перезапуска

red indicators in the target servers Daschboard

Я не решаюсь просто перезапустить сервер из-за полученной мной ошибки. Может кто-нибудь посоветует, что делать в этот момент?

Move-ADDirectoryServerOperationMasterRole : Unable to find a default server with Active Directory Web Services running.
At line:1 char:1
+ Move-ADDirectoryServerOperationMasterRole -Identity COMSRV2018 -Opera ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (COMSRV2018:ADDirectoryServer) [Move-ADDirector...ationMasterRole],
    ADServerDownException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1355,Microsoft.ActiveDirectory.Management.Commands.MoveADDirectory
   ServerOperationMasterRole

Повторный запуск запроса netdom по-прежнему указывает на то, что роли fsmo связаны с исходным сервером.

Один очевидный эффект заключается в том, что у меня много красных индикаторов на целевых серверах Daschboard , где все говорят В сети - ожидание перезапуска

red indicators in the target servers Daschboard

Я не решаюсь просто перезапустить сервер из-за полученной мной ошибки. Может кто-нибудь посоветует, что делать в этот момент?

Move-ADDirectoryServerOperationMasterRole : Unable to find a default server with Active Directory Web Services running.
At line:1 char:1
+ Move-ADDirectoryServerOperationMasterRole -Identity COMSRV2018 -Opera ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (COMSRV2018:ADDirectoryServer) [Move-ADDirector...ationMasterRole],
    ADServerDownException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1355,Microsoft.ActiveDirectory.Management.Commands.MoveADDirectory
   ServerOperationMasterRole

Повторный запуск запроса netdom по-прежнему указывает на то, что роли fsmo связаны с исходным сервером.

Один очевидный эффект заключается в том, что у меня много красных индикаторов на целевых серверах Daschboard , где все говорят В сети - ожидание перезапуска

red indicators in the target servers Daschboard

Я не решаюсь просто перезапустить сервер из-за полученной мной ошибки. Может кто-нибудь посоветует, что делать в этот момент?

Что было бы наилучшим подходом?

0
задан 5 July 2018 в 23:46
1 ответ

Вам необходимо добавить развертывание кода AWS в качестве шага в проекте Jenkins. Развертывание кода скопирует код nodejs в экземпляры Ec2 и запустит сценарии bash, которые настроены в appspec.yml (этот файл и сценарии bash должны быть включены в пакет развертывания кода).

0
ответ дан 5 December 2019 в 05:40

Теги

Похожие вопросы