ドッカーオーバレイネットワーククロスホスト通信 - ネットワークを開くために使用(OVS)

で、すでにホスト間でドッキングウィンドウ間の通信を開くために4つの方法があると述べました。
この記事では、第2の共通のアプローチを説明します。
openvswitchオープンネットワークを使用すると、主流の仮想化技術である:
利点は以下のとおりです。

  • 柔軟
  • 既存の物理ネットワークに関する要件ありません
  • 業界の主流

不利な点は以下のとおりです。

  • ソフトウェアパッケージの劣化性能
  • 複雑さの比較的高いです
  • 難易度のトラブルシューティングの高度
    ネットワーク図:

         ASは、各ホスト・OVSのブリッジBR0を作成、見ることができ、上記容器ブリッジドッカーBR0におけるネットワークカード。この場合、同等BR0の代わりに、元のロールのdocker0ブリッジは、外部のネットワークホストのコンテンツへの相互運用性とアクセスを実現します。
         ホストごとに、OVSポートBR0及びOVSインタフェース(タイプはGREである)を作成し、別の物理ホストにGRE REMOTE_IPを設定。BR0は、クロスホスト接続を実現します。関連する容器は、アップ接続することができます。
    添加:
    今、ホストOVS横切って容器ベースの通信は、2つのモードを有している:
         1、GRE
         2、VXLAN
         ウェイそのVXLAN利点:もしGRE VXLANまたは「ケーブル」として、その後、二つ以上のホストのために、等長い線の「ケーブル」を連動2ほどはhostA、hostBで及びHOSTC、ホスト上記容器。hostAのがhostBで添付仮定、hostBでは、次いで、hostAの上HOSTC天然容器上の容器がhostBでによって発見することができ、HOSTCが取り付けられています。GREのために、3つのホストに2つずつ接続されている、そしてホストクラスタは非常に面倒です追加。

環境の準備:
ドッキングウィンドウのcentos7機で2を、確保しようとしているドッキングウィンドウの同じバージョン

* 192.168.0.124
* 192.168.0.121

実験:
1、CentOSのは、何のOVS rpmパッケージをデフォルトでないため、自身のダウンロードソースパッケージの生産を必要とします。

wget http://openvswitch.org/releases/openvswitch-2.5.0.tar.gz

2、必要な依存関係の環境をインストールします。取得するソースをベース。

yum -y install openssl-devel gcc make python-devel openssl-devel kernel-devel graphviz
kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool

3、解凍

tar xf openvswitch-2.5.0.tar.gz .

ビルドディレクトリを作成します。4.

mkdir -p ~/rpmbuild/SOURCES

5、コンパイラ:

cp openvswitch-2.5.0.tar.gz rpmbuild/SOURCES/
rpmbuild -bb --without check ~/openvswitch-2.5.0/rhel/openvswitch.spec

6、コンパイル済みのRPMパッケージを参照してください。

[root@localhost ~]# ls rpmbuild/RPMS/x86_64/
openvswitch-2.5.0-1.x86_64.rpm  openvswitch-debuginfo-2.5.0-1.x86_64.rpm

7、openvswitchインストール

rpm -i openvswitch-2.5.0-1.x86_64.rpm

8、また、ソフトウェアをインストールするために別のマシンにコピーされた
9を、サービスを開始します。

systemctl start openvswitch

10、ブリッジ管理ツールをインストールします

yum install bridge-utils -y

11、docker0にBR0ブリッジを追加し、ネットワークを構成します。

[root@localhost ~]# ovs-vsctl add-br br0

次のコマンドを操作するホストの両方が他のメインフレームREMOTE_IP書かれているので、容器を通る流れがトンネルOVSを通って流れること12、

[root@localhost ~]# ovs-vsctl add-port br0 gre1 -- set interface gre0 type=gre option:remote_ip=192.168.0.121

docker0に13、BR0バインド

[root@localhost ~]# brctl addif docker0 br0

14、

[root@localhost ~]# ip  link set dev br0 up
[root@localhost ~]# ip link set dev docker0 up
[root@localhost ~]# iptables -t nat -F ; iptables -F

図15に示すように、二つのホストは、上記構成の実装であるIPアドレスを確認します。
16、ルートを追加:
192.168.0.124が追加されました:

ip route add 172.17.0.0/16 dev docker0
192.168.0.121添加:
ip route add 172.20.0.0/16 dev docker0

17、テスト:
コンテナを実行する各二つのホスト。

docker run -it --rm busybox
/ # ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=63 time=0.945 ms
docker run -it --rm busybox
/ # ping 172.20.0.2
PING 172.20.0.2 (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: seq=0 ttl=63 time=0.973 ms
64 bytes from 172.20.0.2: seq=1 ttl=63 time=0.508 ms

18、同じトークン、ブロックされた場合は、ファイアウォールをチェック

公開された36元の記事 ウォンの賞賛3 ビュー7989

おすすめ

転載: blog.csdn.net/qq_41547105/article/details/104401492