两台电脑上的虚拟机之间相互通信

时间:2024-03-18 11:49:52

我们的目标是想要在两个真实节点上的虚拟机之间实现互相通信。

我是在一台电脑上用VMware部署两个虚拟节点,一个master,一个node,组成一个小型kubernetes集群架构。现在的问题是,我想要在其中一个虚拟节点上搭建一个数据库供其他真实节点及真实节点上安装的虚拟机来访问,从而获取到数据库虚拟节点上的数据。

需求介绍完了,来说一下我的环境:

两台真实节点,每个节点通过VMware建立两个虚拟节点;

真实节点上的系统统一为Win7;

每个虚拟节点上的系统为中标麒麟5(基于centos7);

一个交换机;

若干网线。

以下纯干货部分分为两部分,这样比较清晰:

一、

1.用交换机组件局域网就不用多说了,非常简单,拔掉外网线,用每个网线连接一台节点即可。

2.关闭防火墙。因为不同主机间的相互连接访问很可能被防火墙阻断,建议关闭。

3.网线接好后需要进行IP设置。

1)打开网络和共享中心

 两台电脑上的虚拟机之间相互通信

 

 

2)右键“本地连接”,打开属性


两台电脑上的虚拟机之间相互通信 

(3)设置自动获取IP地址,这里一定要选择“自动获得IP地址”、“自动获得DNS服务器地址”,因为我最初是用“使用下面的IP地址”将两台节点设定固定IP,并设置到同一个网段来相互访问,确实可以相互ping通,但是延迟很高,而且无法通过Web来访问彼此的服务。

(4)IP设置好以后,查看两台真实节点的本机IP。


两台电脑上的虚拟机之间相互通信 

本机分得的IP地址为:169.254.110.199

(5)ping一下另一台主机的ip测试局域网是否组建成功。若如下显示,则表示建立成功。

 两台电脑上的虚拟机之间相互通信


二、要使得虚拟机之间互通,就必需要涉及到端口映射的问题。端口映射的目的是在宿主机上可以访问到本机虚拟机上的服务,然后再通过我们构建的局域网让其他节点访问我们本机的端口,这样就间接的访问到了虚拟机上的服务(可能有点绕)。这里需要对虚拟机的上网模式有简单的了解,分为三类:桥接模式,NAT模式,仅主机模式。

(1)桥接模式,在这种模式下,虚拟机相当于与所在物理机同一IP段的独立计算机,与局域网内的其他计算机是没有区别的;(2)NAT模式,这种模式下,虚拟机与所在的物理机单独组成了一个新的局域网,他们共享接入物理机的IP段;(3)host—only模式,在这种模式下物理机下所属的所有虚拟机共同组成一个局域网,他们与物理机之间是断开的,也就是说物理机和虚拟机之间是无法访问的。

本机都选用的NAT模式连接网络。

了解以上内容后,端口映射其实很简单,分为以下几个步骤:

(1)如图,点击VMware中的编辑,选择“虚拟网络编辑器”;

(2)选择VMnet8;

(3)选择NAT设置

两台电脑上的虚拟机之间相互通信 

 

4)点击“添加”


两台电脑上的虚拟机之间相互通信

 

(5)需要填写以下三项:

 两台电脑上的虚拟机之间相互通信


此处主机端口需要自己开放,开放步骤不会的可以百度一下,特别简单。在部署了服务的虚拟机上通过“ifconfig”命令获取虚拟机IP并填写到此处,然后填写虚拟机上此服务的端口号,点击“确定”->“确定”->“应用”。

(6)如果以上步骤都操作成功,这时便可以通过“宿主机IP+主机端口”来访问虚拟机上的服务了,测试如下:

 两台电脑上的虚拟机之间相互通信

我这里是访问虚拟机上的一个镜像库。在其他局域网内的主机以及其他主机上安装的虚拟机也通过同样的IP+port就可以访问到虚拟机上的服务了。