2017-11-26 4 views
0

다른 경로의 요청을 다른 백엔드로 전달하도록 HAProxy를 구성해야하며 일부 백엔드는로드 균형 조정이 필요합니다. 그래서 this question을 찾아서 거기에 제공된 솔루션이 작동하지만, 우리의 관례에 따라 frontenduse_backend 대신 listenuse-server을 사용해야합니다.HAProxy -로드 밸런싱을 이용한 URL 기반 라우팅 - 수신 및 사용 서버 사용

그래서 지금은 이런 일이 :

listen poq [url]:[port] 
    acl has_cool_url path_beg -i /cool 
    use-server cool if has_cool_url 
    server cool [ip]:[port] check 
    server default [ip]:[port] check 

을 그리고 나는 이것을 사용할 수 없습니다

listen poq [url]:[port] 
    acl has_cool_url path_beg -i /cool 
    use_backend cool if has_cool_url 
    use_backend notcool if !has_cool_url 

backend cool 
    balance roundrobin 
    server first [ip]:[port] check 
    server second [ip]:[port] check 

backend notcool 
    server third [ip]:[port] check 

우리의 규칙이 listen 블록 내에서 모든 것을 정의하기 위해 우리에게 때문입니다.

그래서 내 질문은 : 이런 일이있다 : firstsecond이 라운드 로빈을 사용하여로드 균형을

listen poq [url]:[port] 
    acl has_cool_url path_beg -i /cool 
    use-server {first, second} if has_cool_url 
    server first [ip]:[port] check 
    server second [ip]:[port] check 
    server default [ip]:[port] check 

?

답변

0

귀하의 관습은 임의적이며 귀하의 기능을 제한합니다. listen 블록은 기능적으로 동일한 이름을 가진 frontendbackend 블록과 유사하며 프론트 엔드에서 백엔드를 가리키는 암시 적 default_backend과 같습니다. listen 블록은 간단한 구성을 위해 사용됩니다.

백엔드의 핵심은 백엔드의 모든 서버가 동일한 서비스를 제공한다는 것입니다. use-server을 사용하면 정확히 하나의 서버를 선택할 수 있습니다.

당신이 listen과 함께 할 수있는 것은, 개별적으로 주소 사용 조건에 일치하는 서버, 플러스 하나 개 이상의 개별 서버의 단일 기본 세트의 균형을하지만, 그들은 균형을 할 수 없습니다.

listen poq [url]:[port] 
    acl has_warm_url path_beg -i /warm 
    use-server warm-server if has_warm_url 
    acl has_hot_url path_beg -i /hot 
    use-server hot-server if has_hot_url 
    server warm-server [ip]:[port] check weight 0 
    server hot-server [ip]:[port] check weight 0 
    server default1 [ip]:[port] check 
    server default2 [ip]:[port] check 

이 구성에서/warm는 warm-server로/hot은 hot-server로 이동합니다. 이 두 서버는 다른 요청을 처리하지 못하도록 0 가중치가 적용됩니다.

다른 모든 것은 기본 1과 기본값 2간에 균형을 유지합니다.

이 HAProxy는 백엔드 당 균형의 한 세트를 수행하고, 위에서 언급 한 바와 같이하는 listen 섹션 frontendbackend의 일치 세트의 기능을 암시 조합 때문에 listen에있는 모든 유연성이다.

+0

당신이 제공 한 솔루션이 내 목적에 완벽하게 잘 작동합니다. 감사합니다. 나는 대회가 임의라는 데 동의한다. – ezer1337

관련 문제