集群手册/网络
集群中的节点需要连接起来以共享信息。为此,每个节点都成为一个主节点(头节点)或服务器节点。一旦配置确定,就必须设置 DHCP 和 DNS 的网络配置。
DHCP - 动态主机配置协议 - 允许服务器为客户端分配网络配置。它的优点是,客户端不需要进行任何手动配置。在构建具有数百个客户端的庞大互连系统时,任何手动配置都会很快变得很麻烦。但是,服务器必须在每个客户端上设置,并且重要的是,此分配是唯一的。DNS - 域名系统 - 将主机名或域名解析为 IP 地址。这使得连接更容易阅读和理解,因为它将各种信息与域名相关联。所有这些都需要共享的物理网络。
主节点/服务器
对于主节点,必须配置两个文件。一个位于 /etc/network/interfaces
- 清单 6.1 主节点配置
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp #Externe Addresse fuer Master
auto eth1
iface eth1 inet static #IP-Addresse fuer das interne Netz
address 10.0.x.250
netmask 255.255.255.0
address
显示本地网络。用点分隔的前三个数字是网络前缀。网络掩码定义了网络前缀的大小,如下一行所示。这两个规范最终定义了本地网络上的哪些 IP 地址以及哪些被其他网络上的路由器识别。所有 255
掩码部分的 IP 地址构成网络前缀。所有想要包含在本地网络中的设备必须具有相同的网络前缀。在我们的示例中,它以 10.0.
开头。随后的 x 代表本地网络的编号,如果存在多个本地网络的话。所有可以归类到本地网络 1 的单元必须具有网络前缀 10.0.1
。第四个条目用 0 掩码,描述了本地网络上设备的编号,介于 0 到 255 之间。服务器的方便编号是 250
,因为它比较大,因此很容易与客户端区分开来(除非有超过 250 个客户端要注册)。当然,它可以是任何其他允许的数字。
必须为服务器配置的第二个文件位于 /etc/hosts
- 清单 6.2 主节点主机配置
127.0.0.1 localhost
#Mapping IP addresses to host names. Worker and Master / Clients and Server
10.0.1.1 worker1
10.0.1.2 worker2
10.0.1.3 worker3
10.0.1.4 worker4
10.0.1.250 master
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
此时将输入名称解析。与上面的示例不同,对于 x
,选择了 1
。重要的是不要忘记输入主节点。
必须删除现有的行 127.0.1.1 ...
- 对于主节点和工作节点。
工作节点/客户端
必须为工作节点和客户端修改受影响的文件。通常,DHCP 服务器会处理这些问题。但是,如果无法访问外部网络或缺少权限,则可能会导致重大问题。在最坏的情况下,您必须手动输入静态 IP 条目。
/etc/network/interfaces
- 清单 6.3 工作节点配置
auto lo
iface lo inet loopback
#IP Addresse worker. Nameserver IP Addresse -> Master
auto eth0
iface eth0 inet static
address 10.0.1.1
netmask 255.255.255.0
dns-nameservers 10.0.1.250 #[,10.0.x.weitere_server ]
名称和 IP 地址必须与主节点的记录相匹配。
/etc/hosts
- 清单 6.4 工作节点主机配置
127.0.0.1 localhost
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
要检查一切是否正常,您可以检查机器是否可以互相 ping 通
$ ping master
不仅需要促进客户端和服务器之间的通信,还需要提供对共享数据的访问。这可以通过 NFS - 网络文件系统 来配置。如果需要,数据不会被传输。读操作就像数据在自己的内存中一样(当然,具有不同的访问时间)。
主节点/服务器
首先必须安装 NFS 内核服务器包
$ sudo apt-get install nfs-kernel-server
在 /etc/
中,必须配置以下文件 exports
/home 10.0.1.0/24(rw,no_subtree_check,no_root_squash)
在此示例中,设置了三个选项
rw
为网络提供读写权限no_subtree_check
确保释放属于root
的文件;提高传输速度,因为当用户请求文件时,不会检查每个子目录(如果整个文件系统已解锁,则很有用)no_root_squash
为root
用户提供写权限(否则root
将被映射到nobody
用户以确保安全)
前面和括号内不能有空格。
工作节点/客户端
首先必须安装 NFS 通用包
$ sudo apt-get install nfs-common
在 /etc/
中,必须按如下所示配置以下文件 fstab
master:/home /home nfs rw,auto,proto=tcp,intr,nfsvers=3 0 0
有关各个选项的含义,请参考 man fstab
。
如果客户端没有互联网访问权限,因为内部网络不提供它,您必须在主节点/服务器上激活路由,因为它只有与外部网络的连接。参见第 6.3 节
安装后,需要更新状态
$ sudo exportfs -ra
,其中
-r
: 导出所有目录。此选项将/var/lib/nfs/xtab
与/etc/exports
同步。从/etc/exports
中删除的/var/lib/nfs/xtab
中的条目。此外,还会删除内核表中所有不再有效的条目。-a
: (取消)导出所有目录(在exports
中列出的)。
应该重启 NFS 服务器
$ sudo /etc/init.d/nfs-kernel-server restart
主节点
路由 确定消息流在网络中的整个路径。转发 描述单个网络节点的决策过程,它通过该节点将消息转发给其邻居 </ref> 我们的目标是通过服务器节点为节点提供对互联网的访问,这些节点只能在本地网络上访问(因此可以在客户端上下载软件包)。
以下行需要插入到 /etc/sysctl.conf
中以激活 IP 转发
net.ipv4.ip_forward=1
此外,必须在外部接口 eth0 上激活 NAT。因此,将以下行添加到 /etc/rc.local
(通过退出 0)。
工作节点/客户端
这里,必须将主节点设置为网关
gateway 10.0.x.250
应该重启硬件。在默认设置下,将挂载 /home
目录,否则您可以手动进行
$ sudo mount /home
请注意,在配置阶段,节点应该只有对互联网的访问权限。在正常运行中,这将是一个安全风险。