![모든 Linux 배포판의 로드 밸런싱](https://linux55.com/image/38718/%EB%AA%A8%EB%93%A0%20Linux%20%EB%B0%B0%ED%8F%AC%ED%8C%90%EC%9D%98%20%EB%A1%9C%EB%93%9C%20%EB%B0%B8%EB%9F%B0%EC%8B%B1.png)
개인 용도로 로드 밸런싱 솔루션을 구현하려고 합니다.
제가 원하는 것은 휴대폰 인터넷 연결의 데이터 처리량을 최대화하는 것입니다. 분명히 말씀드리자면:
나는 내 휴대폰에 데이터 요금제를 가지고 있고 우리 가족은 각자의 휴대폰에 각자의 데이터 요금제를 가지고 있습니다. 최대 4대의 휴대폰을 하나의 (데스크톱) PC에 연결할 수 있다면(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
연결 목록을 순환하고, 게이트웨이가 응답하는지 확인하고, 문제가 발생하면 재조정하는 등의 작업을 수행합니다. "고정 세션" 관리는 기본 "라운드 로빈" 연결 로드 밸런싱 외에 추가적인 포트별 설정인 것으로 보입니다. 또 다른 해결책은네트워크 ISP 밸런싱, iptables 및 라우팅 테이블 구성을 자동화하고, ISP 상태를 모니터링하고, 문제를 경고하고, 하나 이상의 ISP에 연결할 수 없는 경우 라우팅을 재구성하는 Perl 스크립트 및 라이브러리입니다.
또한 여러 IP의 요청으로 인해 일관된 IP 조회를 기반으로 일부 서비스가 중단될 수 있으며 이러한 서비스를 연결에 바인딩하려면 이러한 서비스에 대한 추가 규칙을 추가해야 할 수도 있습니다. 대부분의 브라우저는 어쨌든 4가지 작업을 동시에 수행하는 경우에만 단일 연결에서 속도 향상을 볼 수 없습니다.
ipvs
여러 호스트 간에 서비스가 장애 조치될 수 있도록 호스팅하는 항목에 대한 가상 서비스 주소를 만드는 것에 관한 것입니다.
답변2
ispunity
그것은 가능합니다. 인터넷 연결 부하의 균형을 맞출 수 있는 프로젝트가 있으면 가능합니다 . Ruby로 작성되었습니다. 이미 Raspberry Pi에서 실행 중입니다.이므로 합리적인 배포 방식으로 실행되어야 합니다.
그들의 시나리오와 귀하의 시나리오 사이의 유일한 차이점은 귀하가 3G를 제안하는 동안 그들은 이더넷을 사용한다는 것입니다. 귀하의 성공(또는 실패)은 4대의 휴대폰이 USB를 통해 인터넷을 어떻게 제공하는지에 따라 크게 좌우될 것 같습니다.
Rasberry Pi는 일반적으로 Debian의 변형을 실행하므로 Debian 또는 Ubuntu로 시작할 수 있습니다.
답변3
파견대리인
디스패치 에이전트를 사용하면 여러 Wi-Fi 네트워크/이더넷/3G/4G 연결을 결합하고 이를 하나의 대규모 고대역폭 로드 밸런싱 연결로 액세스할 수 있습니다. 더 빠른 연결 속도를 활용하려면 사용자는 스레드 다운로드 관리자를 사용해야 합니다. 이 관리자는 디스패치 에이전트에 대한 여러 연결을 열고 여러 인터페이스를 사용하여 이를 효율적으로 확보하므로 조합 다운로드 속도가 더 빨라집니다.
설치 참고 사항Mac에서도 사용 가능하며 Linux에서도 사용 가능합니다.
ISP 통합
ISPUnity는 오픈 소스 Ruby gem/소프트웨어 기반 다중 인터넷 로드 밸런서 및 장애 조치입니다.
모바일 인터넷의 경우 dispatch-proxy
ISP 통합과 같은 설정을 구성하지 않는 것이 좋습니다.
이것내장된 로드 밸런싱을 위해 Linux 커널을 패치하는 방법에 대한 링크된 설명을 살펴볼 수 있습니다.