모든 Linux 배포판에서 로드 밸런싱 구현

모든 Linux 배포판에서 로드 밸런싱 구현

개인 용도로 로드 밸런싱 솔루션을 구현하려고 합니다.

내가 원하는 것은 휴대폰 인터넷 연결을 통해 데이터 처리량을 최대화하는 것입니다. 분명히 말씀드리자면:

나는 휴대폰에 데이터 요금제를 가지고 있고, 우리 가족도 각자의 휴대폰에 데이터 요금제를 가지고 있습니다. 하나의 (데스크톱) PC에 최대 4개의 휴대폰을 연결할 수 있다면(USB를 통해 바람직함) (이론적으로) 4개의 휴대폰 중 어느 하나가 달성할 수 있는 것보다 더 빠른 인터넷 연결을 달성할 수 있습니다(PC에 연결하는 경우).

그러면 해당 데스크톱 컴퓨터가 인트라넷용 라우터 역할을 하게 됩니다.

위의 내용이 타당하다면(제가 틀렸을 수도 있습니다. 관련된 기술을 자세히 알지 못함) 이를 구현하는 방법이 필요합니다.

ipvs나는 작업을 위한 도구는 (맞습니까?) 있지만 방법은 없다는 것을 보았습니다 .

배포판 측면에서는 모든 배포판에서 작업을 수행할 수 있지만 Android 휴대폰을 Ubuntu와 연결하면 플러그 앤 플레이가 작동한다는 것을 알고 있습니다. 그래서 우분투에서 할 수 있다면 아마도 strach에서 모든 것을 컴파일하는 것보다 더 빠를 것입니다.

친척이 어떻게 합니까? 로드 밸런싱을 수행하고 즉시 USB 인터넷 연결을 식별하는 배포판이 있습니까?

답변1

나가는 연결의 균형을 맞추려면 표준 iptables과 일부 정책 라우팅만 있으면 됩니다. 연결이 들어오고 나갈 때 링크를 재구성하고 균형을 재조정해야 하기 때문에 연결이 4개이면 약간 복잡해집니다.

원시 iptables설정은

  • 각 연결에 대한 라우팅 테이블 생성

    ip rule add fwmark 10 table PHONE0 prio 33000
    ip rule add fwmark 11 table PHONE1 prio 33000
    ip rule add fwmark 12 table PHONE2 prio 33000
    ip rule add fwmark 13 table PHONE3 prio 33000
    
  • 각 테이블에 각 연결에 대한 기본 게이트웨이를 추가합니다. (게이트웨이 IP는 각 전화 공급자/설정에 따라 다릅니다.)

    ip route add default via 192.168.1.2 table PHONE0 
    ip route add default via 192.168.9.1 table PHONE1 
    ip route add default via 192.168.13.2 table PHONE2 
    ip route add default via 192.168.7.9 table PHONE3 
    
  • 표시되지 않은 흐름을 무작위로 표시하면 특정 연결을 통해 흐름이 라우팅됩니다. OUTPUT로컬 프로세스에 사용됩니다. PREROUTING다른 클라이언트에 트래픽을 전달하는 경우 사용 )

    iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
    iptables -t mangle -A OUTPUT -m mark ! --mark 0 -j ACCEPT
    iptables -t mangle -A OUTPUT -j MARK --set-mark 10
    iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0.25 -j MARK --set-mark 11
    iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0.25 -j MARK --set-mark 12
    iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0.25 -j MARK --set-mark 13
    iptables -t mangle -A OUTPUT -j CONNMARK --save-mark
    
  • 각 연결에 대한 NAT(인터페이스는 전화 연결이 시스템에 표시되는 방식이어야 함)

    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o ppp2 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o ppp3 -j MASQUERADE
    

단일 TCP 또는 UDP 연결은 여전히 ​​단일 링크를 통과하므로 속도가 향상되지 않습니다. 추가 대역폭을 활용하려면 여러 개의 동시 연결(최소 4개)을 사용해야 합니다. 대부분의 브라우저는 여러 개체를 요청할 때 내부적으로 이 작업을 수행합니다. 일부 다운로드 관리자에서는 단일 파일에 대해 여러 연결을 사용할 수 있습니다.

garethTheRed가 제안한 것처럼 ispunity이 설정 위에 일부 "접착제"를 추가하여 iptables연결 목록을 반복하고, 게이트웨이가 응답하는지 확인하고, 문제가 있는 경우 재조정하는 등의 작업을 수행합니다. "고정 세션" 관리는 추가 설정으로 보입니다. 연결의 기본 "라운드 로빈" 로드 밸런싱 외에 포트당. 또 다른 해결책은Net-ISP-균형, iptables 및 라우팅 테이블 구성을 자동화하고, ISP 상태를 모니터링하고, 문제를 경고하고, 하나 이상의 ISP에 액세스할 수 없는 경우 라우팅을 재구성하는 Perl 스크립트 및 라이브러리입니다.

또한 여러 IP에서 요청이 들어오면 일관된 IP 조회를 기반으로 하는 일부 서비스가 중단될 수 있으며 해당 서비스를 연결에 연결하려면 해당 서비스에 대한 추가 규칙을 추가해야 할 수도 있습니다. 단일 연결에서는 속도 향상을 볼 수 없으며, 대부분의 브라우저는 어쨌든 4가지 작업을 동시에 수행할 때만 가능합니다.

ipvs여러 호스트 간에 서비스를 장애 조치할 수 있도록 호스팅하는 항목에 대한 가상 서비스 주소를 만드는 데 더 적합합니다.

답변2

가능할 수도 있습니다 - ispunity인터넷 연결의 부하를 분산시키는 프로젝트입니다. Ruby로 작성되었습니다. 그들은 Raspberry Pi에서 실행 중입니다.이므로 합리적인 배포판에서 실행되어야 합니다.

그들의 시나리오와 귀하의 시나리오 사이의 유일한 차이점은 그들은 이더넷을 사용했지만 귀하는 3G 사용을 제안한다는 것입니다. 나는 당신의 성공(또는 실패)이 당신의 4개의 휴대폰이 USB에 인터넷을 어떻게 표시하는지에 달려 있다고 생각합니다.

Rasberry Pi는 일반적으로 Debian의 변형을 실행하므로 해당 변형이나 Ubuntu로 시작할 수도 있습니다.

답변3

파견 프록시
디스패치 프록시를 사용하면 여러 Wi-Fi 네트워크/이더넷/3G/4G 연결을 결합하여 하나의 대규모 고대역폭 로드 밸런싱 연결로 액세스할 수 있습니다. 더 빠른 연결 속도를 활용하려면 사용자는 디스패치 프록시에 대한 여러 연결을 여는 스레드 다운로드 관리자를 사용해야 하며 여러 인터페이스를 사용하여 효과적으로 연결을 가져와서 결합된 다운로드 속도가 더 빨라집니다.
설치하라는 지시Mac의 경우 Linux에서도 작동합니다.

ISP 통합
ISPUnity는 다중 인터넷 로드 밸런서 및 장애 조치를 기반으로 하는 오픈 소스 Rubygem/소프트웨어입니다.

dispatch-proxy모바일 인터넷의 경우 ISP 통합에서와 같이 설정을 구성하지 않으므로 권장됩니다 .이것내장된 로드 밸런싱을 위한 패치된 Linux 커널에 대한 링크 설명을 살펴보시기 바랍니다.

관련 정보