で、すでにホスト間でドッキングウィンドウ間の通信を開くために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、同じトークン、ブロックされた場合は、ファイアウォールをチェック