搭建集群其实就是配置网络,本文以 VMware 和 CentOS 为例,其他的虚拟机软件和发行版设置大体相同

一般虚拟机网卡有三种选择:

  • 桥接模式:
    把虚拟机网络部署到和宿主机同级局域网下,路由是宿主机连接的物理路由器,有外网
  • 仅主机模式:
    仅在虚拟机和宿主机之间搭建局域网,没有外网
  • NAT 模式:
    在仅主机模式的基础上做了 NAT 映射,既有内网也有外网,相当于把宿主机当作软路由

Snipaste_2019-06-30_19-36-24.jpg

为了让集群内每一台机器都有静态的内网ip,又有外网访问权限,同时又不受不同物理路由器的 DHCP 策略影响,NAT 模式显然是最好的办法。下面就来配置 NAT 模式的虚拟网卡和虚拟机静态 ip

虚拟机的集群网络配置分两个方面:

虚拟网卡配置

首先 DHCP 模式保留,这样的话不做任何配置的虚拟机连接到这个网络应该会有动态的内网 ip 和外网权限,点击DHCP 设置也可以做一些更细化的调整,比如动态 ip 池范围和租期等等

Snipaste_2019-06-30_19-50-51.jpg

点击 NAT 设置可以看到一些必要的如子网网段、网关 ip 之类的信息,后面在虚拟机中配置静态 ip 就需要这些信息,可以看到网关是 192.168.116.2,宿主机的 ip 是192.168.116.1

Snipaste_2019-06-30_19-52-11.jpg

虚拟机网络配置

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.113node3的 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

同样的把集群其他机器也配置一下

这样的话集群间就可以通过node1node2node3这样的别名进行通讯了,后面如果要重新布局网络的话只用在集群间同步新的 hosts 文件即可

标签: linux, 集群, 网络

添加新评论