2017-01-05 4 views
1

У меня есть следующий сценарий:HAproxy - группа TCP и HTTP хостов зависят друг от друга

HAproxy работает перед моими двумя группами серверов:

  • двух серверов HTTP (активный/резервного копирования)
  • два сервера TCP (активный/резервный)

теперь я хочу, чтобы переносились от активных сторон резервного копирования из них каких-либо активных услуг идет вниз (при сбое HTTP и TCP на в то же время).

Есть ли способ сделать это в HAproxy? Я до сих пор мог только переходить к одному из них в зависимости от протокола, но не к тому и другому. Можно ли их сгруппировать?

мне было интересно, если может быть сделано с помощью списков контроля доступа и вещей, как fe_conn директивы

ответ

2

Я думаю nbsrv HAproxy работает здесь. Если ваш счет nbsrv, количество здоровых экземпляров, падает ниже желаемой суммы на пуле пула, оба пула на резервный сервер. В противном случае просто используйте пул по умолчанию. Вот пример проверен на 1.5.18, но должно работать на более новых версиях:

defaults all 
    timeout connect 30s 
    timeout client 30s 
    timeout server 30s 
    mode http 

# http frontend 
frontend http *:80 
    # use the backup service if EITHER service is down 
    acl use_backup nbsrv(http_service) lt 1 
    acl use_backup nbsrv(tcp_service) lt 1 
    use_backend http_service_backup if use_backup 
    default_backend http_service 

# tcp frontend 
frontend tcp_10000 *:10000 
    mode tcp 
    # use the backup service if EITHER service is down 
    acl use_backup nbsrv(http_service) lt 1 
    acl use_backup nbsrv(tcp_service) lt 1 
    use_backend tcp_service_backup if use_backup 
    default_backend tcp_service 

backend tcp_service 
    mode tcp 
    # main tcp instance here 
    # can also include backup server here with backup directive if desired 
    server tcp-service1 tcp-service1.local:10000 check 

backend tcp_service_backup 
    mode tcp 
    # backup tcp instance here 
    server tcp-service2 tcp-service2.local:10000 check 

backend http_service 
    # main http instance here 
    # can also include backup server here with backup directive if desired 
    server http-service1 http-service1.local:80 check 

backend http_service_backup 
    # backup http instance here 
    server http-service2 http-service2.local:80 check  

См https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#nbsrv для более подробной информации nbsrv.

Смежные вопросы