虚拟机集群网络配置
搭建集群其实就是配置网络,本文以 VMware 和 CentOS 为例,其他的虚拟机软件和发行版设置大体相同
一般虚拟机网卡有三种选择:
- 桥接模式:
把虚拟机网络部署到和宿主机同级局域网下,路由是宿主机连接的物理路由器,有外网 - 仅主机模式:
仅在虚拟机和宿主机之间搭建局域网,没有外网 - NAT 模式:
在仅主机模式的基础上做了 NAT 映射,既有内网也有外网,相当于把宿主机当作软路由
为了让集群内每一台机器都有静态的内网ip,又有外网访问权限,同时又不受不同物理路由器的 DHCP 策略影响,NAT 模式显然是最好的办法。下面就来配置 NAT 模式的虚拟网卡和虚拟机静态 ip
虚拟机的集群网络配置分两个方面:
虚拟网卡配置
首先 DHCP 模式保留,这样的话不做任何配置的虚拟机连接到这个网络应该会有动态的内网 ip 和外网权限,点击DHCP 设置也可以做一些更细化的调整,比如动态 ip 池范围和租期等等
点击 NAT 设置可以看到一些必要的如子网网段、网关 ip 之类的信息,后面在虚拟机中配置静态 ip 就需要这些信息,可以看到网关是 192.168.116.2,宿主机的 ip 是192.168.116.1
虚拟机网络配置
CentOS7 的网络配置文件修改如下:
sudo nano /etc/sysconfig/network-scripts/ifcfg-ens32
其中ens32
是你的网卡设备在系统中的名称,使用ip addr
命令可以查看
修改BOOTPROTO
字段值为static
,该字段默认应该是dhcp
如果ONBOOT
字段值不是yes
的话,改为 yes,开机自动分配
对于我的node1
节点,我给他分配的 ip 是192.168.116.111
,后面分配node2
的 ip 为192.168.116.113
,node3
的 ip 为192.168.116.113
,修改方式同理
在文件末尾添加静态 ip 信息:
IPADDR=192.168.116.111
NETMASK=255.255.255.0
GATEWAY=192.168.116.2
DNS1=192.168.116.2
注意这里的 GATEWAY 和 DNS1 必须要配置,如果虚拟网卡配置了自动检测 DNS(默认配置),DNS1 填网关 ip 就行,否则请自行填写可用的 DNS 服务器 ip。如果不配置这两项的话,network 服务并不会为我们自动配置,之前没法访问外网的原因就在这里
然后重启网络服务
sudo service network restart
这时使用ip addr
命令就可以看到生效的静态 ip 了
[syf@node1 ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:ca:ff:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.116.111/24 brd 192.168.116.255 scope global noprefixroute ens32
valid_lft forever preferred_lft forever
inet6 fe80::5ede:1429:3e4f:1f29/64 scope link noprefixroute
valid_lft forever preferred_lft forever
测试一下外网也畅通
[syf@node1 ~]$ ping t.cn
PING t.cn (116.211.169.137) 56(84) bytes of data.
64 bytes from 116.211.169.137 (116.211.169.137): icmp_seq=1 ttl=128 time=14.7 ms
64 bytes from 116.211.169.137 (116.211.169.137): icmp_seq=2 ttl=128 time=15.7 ms
64 bytes from 116.211.169.137 (116.211.169.137): icmp_seq=3 ttl=128 time=16.2 ms
^C
--- t.cn ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 14.754/15.598/16.251/0.625 ms
最后修改一下 hosts 文件,映射内网 ip:sudo nano /etc/hosts
增加以下内容
192.168.116.111 node1
192.168.116.112 node2
192.168.116.113 node3
同样的把集群其他机器也配置一下
这样的话集群间就可以通过node1
、node2
、node3
这样的别名进行通讯了,后面如果要重新布局网络的话只用在集群间同步新的 hosts 文件即可