实现目标

1、实现共享目录,即slave可以通过nfs访问master的一个目录
2、master可以登录slave的某个账号,操纵其他slave,作为调度中心

准备

设备:

  1. 计算机3台
  2. 交换机1台(有4个LAN端口就行),如果路由器lan口足够可使用路由器
  3. 网线4根
  4. 其他:插排、键盘、鼠标、显示器。。。
    提示
    下文中的user指的是linux登录的用户名,node1、2、3指的是计算机名,一般二者区别在于,打开终端,命令提示符前xxx@yyy,xxx指的用户名,yyy指的计算机名。所以你需要根据差异相应更改!!!
    3台PC依次设置不同的IP地址,如:192.168.1.101,192.168.1.102,192.168.1.103,这个也是一一对应的,即node1的ip为192.168.1.101,其他类比。

修改/etc/hosts

三台主机均执行:sudo vi /etc/hosts 在vi中做同样的更改,即加入下面三行

192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3

注意,内容一定要结合自己的ip和计算机名称。

检查通信

将3台PC分别用网线与任意三个交换机LAN端口相连,用另一根网线连接第四个交换机LAN端口和外部局域网接口。交换机通电后,所有主机应能同时连入局域网。主机之间也可以相互联系。可用"ping 192.168.1.10?"相互测试。
例如:ping 192.168.1.101

安装nfs

下面的内容做出如下假设:node1设为主节点(master),node2与node3设为从节点(slave)。
(node1下)

sudo apt-get install nfs-server

(node2与node3下)

sudo apt-get install nfs-client

创建共享文件夹

在三台主机运行下面的命令:

sudo mkdir /mirror

其中,master的作为分享者,slave的/mirror目录作为挂载点。
在node1上,修改“/etc/exports”文件,

sudo vi /etc/exports

末尾加入

/mirror  *(insecure,rw,async,no_root_squash)

重启nfs:sudo service nfs-kernel-server restart 在node2与node3下,
修改“/etc/fstab”文件,执行:sudo vi /etc/fstab 在末尾加入:

node1:/mirror /mirror nfs

即计算机node1的/mirror目录分享,通过nfs挂载在当前主机的/mirror目录,node1修改为自己计算机名。
最后执行挂载:sudo mount -a 现在,修改共享文件夹所有者为初始用户名 (node1下),命令中user指的master登录的账号:
sudo chown user /mirror

配置ssh免密登录

再作为master的node1,执行:

sudo apt­-get install openssh-server

在node1下,
user指的当前登录的账号,如果只有一个账号,可以不执行下面的命令

su - user

下面开始设置免密登录,执行:

ssh­-keygen ­-t rsa

一路回车后,需要留意创建的目录位置,最好关注一下,enter之后linux干了啥。
下面配置node2,下面的user指node2下登录的用户名,

ssh user@192.168.1.102 mkdir -p .ssh

执行该命令后,提示输入node2下user的密码。
输入登录密码,执行,

cat ~/.ssh/id_rsa.pub | ssh user@192.168.1.102 'cat >> .ssh/authorized_keys'

再次输入刚刚的密码。
现在配置node2,照猫画虎,这里不再阐释

ssh user@192.168.1.103 mkdir -p .ssh

输入登录密码

cat ~/.ssh/id_rsa.pub | ssh user@192.168.1.103 'cat >> .ssh/authorized_keys'

再次输入登录密码

测试

对于第一项指标,可以去slave主机中查看/mirror目录,如果master在/mirror下新建test.txt文件

touch test.txt

可以在slave主机下/mirror目录看到test.txt文件。

对于第二项指标,可以执行

ssh user@ip

user为slave下的一个登录用户,ip为登录的slave主机的ip地址,
执行完后可以执行:

cd ~
pwd

可以发现,master主机工作于slave主机下的home目录,有点神奇。细想一下,win环境都能登录linux,linux之间不也一样么。

关于并行计算

这一点留着慢慢探索,可能使用shell脚本进行任务调度,既然我能登录其他的计算机,就能给他们下任务