先史時代
遅かれ早かれ、システム管理者は複数のチャネルにトラフィックを分散する必要性に直面しますが、当然ながら各チャネルを最大限に使用する必要があります。 同様のニーズに直面し、車輪を再発明しないことを決定した彼は、検索エンジンの助けを借りました。 Ubuntuにサーバーがあるため、記事
http://help.ubuntu.ru/wiki/ip_balancingに注意を向けました。 「方法1」を実装しましたが、テスト中に次の重大な問題に気付きました。一部のサイトでリンクを使用したときに開かなかった(たとえば、VKontakteリソースで音楽をオンにしようとしたとき)。 理由は明らかです-要求は別のチャネルを通過しました。 状況について考えた後、バランスを取るためのアプローチを組み合わせることにしました。 ロジックは単純です-すべてのトラフィックのほとんどが急流や同様のプログラムを食べるため、トラフィックを共有します。 その結果、最大11000までのポートを持つトラフィックをサブスクライバの数でほぼ均等に分散します。サブネット、ポート11000〜60000のトラフィックでチャネルの負荷を分散します。
設定
ルーティングテーブルはチャネルごとに作成されることを前提としているため、それぞれ
chan1 、
chan2 、
chan3-3つのチャネルと呼びます。
たとえば、/ etc / rc.localのどこかに次のようなものを追加します。
ip rule add prio 101 fwmark 1 table chan1 ip rule add prio 102 fwmark 2 table chan2 ip rule add prio 103 fwmark 4 table chan3
スクリプト/etc/rc.balanceを作成します。
チャネルごとのグリッドの分布のリストを作成します(2番目の列のマーク)。
172.16.0.0/22 1 172.16.4.0/22 2 172.16.8.0/22 4
スクリプト/etc/rc.baltor-バランス規則:
スクリプト/etc/rc.cnload-チャネル負荷に応じた確率の計算:
/etc/rc.localに追加します
/etc/rc.balance
および/ etc / crontab
*/1 * * * * root /etc/rc.cnload
係数/etc/rc.cnload.lstが既に存在するファイルを開始するときには、スクリプト/etc/rc.cnloadを実行してコンパイルできることが重要です。
おわりに
この方法は、8000人の加入者を持つネットワークで正常に実装されました。 バランシングに加えて、動的シェーピングが使用されますが、これは別の記事のトピックです。
すべてのすべてのバランス。