>Вот есть сквид и несколько каналов с разными адресами. Хотелось бы распределить
>загрузки сервера по всем им. Максимум чего я добился, это статическое
>разбиение пользователей по каналам -
>tcp_outgoing_address 1.2.3.4 vip
>tcp_outgoing_addrees 5.6.7.8
>
>Но это статическое разбиение. Попробовал было через
>external_acl_type, типа
>
>external_acl_type load_balance %SRC /home/squid/bin/ballance
>acl balancer1_2_3_4 external load_balance 1.2.3.4
>acl balancer5_6_7_8 external load_balance 5.6.7.8
>
>tcp_outgoing_address 1.2.3.4 balancer1_2_3_4
>tcp_outgoing_address 5.6.7.8 balancer5_6_7_8
>tcp_outgoing_address 8.7.6.5
>
>Но оказалось (?), external_acl_type не действует для tcp_outgoing_xxx.
>Или я не прав?
>
>PS.
> А какие есть еще прокси сервера с загрузкой на 2000000
>запросов/сутки? А мы немного поправили сквида, файд forward.c, функция aclMapAddr.
#define POOL_SIZE 32
static struct in_addr
aclMapAddr(acl_address * head, aclCheck_t * ch)
{
acl_address *l;
struct in_addr pool[POOL_SIZE];
unsigned int cnt = 0;
for (l = head; l && cnt < POOL_SIZE; l = l->next)
{
if (!l->acl_list)
pool[cnt++] = l->addr;
else if (aclMatchAclList(l->acl_list, ch))
return l->addr;
}
if (cnt == 0)
{
pool[0].s_addr = INADDR_ANY;
return pool[0];
}
return pool[ squid_random () % cnt];
}
Находит все записи tcp_outgoing_address без АКЛей и случайным образом выбирает адрес для использования. Не панацея конечно, но каналы загружает все.