跳转到内容

集群手册/网络

来自维基教科书,开放世界中的开放书籍

集群中的节点需要连接起来以共享信息。为此,每个节点都成为一个主节点(头节点)或服务器节点。一旦配置确定,就必须设置 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_squashroot 用户提供写权限(否则 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 请注意,在配置阶段,节点应该只有对互联网的访问权限。在正常运行中,这将是一个安全风险。

华夏公益教科书