
個人的な用途にロードバランシングソリューションを実装しようとしています。
私が望むのは、携帯電話のインターネット接続のデータスループットを最大化することです。明らかに言えば:
私は私の携帯電話にデータプランを持っていて、私の家族は自分の携帯電話にそれぞれのデータプランを持っています。最大4台の携帯電話を1台の(デスクトップ)PCに接続できる場合(USB経由で望ましい)(理論的には)4台の携帯電話のいずれかより高速なインターネット接続を得ることができます(もし携帯電話がPCに接続されている場合)場合)。
これにより、デスクトップコンピュータはイントラネットのルーターとして機能します。
上記が良い根拠を持っている場合(私が間違っている可能性があります。関連技術の詳細を知らない)、それを実装する方法が必要です。
私は仕事をするツールを見たことがありますがipvs
(正しいですか?)どうすればいいのかわかりません。
ディストリビューションの観点から見ると、これはすべてのディストリビューションで実行できますが、Android携帯電話をUbuntuに接続することはプラグアンドプレイです。したがって、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のステータスを監視し、問題を警告し、1つ以上のISPに接続できない場合にルーティングを再設定するPerlスクリプトとライブラリ。
さらに、複数のIPからの要求によって一貫したIPルックアップに基づいて一部のサービスが中断される可能性があり、これらのサービスを接続にバインドするには、これらのサービスに追加のルールを追加する必要があります。ほとんどのブラウザは、とにかく4つの操作を同時に実行している場合にのみ、単一の接続でスピードアップを見ることはできません。
ipvs
複数のホスト間でサービスがフェールオーバーできるようにホストするエントリの仮想サービスアドレスを作成することです。
答え2
ispunity
それは可能です。インターネット接続負荷のバランスをとることができるプロジェクトがあれば可能です。 Rubyで書かれています。 すでにRaspberry Piで実行されています。したがって、合理的な展開方法で実行する必要があります。
彼らのシナリオとあなたのシナリオとの唯一の違いは、あなたが3Gを提案している間、彼らはイーサネットを使用することです。あなたの成功(または失敗)は、4台の携帯電話がUSB経由でインターネットをどのように提供するかによって大きく左右されるようです。
Rasberry Piは通常Debianのバリアントを実行するため、DebianまたはUbuntuで起動できます。
答え3
派遣代理人
ディスパッチエージェントを使用すると、複数のWi-Fiネットワーク/イーサネット/3G/4G接続を組み合わせて、1つの大規模で高帯域幅のロードバランシング接続でアクセスできます。より高速な接続速度を利用するには、ユーザーはスレッドダウンロードマネージャを使用する必要があります。この管理者はディスパッチエージェントへの複数の接続を開き、複数のインターフェイスを使用して効率的にアクセスできるため、組み合わせのダウンロード速度が向上します。
インストールに関する注意Macでも利用でき、Linuxでも利用可能です。
ISP統合
ISPUnityは、オープンソースのRuby gem /ソフトウェアベースのマルチインターネットロードバランサーおよびフェイルオーバーです。
モバイルインターネットでは、dispatch-proxy
ISP統合などの設定を構成しないことをお勧めします。
これ組み込みのロードバランシングのためにLinuxカーネルをパッチする方法のリンクされた説明を見ることができます。