Назад | Перейти на главную страницу

Используйте марионетку, чтобы внести изменения в ip route и sysctl

У меня есть два изменения в ip route & sysctl которые отключают медленный старт tcp. Вот как я это делаю

ip route show

Запишите строку, начинающуюся со значения default.

Возьмите IP из строки по умолчанию и запустите

sudo ip route change default via $ip_address dev eth0 initcwnd 12 
sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0

Как я могу создать из этого марионеточный сценарий? Тот, который можно развернуть на многих машинах одного типа - CentOS 6

Редактировать: Добавлена ​​награда за рабочий пример для

sudo ip route change default via $ip_address dev eth0 initcwnd 12 

В sysctl сторона была освещена в этом посте: Установите параметры sysctl.conf с помощью Puppet.

Куклы пример для сети также использует Авгий.

Изменить: вы используете CentOS, поэтому помните, что вам нужно сделать эти маршруты постоянными ... Является ли более безопасным подход внести изменения в файл, проверить, а затем перезапустить сетевой интерфейс? Это предполагает /etc/sysconfig/network-scripts/route-ethX использовать, так как вы используете via синтаксис. В ip route кажется вашей целью, поскольку вы хотите изменить начальное окно перегрузки (initcwnd). Я бы серьезно разделил это на другой вариант, потому что установка шлюза по умолчанию сама по себе должна обрабатываться сетевыми скриптами ОС / процессом кикстарта / сборкой.


Теперь о совершенно другом решении:

Мне нравится Puppet за некоторые вещи. Сетевые конфигурации и значения sysctl среди них отсутствуют. С системами EL6 у вас есть возможность использовать настроенный ADM framework чтобы вносить эти изменения в систему на лету простым и последовательным образом. Серверов, которыми я управляю, иногда требуется 30+ sysctl и sysfs изменения перед запуском в производство. Раньше я управлял этим вручную, затем с помощью Puppet ... но с EL6 я создаю настроен профиль со всеми необходимыми настройками и скриптами, управляйте профилями и их распространением с помощью Puppet и контролируйте tuned демон с помощью Puppet.

Учитывая это, просто переместите свой ip сценарий и sysctl значения в настраиваемом профиле и переходите оттуда. Намного чище.

Если вы получаете свой интернет-адрес с помощью DHCP (что предлагается в вашем вопросе), вы можете использовать /etc/dhcp/dhclient-exit-hooks запускать команды оболочки после dhclient настраивает ваш интерфейс. У вас будет доступ к ряду переменных, предоставляемых dhclient, включая $router. Вы можете использовать это для запуска:

ip route change default via $router dev $interface initcwnd 12 

Вы бы установили этот скрипт с помощью обычного Puppet file ресурс:

file { '/etc/dhcp/dhclient-exit-hooks':
owner => root,
group => root,
mode => 0755,
source => 'puppet:///.../dhclient-exit-hooks',
}

И содержимое файла, вероятно, будет выглядеть примерно так:

#!/bin/sh

if [ "$interface" = eth0 ]; then
  ip route change default via ${new_routers%% *} dev $interface initcwnd 12 
fi

Если ты не используя DHCP, вы можете сделать нечто подобное. Нормальный ifup скрипт запускается /sbin/ifup-local после настройки интерфейса, и вы можете использовать это для запуска ip команда. В этом случае вы можете получить адрес шлюза по умолчанию, просто указав его в конфигурации интерфейса в /etc/sysconfig/network-scripts/ifcfg-eth0 (и ваша марионетка file ресурс установит /sbin/ifup-local).

Выход из ответа larsks, если у вас есть статические IP-адреса, поместите его в / sbin / ifup-local

#!/bin/sh

GATEWAY=`ip route| awk '/^def/{print $3}'`
DEFGWDEV=`ip route| awk '/^def/{print $5}'`

if [ "$1" = $DEFGWDEV ]; then
  ip route change default via $GATEWAY dev $DEFGWDEV initcwnd 12
fi