OpenVZ、QuaggaおよびLiveMigration

すべての人に良い一日を!

OpenVZコンテナーを使用する便利な方法を共有したいと思います。 このオブジェクトは非常に軽く、くしゃみごとにコピーを取得できます。

デフォルトでは、コンテナはvenetネットワークインターフェイスを使用します。 管理者にとっては、コンテナにアドレスを割り当てるだけのように見え、便利です。 ただし、コンテナがネットワークからアクセスできるようにするには、物理​​サーバー(HN)が接続されているのと同じIPネットワークのアドレスを使用する必要があります。 サーバーは、その上で実行されているコンテナーのリストを認識しており、そのMACアドレスでコンテナーのアドレスを使用してARP要求に応答します。 しかし、あなたは常に仕事の利便性を高めたいと思っています。そして、ダイナミックルーティングがこれに役立ちます。

QuaggaとOSPFを使用した例を正確に見てみましょう。



このスキームが機能するためには、動的ルーティングプロトコル(OSPF)がネットワーク上ですでに実行されている必要があります。 ただし、複数のルーターで接続された多くのネットワークがある場合は、ほとんどの場合、既に動的ルーティングを構成しています。

まず、サーバーにQuaggaをインストールする必要があります。
すべてがシンプルで、Quaggaはほとんどすべてのディストリビューションの標準パッケージに含まれています。

以降、Debianベースのコマンド:

#sudo apt-get install quagga
      
      





次に、最小構成を作成して実行します。
/ etc / quagga / daemonsファイルで、行を修正します( 「no」から「yes」まで ):

 zebra=yes ospfd=yes
      
      





ファイル/etc/quagga/zebra.confを作成します

 ip forwarding line vty
      
      





ファイル/etc/quagga/ospfd.confを作成します

 router ospf redistribute kernel network 0.0.0.0/0 area 0.0.0.0 line vty
      
      





再起動:

 #sudo service quagga restart
      
      







これらの設定により、HNはすべてのインターフェイスでルーターを検索し、実行中のすべてのコンテナーについて通知します。

Quaggaがネットワークに接続され、コンテナ情報が配信されていることを確認します。
 # vtysh -e "show ip ospf nei" Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 198.51.100.11 128 Full/DR 2.548s 192.0.2.25 vmbr0:192.0.2.26 0 0 0 192.0.2.27 1 2-Way/DROther 2.761s 192.0.2.27 vmbr0:192.0.2.26 0 0 0 192.0.2.28 1 Full/Backup 2.761s 192.0.2.28 vmbr0:192.0.2.26 0 0 0
      
      





リストが空でない場合、隣接ルーターが見つかります。

コンテナ情報がクォークされていることを確認します。

 # vzlist CTID NPROC STATUS IP_ADDR HOSTNAME 100 38 running - radius.local 101 26 running 198.51.100.2 dns.local 104 47 running 203.0.113.4 cacti.local 105 56 running 203.0.113.5 host3.local 152 22 running 203.0.113.52 host4.local 249 96 running 203.0.113.149 zabbix.local # vtysh -e "show ip ospf database external self-originate" | fgrep Link\ State\ ID Link State ID: 198.51.100.2 (External Network Number) Link State ID: 192.168.98.4 (External Network Number) Link State ID: 192.168.98.5 (External Network Number) Link State ID: 192.168.98.52 (External Network Number) Link State ID: 192.168.98.149 (External Network Number)
      
      





一致する必要があるIPアドレスを持つ2つのリストを取得します。



したがって、任意のアドレスでコンテナを作成でき、どこからでもアクセスできます。

それでは、Quaggaの設定をいくつか追加しましょう。
これらの行のおかげで、情報はより速く更新されますが、ルーターのインターフェイスもそれに応じて構成する必要があります。

ファイル/etc/quagga/ospfd.conf:

 ... interface vmbr0 ip ospf hello-interval 1 ip ospf dead-interval 3 ...
      
      





サーバーが配置されているネットワークからのアドレスを持つコンテナに関する情報は配布されません。 確かに、誰もがこのネットワークについて知っているので、余分なエントリのあるルーティングテーブルに悩まされるのはなぜですか。

ファイル/etc/quagga/ospfd.conf:

 ... ip prefix-list ifvmbr0 seq 100 permit 192.0.2.0/24 le 32 router ospf redistribute kernel route-map openvz route-map openvz deny 100 match ip address prefix-list ifvmbr0 route-map openvz permit 200 ...
      
      









アドレスを使用するという事実に加えて、そのようなスキームのおかげで他にどのようなボーナスを得ることができますか:



  1. ライブ移行では、ダウンタイムや切断なしで、異なるネットワーク上のサーバー間および異なるサイトのサーバー間でコンテナーを転送できます。
  2. 同じアドレスを持つ「スペア」コンテナが別のサーバーにあり、より大きなメトリックでアナウンスされている場合、ホットスペアを実装できます。
  3. 前の段落と同様のエニーキャスト、さまざまなプレゼンスの異なるサーバー上のコンテナ、メトリックタイプ1でアドバタイズされる同じアドレスがコンテナに含まれます。その後、トラフィックは「最も近い」アドレス(DHCP / RADIUS / IPTV /プロキシなど)に送られます




PS





PPS / updネットワークとサーバーに異なるコマンドが関係している場合、このスキームを使用することは許可されません。 これは、1番目と2番目を処理する管理者にとって、かなり便利な「ハック」です。



All Articles