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番目を処理する管理者にとって、かなり便利な「ハック」です。

Source: https://habr.com/ru/post/J244151/


All Articles