私はvirt-install
CentOS 7ホストに2つのCentOS 7仮想マシンを作成しました。仮想マシンが呼び出され、プライベートwebvm
ネットワークでウェブサイトをホストします。別の仮想マシンは、ホストされdatavm
たWebアプリケーションの仮想データベースサーバーとして機能する唯一の目的を持つ仮想データベースサーバーと呼ばれますwebvm
。 datavm
のデータ接続のみを許可しwebvm
、そのデータ接続が物理サーバーボックスで行われるようにネットワークをどのように設定しますか?その間のデータベーストランザクションがローカルネットワークを介して転送され webvm
ないようにしたいと思います。datavm
ブリッジされたネットワークは、ホストオペレーティングシステムを各ゲストオペレーティングシステムに接続しました。
LAN IPとネットワークIPwebvm
があります。一般的なホスティングWebアプリケーションの接続文字列は次のとおりです。 10.0.0.6
datavm
10.0.0.5
webvm
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
正常に動作します。
注:は、/31
IPアドレスをおよびに変更するときにのみ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トラフィックだけがあったら、そうしたことでしょう。
頑張ってください!