一 建立SSH连接(无密码登陆)

1 SSH连接的简单介绍

SSH 为 Secure Shell 的缩写,中文翻译为安全外壳协议,建立在应用层,是一种远程连接安全协议。传统的telnet,pop,ftp都能够实现类似的功能,但是安全性上来说不足,因为他们都是明文传输,而SSH是密文传输,能够有效防止DNS欺骗,网络信息的拦截等等。

2 为什么要建立SSH连接

因为我建立集群的目的就是为了高性能的计算,这里我用了MPI,采用的是计算机之间的相互通信,所以必然涉及到计算机的访问登陆问题,所以我们建立集群计算机之间的SSH连接让他们能够无密码登陆,保证通信的快速性。

3具体的建立SSH连接步骤(都在虚拟机中操作)

1配置网卡

在ubuntu上可以通过图形界面进行设置,也可以通过指令来修改,大致模式如下:

sudo vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address 192.168.1.100

netmask 255.255.255.0

gateway 192.168.1.1

sudo /etc/init.d/networking restart//重启服务

就是简单的修改配置文件来修改参数,最后一定要重启网络服务。按照此方式多配置几台虚拟机,然后测试通信。你可以通过自动获取的方式获取物理机在虚拟区域的IP,然后用作其他虚拟机的默认网关。接下来就是修改主机名

sudo vi /etc/hostname //修改本机的主机名

sudo vi /etc/hosts //地址解析,其实就是集群中所有主机的主机名与IP地址的对应

例如  node0 192.168.1.100

node1 192.168.1.101

host中的内容模式(主机名:端口 IP)SSH的默认端口是22

2创建互信的SSH连接

1)安装SSH,指令如下

sudo apt-get install ssh

2)首先理解下SSH的无密码连接机制,其实就是利用公钥和密钥来实现互相的无密码访问,所以接下来就是对公钥密钥的配置。

第一步 ssh-keygen -t rsa -P ' '//首先生成公钥和密钥对,这里的' '表示密码为空,这样就在你的个人用户目录下生成了.SSH文件夹,里面有id_rsa和id_rsa.pub,分别是公钥和密钥。

第二步 接下来就是关键的一步,就是公钥的传送。公钥需要给另一个能让你访问的机器下,因为公钥能够识别用户是谁。复制方法采用的是scp复制,这是一种远程复制方法需要密码的辅助。

scp .ssh/id_rsa.pub  目标主机名:/home/chenlb/id_rsa.pub解释下为什么是机器名,因为你在hosts文件中已经定义了目标主机名与ip的对应关系,所以可以运用主机名,这是远程传输,自然开始需要密码。

第三步 目标主机把从本机复制的id_rsa.pub(公钥)添加到.ssh/authorzied_keys文件里(所有的目标机器都必须装SSH协议),指令如下所示:cat id_rsa.pub >> .ssh/authorized_keys(这是目标机上的)。然后需要设置authorized_keys的权限,因为这个验证文件也需要给访问的机器权限才能完成之后的验证:chmod 600 .ssh/authorized_keys。

这样就完成对目标主机的无密码访问,但是互相访问就需要在调换一下位置再设置一下,步骤重复。

再次我说下对称加密解密的使用原理以及机制(RSA),我们就简单的用A主机和B主机来描述。A主机将公钥给了B主机,这就意味着A主机用自己的密钥访问B主机时,B主机可以用A主机的公钥来解密,从而知道是A访问自己,所以允许A访问。

二 创建NFS(网络文件系统)

由于mpi需要在每个机器中都安装,如果每个机器都装一次那样就太麻烦了,所以我们创建一个共享的网络文件系统,这样就可以修改一次全局修改,非常方便的使用。

1 安装NFS sudo apt-get install nfs-kernel-server nfs-common

2 在用户主目录下创建共享文件夹 mkdir sharedarea

3 修改sharedarea的所属权限,刚开始属于root,所以需要改为用户的

sudo chown 用户名:用户名 / home/用户名/sharedarea

4 设置下能访问的网段,即编辑/etc/exports文件。

sudo vi /etc/exports

添加/home/abc/cluster *(rw,sync,no_root_squash)

5 重启服务

sudo /etc/init.d/rpcbind restart

sudo /etc/init.d/nfs-kernel-server restart

6 其他机器挂载

首先其他机器得先安装NFS,和第一步一样,然后创建相同的文件夹,挂载命令如下:sudo mount -t nfs 第一个的主机名:/home/用户名/sharedarea sharedarea

切记,如果系统重启后则需要重新挂载否则产生变化就无法同步了,切记切记

三 安装MPI

1 首先来一个 sudo apt-get install mpich,不管啥都有了。然后去http://www.mpich.org/download下载一个稳定的linux版本的mpich,解压到共享文件夹。(tar xfz mpich-3.2.tar.gz 生成mpich-3.2文件夹)

2 由于默认安装在/usr/local/bin,所以需要改变一下安装目录

1)./configure  --prefix=/home/love/cluster/mpich3.1 --disable-f77 --disable-fc

2)make

3)make install

3修改环境变量

这里肯定修改的是用户的环境变量

sudo vi .bashrc

•在.bashrc

文件的末尾添加:

PATH=/home/用户名/sharedarea/mpich3.2/bin:$PATH

export PATH

然后source .bashrc 重新刷新环境变量

这样MPI就在集群上完美安装。

四 编译运行

到了最后一步了,其实也是检验你是否成功的一步了,这里我们用到两个命令,mpicc和mpiexec,其实很简单

mpicc -g xx.c -o xx

mpiexec -np x(这是线程数) -f y(这是和hosts类似的文件,里面放着集群的文件名,注意所有的文件地址)  ./目标文件名

接下来就大功告成了,享受一下集群的乐趣吧!

转载于:https://www.cnblogs.com/sunliwang/p/6544495.html

Linux下搭建mpi集群(ubuntu下用虚拟机测试)相关推荐

  1. windows下搭建mysql集群_Windows下搭建MySQL集群

    本文将讨论在Windows下搭建MySQL集群的步骤和搭建过程中应当注意的问题. 由于机器数量和性能有限,搭建环境为一台宿主机(IP:10.200.178.191),一台虚拟机(IP:10.200.1 ...

  2. ubuntu下搭建redis集群

    前言 ubuntu下搭建redis集群步骤 步骤 准备工作 redis的集群管理工具依赖于ruby,先安装 sudo apt-get install ruby 上传redis和ruby的接口配置文件 ...

  3. linux下搭建zookeeper集群

    linux下搭建zookeeper集群 1.准备 1.下载zookeeper压缩包 (注:下载3.4.14版本,3.5以上运行时会少jar包) 2.系统:centOS7 安装好java环境 3.将压缩 ...

  4. Redis集群搭建(转自一菲聪天的“Windows下搭建Redis集群”)

    配置Redis参考:http://blog.csdn.net/zsg88/article/details/73715947 使用Ruby配置集群参考:https://www.cnblogs.com/t ...

  5. Windows下搭建Tomcat集群的配置详解

    < Windows下搭建Tomcat集群基础入门详解 > 前言 在搭建 < Apache + Tomcat 实现Web服务器集群 > 前我们还需要实现 Tomcat集群实现Se ...

  6. 阿里云环境下搭建HadoopHA集群

    阿里云环境下搭建HadoopHA集群 1. HadoopHA介绍 1.1 hadoop高可用集群的简介 ​ hadoop是一个海量数据存储和计算的平台,能够存储PB级以上的数据,并且利用MapRedu ...

  7. Windwos下搭建MongoDB集群

    文章目录 1.下载MongoDB 2.集群描述 3.构建集群文件目录 4.新建配置文件 5.启动MongoDB服务 6.配置集群 7.集群测试 8.设置密码和开启认证 1.下载MongoDB 去Mon ...

  8. Windows下搭建Redis集群

    一.首先下载好Redis的Windows版本,注意:Redis只有3.0之后的版本才有集群 1.下载好后直接解压,可看到这些目录   2.在解压的目录启动redis-server.exe启动redis ...

  9. Linux服务器搭建Pulsar集群

    目录 1. 准备环境 2. 部署JDK环境(要求版本不低于JDK8) 3. 下载Pulsar最新安装包 4. Zookeeper集群部署 4.1 搭建pulsar集群至少需要三个组件 4.2 创建文件 ...

最新文章

  1. 基于自监督网络的手部静脉无损三维测量
  2. python中fit内参数的类型_Python fit
  3. hdu 4090(搜索+可行性剪枝)
  4. Service Worker 概念简介
  5. [Unity]限制两个物体之间的距离
  6. oracle可以注入吗,ORACLE 注入
  7. LIDAR in Google Earth
  8. 为Unity项目生成文档(一)
  9. GNU make manual 翻译( 一百六十二)
  10. php两个编辑框一个提交按钮,一个表单中的两个提交按钮
  11. css之使用clearfix类清除浮动
  12. C#综合揭秘——细说多线程(下)
  13. stylecloud 自定义蒙版
  14. HTML如何在网页中加一个搜索框,基于html css实现带搜索图标的搜索框功能
  15. CSS+DIV布局中absolute和relative区别
  16. 【算法学习】笨拙的奶牛
  17. 天荒地老修仙功-第六部:Spring Cloud Eureka——服务发现
  18. Python基础 PyCharm如何新建项目
  19. 分组密码以及分组密码的模式
  20. 苹果微信多开_简易版!微信电脑端多开方法!!!

热门文章

  1. Factorial Trailing Zeroes
  2. 【plt显示Tensor转出来的array时的报错】TypeError: Invalid dimensions for image data
  3. 【解决办法】read_csv()第一列作为index
  4. 多线程读取矩阵文件+多线程矩阵乘法(C++实现)
  5. 2.2.6 学习率衰减
  6. Mac 从本地copy项目到服务器
  7. SpringBoot的构造方法中使用@AutoWird注入的类会报错null
  8. Python——接口开发
  9. 【NOI2014】动物园 kmp性质
  10. linux中chmod与chown两个命令详解