2つの仮想マシン間でブリッジを作成するには?

2つの仮想マシン間でブリッジを作成するには?

私はvirt-installCentOS 7ホストに2つのCentOS 7仮想マシンを作成しました。仮想マシンが呼び出され、プライベートwebvmネットワークでウェブサイトをホストします。別の仮想マシンは、ホストされdatavmたWebアプリケーションの仮想データベースサーバーとして機能する唯一の目的を持つ仮想データベースサーバーと呼ばれますwebvmdatavmのデータ接続のみを許可しwebvm、そのデータ接続が物理サーバーボックスで行われるようにネットワークをどのように設定しますか?その間のデータベーストランザクションがローカルネットワークを介して転送され webvmないようにしたいと思います。datavm

ブリッジされたネットワークは、ホストオペレーティングシステムを各ゲストオペレーティングシステムに接続しました。

LAN IPとネットワークIPwebvmがあります。一般的なホスティングWebアプリケーションの接続文字列は次のとおりです。 10.0.0.6datavm10.0.0.5webvm

jdbc:mysql://localhost:3306/somedb?autoReconnect=true

localhost何を参照しているかを見ることができますwebvm。接続文字列になるように、10.1.1.xアドレスを使用して新しい2番目のブリッジネットワークを設定する必要がありますjdbc:mysql://10.1.1.1:3306/somedb?autoReconnect=true

私たちが追加する新しいブリッジネットワークコードが何であれ、既存のブリッジネットワークと競合してはいけません。

datavmもしそうなら、あなたとの間に一対一の排他的なデータ接続を確立する方法はwebvm


継続的なアップデート:


@derobertは次のステップを提案します。

1.) Add a second bridge to the host. 
2.) Add a second network interface to webvm, connected to the new host bridge. 
3.) Add a second network interface to datavm, connected to the new host bridge.
4.) Configure the new network interfaces inside each guest.  

これを行うには、次のコマンドを実行してベースラインを取得しました。所有者:

[root@localhost ~]# nmcli con show
NAME               UUID                                  TYPE            DEVICE 
bridge-slave-eno1  c36fd051-cacc-4e91-944f-a98f4fee26ff  802-3-ethernet  eno1   
bridge-br0         d472bc86-0f75-4dd5-bfee-5b8208b3fed2  bridge          br0    
System eno1        abf4c85b-57cc-4484-4fa9-b4a71689c359  802-3-ethernet  --     
vnet1              ea985e89-94fb-403c-af33-7daefb378ca5  generic         vnet1  
vnet0              06deb20d-b0b7-4233-8abc-cbb285165082  generic         vnet0  
[root@localhost ~]# 

その後、内部で以下を実行しました。webvm:

[root@localhost ~]# nmcli con show
NAME  UUID                                  TYPE            DEVICE 
eth0  71bf7ff1-7574-4364-8c83-5878ed30d028  802-3-ethernet  eth0   
[root@localhost ~]# 

その後、内部で以下を実行しました。datavm:

[root@localhost ~]# nmcli con show
NAME  UUID                                  TYPE            DEVICE 
eth0  d976f7ca-ab7f-4fd0-ab2b-6213815bd1a1  802-3-ethernet  eth0   
[root@localhost ~]# 

その後、HOSTで次のコマンドを実行しました。

[root@localhost ~]# nmcli con add type bridge ifname br1
Connection 'bridge-br1' (8b9fd6d9-bcb4-4e1c-85ab-55905d08667e) successfully added.
[root@localhost ~]# nmcli con show
NAME               UUID                                  TYPE            DEVICE 
bridge-slave-eno1  c36fd051-cacc-4e91-944f-a98f4fee26ff  802-3-ethernet  eno1   
bridge-br0         d472bc86-0f75-4dd5-bfee-5b8208b3fed2  bridge          br0    
System eno1        abf4c85b-57cc-4484-4fa9-b4a71689c359  802-3-ethernet  --     
bridge-br1         8b9fd6d9-bcb4-4e1c-85ab-55905d08667e  bridge          br1    
vnet1              ea985e89-94fb-403c-af33-7daefb378ca5  generic         vnet1  
vnet0              06deb20d-b0b7-4233-8abc-cbb285165082  generic         vnet0  
[root@localhost ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
virsh # list
 Id    Name                           State
----------------------------------------------------
 2     public4-centos7                running
 4     data-centos7                   running

virsh # attach-interface data-centos7 bridge br1
Interface attached successfully

virsh # attach-interface public4-centos7 bridge br1
Interface attached successfully

virsh # 

その後、各仮想マシンに個別にログインし、ブリッジされたネットワークの新しい接続表示名はWired connection 1次のとおりです。

ネットワーク仮想マシンでは:

[root@localhost ~]# nmcli con show
NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  44f1f791-0d86-4587-8a2d-48dfa217ee99  802-3-ethernet  ens7   
eth0                71bf7ff1-7574-4364-8c83-5878ed30d028  802-3-ethernet  eth0   
[root@localhost ~]# nmcli con modify 'Wired connection 1' ipv4.addresses "10.1.1.2"

データ仮想マシンでは:

[root@localhost ~]# nmcli con show
NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  448101d7-1f8f-4b78-ad90-7efd5be23b08  802-3-ethernet  ens7   
eth0                d976f7ca-ab7f-4fd0-ab2b-6213815bd1a1  802-3-ethernet  eth0   
[root@localhost ~]# nmcli con modify 'Wired connection 1' ipv4.addresses "10.1.1.1"  

ただし、ping 10.1.1.1失敗web vm(ターゲットホストに接続できません)して再び失敗しping 10.1.1.2ましたdata vm(ターゲットホストに接続できません)。

web vm、内容は次のとおりですvi /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1

HWADDR=52:54:00:8F:3B:14
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=44f1f791-0d86-4587-8a2d-48dfa217ee99
ONBOOT=yes
IPADDR=10.1.1.2
PREFIX=16
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

data_vm、内容は次のとおりですvi /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1

HWADDR=52:54:00:1F:FE:27
TYPE=Ethernet
BOOTPROTO=dhcp
IPADDR=10.1.1.1
PREFIX=32
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=448101d7-1f8f-4b78-ad90-7efd5be23b08
ONBOOT=yes

@derobertが提案した内容を達成するには、何を入力する必要がありますか? すべてのデータトラフィックは物理ボックス内に保持する必要があるため、新しいブリッジには新しいブリッジでのみ使用されるdatavmとwebvmの新しいIPアドレスを含める必要があります。

@garethTheRedのコメントに基づいて、次のように入力してip route取得しました。web vm

[root@localhost network-scripts]# ip route
default via 10.0.0.1 dev eth0  proto static  metric 100 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.6  metric 100 
10.1.1.0/30 dev ens7  proto kernel  scope link  src 10.1.1.2 
10.1.1.2/31 dev ens7  proto kernel  scope link  src 10.1.1.2  metric 100 
169.254.0.0/16 dev ens7  scope link  metric 1003 
[root@localhost network-scripts]# 

その後、入力して次のようにip routeなりdata vmました。

[root@localhost network-scripts]# ip route
default via 10.0.0.1 dev eth0  proto static  metric 100 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.5  metric 100 
10.1.1.0/31 dev ens7  proto kernel  scope link  src 10.1.1.1  metric 100 
10.1.1.0/30 dev ens7  proto kernel  scope link  src 10.1.1.1 
169.254.0.0/16 dev ens7  scope link  metric 1003 
[root@localhost network-scripts]# 

ifcfg-*回答のファイルを6行に減らすとsystemctl restart network。私の考えでは、これが議論hardwareや議論のためであると思いますuuidが、それは単なる推測です。ifcfg-*@garethTheRedの編集内容と上記の追加パラメータを含むようにファイルを元に戻すと、systemctl restart networkエラーなしで実行されますが、pingは失敗します。

答え1

これには2つの理由があります。

考えられる原因の1つは、プライベートネットワークを構築した方法(ホストのブリッジを使用)です。を使用して設定する方が安全で簡単ですvirt-manager。ホストがCLIのみをサポートしている場合は、リモートデスクトップ/ノートブックにそれをインストールし、SSHを介してホストに接続します。

インストール後にハイパーバイザーに接続し、リスト内の名前を右クリックして[詳細]を選択します。 [仮想ネットワーク]タブの[+]ボタン(左下)をクリックして新しいネットワークを追加できます。ウィザードはプロセスを案内しますが、IPv4およびIPv6アドレスのオプションをオフにし(ポイントツーポイントリンクなので必要ありません)、[プライベートネットワーク]ラジオボタンを選択します。ウィザードを続行して終了します。

コマンドラインに専念している人なら、virsh net-defineコマンドラインインターフェイスを使用して上記のタスクを実行できます。次の例のようにXMLファイルを作成します(未使用のブリッジ名 - ブリッジ名を一覧表示するvirbr2ために使用されます)。brctl show

<network>
    <name>private</name>
    <bridge name="virbr2" />
</network>

次に、次のようにインポートします。

# virsh net-define <XML filename>

上記の作業が完了したら、この新しいプライベートネットワークを使用するように各仮想マシンを編集できます。この内容を適用するには、仮想マシンを再起動する必要があります。 VM構成を編集したら、各VMにログインし、OPの関連IP詳細を使用してOSを構成できます。しかし、まず読んでください...

第二に、新しいインターフェイスを指す2つの仮想マシン間にパスはありません。別の状況は、プレフィックスでIPアドレスを設定したためです/32

接続を編集するときは、書式設定プレフィックスを使用してくださいa.b.c.d/p。それ以外の場合は、プレフィックスがない場合のデフォルト値は次のとおりです/32

# nmcli con edit "Wired connection 1"
nmcli> set ipv4.addresses 10.1.1.1/30
nmcli> save
nmcli> quit
# systemctl restart network

ネットワークを手動で構成することもできます。

NM_CONTROLLED=no
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.1.1.1
PREFIX=30

他の仮想マシン()で同様のプロセスを実行すると10.1.1.2/30正常に動作します。

注:は、/31IPアドレスをおよびに変更するときにのみ10.1.1.0使用できます10.1.1.1。範囲の最初のアドレスは通常ネットワークアドレス用に予約されており、最後のアドレスはブロードキャスト用に使用されているため、これは問題を引き起こす可能性があります。には2つのアドレスしかないため、/31ホストが使用するアドレスはありません。これに固執するのが最善です/30。これにより、4つのアドレス(2つは予約されており、2つはホスト用)が提供されます。

答え2

別のブリッジに接続する場合は、異なるサブネット上に異なるIPアドレスを提供する必要があることをご存知ですか? 1 台のコンピュータでのみトラフィックを許可し、プライマリ ブリッジを維持するようにファイアウォール ルールを設定するのが最善です。

それ以外の場合は、virt-manager仮想マシンのネットワーク設定を構成し、デフォルトの自動管理ブリッジの代わりに指定したインターフェイスを有効にし、/ etc / network / interfacesを手動で編集して、この目的のために特別にブリッジインターフェイスを作成する必要があります。

これはXen用に手動で設定したブリッジです。

auto xenbr0
iface xenbr0 inet static
        bridge_ports em2
        address 10.1.1.8
        netmask 255.255.255.0
        network 10.1.1.0
        broadcast 10.1.1.255
        gateway 10.1.1.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8

答え3

さまざまな方法でこれを実現できますが、サーバー間のデータフローには2番目のネットワークと2番目のブリッジインターフェイスが必要になります。

サーバーごとに2つのNICがあると思います。 1 つは一般アクセス用、もう 1 つはサーバー間アクセス用です。このネットワークに異なるIPアドレス範囲を使用する場合は、例外なしで互いに通信できる必要があります。

新しいブリッジの設定に問題があり、より簡単な設定が必要な場合は、別のIPアドレス範囲を使用する既存のNICにサブインターフェイスを追加してみてください。 LANトラフィックだけがあったら、そうしたことでしょう。

頑張ってください!

関連情報