Пытаемся настроить балансер для разных меток на астре 1.6 с использованием apache2. Используется модуль libapache2-mod-lbmethod-bymaclabel.
Логика такая, что пользователь при входе в систему выбирает метку (например 3) и при обращении из браузера к балансировщику, апач перенаправляет его к нужному серверу.
Вроде все звучит легко, но реализация подводит. Балансер постоянно кидает на первый BalancerMember, игнорируя остальные. Пример конфига:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
ProxyPreserveHost On
ProxyRequests On
ProxyVia On
RewriteEngine On
ProxyPassReverse "/ws-event-control" "balancer://project-ws/ws-event-control"
ProxyPass "/ws-event-control" "balancer://project-ws/ws-event-control"
ProxyPassReverse "/ws-unit" "balancer://project-ws/ws-unit"
ProxyPass "/ws-unit" "balancer://project-ws/ws-unit"
ProxyPassReverse "/ws-target" "balancer://project-ws/ws-target"
ProxyPass "/ws-target" "balancer://project-ws/ws-target"
ProxyPassReverse "/" "balancer://project/"
ProxyPass "/" "balancer://project/"
SetEnv proxy-sendcl 1
<Proxy "balancer://project/">
RequestHeader set X-Remote-User expr=%{REMOTE_USER}
<Limit GET POST PUT PATCH DELETE> # OPTIONS должен проходить без авторизации (для того, чтобы проходил CORS preflight)
AuthType Kerberos
KrbAuthRealms ALD.DOMAIN.DEV
KrbServiceName HTTP/mac-balancer.stand.domain.dev
Krb5Keytab /etc/apache2/keytab
KrbMethodNegotiate on
KrbMethodK5Passwd on
Require valid-user
KrbSaveCredentials on
</Limit>
BalancerMember "http://mac0.centr.stand.domain.dev:80" route=0:0
BalancerMember "http://mac3.centr.stand.domain.dev:80" route=3:0
ProxySet lbmethod=bymaclabel stickysession=ROUTEID
</Proxy>
<Proxy "balancer://project-ws/">
RequestHeader set X-Remote-User expr=%{REMOTE_USER}
<Limit GET POST PUT PATCH DELETE> # OPTIONS должен проходить без авторизации (для того, чтобы проходил CORS preflight)
AuthType Kerberos
KrbAuthRealms ALD.DOMAIN.DEV
KrbServiceName HTTP/mac-balancer.stand.domain.dev
Krb5Keytab /etc/apache2/keytab
KrbMethodNegotiate on
KrbMethodK5Passwd on
Require valid-user
KrbSaveCredentials on
</Limit>
BalancerMember "ws://mac0.stand.domain.dev:80" route=0:0
BalancerMember "ws://mac3.stand.domain.dev:80" route=3:0
ProxySet lbmethod=bymaclabel stickysession=ROUTEID
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:9876>
ServerAdmin webmaster@localhost
ProxyPreserveHost On
ProxyPassReverse "/" "balancer://modelcm/"
ProxyPass "/" "balancer://modelcm/"
SetEnv proxy-sendcl 1
<Proxy "balancer://modelcm/">
RequestHeader set X-Remote-User expr=%{REMOTE_USER}
<Limit GET POST PUT PATCH DELETE> # OPTIONS должен проходить без авторизации (для того, чтобы проходил CORS preflight)
AuthType Kerberos
KrbAuthRealms ALD.DOMAIN.DEV
KrbServiceName HTTP/mac-balancer.stand.domain.dev
Krb5Keytab /etc/apache2/keytab
KrbMethodNegotiate on
KrbMethodK5Passwd on
Require valid-user
KrbSaveCredentials on
</Limit>
BalancerMember "http://mac0.stand.domain.dev:9876" route=0:0
BalancerMember "http://mac3.stand.domain.dev:9876" route=3:0
ProxySet lbmethod=bymaclabel stickysession=ROUTEID
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Кто сталкивался, не обходите стороной, подскажите что может быть не так?