Linux下搭建mpi集群(ubuntu下用虚拟机测试)
一 建立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类似的文件,里面放着集群的文件名,注意所有的文件地址) ./目标文件名
接下来就大功告成了,享受一下集群的乐趣吧!
Linux下搭建mpi集群(ubuntu下用虚拟机测试)的更多相关文章
- Linux下搭建tomcat集群全记录(转)
本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...
- Linux下搭建tomcat集群全记录
(转) Linux下搭建tomcat集群全记录 2011-10-12 10:23 6133人阅读 评论(1) 收藏 举报 tomcatlinuxapacheinterceptorsession集群 1 ...
- Windows下搭建Redis集群
Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...
- Redis集群搭建(转自一菲聪天的“Windows下搭建Redis集群”)
配置Redis参考:http://blog.csdn.net/zsg88/article/details/73715947 使用Ruby配置集群参考:https://www.cnblogs.com/t ...
- Windows下 搭建redis集群
Windows下搭建redis集群教程 一,redis集群介绍 Redis cluster(redis集群)是在版本3.0后才支持的架构,和其他集群一样,都是为了解决单台服务器不够用的情况,也防止了主 ...
- windows环境下搭建Redis集群
转载请注明出处,原文章地址: https://www.cnblogs.com/tommy-huang/p/6240083.html Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Red ...
- 手把手教你搭建FastDFS集群(下)
手把手教你搭建FastDFS集群(下) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u0 ...
- Windows下搭建REDIS集群
Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...
- Windows及Linux环境搭建Redis集群
一.Windows环境搭建Redis集群 参考资料:Windows 环境搭建Redis集群 二.Linux环境搭建Redis集群 参考资料:Redis Cluster的搭建与部署,实现redis的分布 ...
随机推荐
- Java之路——名词解释(一)
一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...
- 初始化css样式的原因
不同的浏览器对有些标签属性的默认值是不同的,如果没有做初始化处理,往往会出现不同浏览器页面表现的差异
- Android开发10:传感器器及地图相关应用
前言 啦啦啦~各位小伙伴们好~经过这一学期的Android知识的学习,我们学到了很多和Android开发相关的知识,这一学期的学习也要告一段落了. 一起进入我们今天的相关内容~这次我们将一起学习使用 ...
- 在Angular中,如果权限值是异步请求所得,如何将其设置为HTTP请求头的Authorization?
遇到此问题的背景:项目需要实现单点登录,在前后端分离的前提下,前台如何保存token值成为了一个问题.想到的解决方案是,将token值统一存到一个前端程序,其他的前端程序去这个前端程序去取token( ...
- BeautifulSoup简述
网页解析器 从网页中提取有价值数据的工具 网页解析器种类 正则表达式 (模糊匹配) html.parser (结构化解析) BeautifulSoup第三方插件 (结构化解析,相对比较强大) lxml ...
- web前端页面性能
前段性能的意义 对于访问一个网站,最花费时间的并不是后端应用程序处理以及数据库等消耗的时间,而是前端花费的时间(包括请求.网络传输.页面加载.渲染等).根据web优化的黄金法则:80%的最终用户响应时 ...
- 原来JS是这样的 - 提升, 作用域 与 闭包
引子 长久以来一直都没有专门学过 JS ,因为之前有自己啃过 C++ ,又打过一段时间的算法竞赛(写得一手好意大利面条),于是自己折腾自己的网站的时候,一直都把 JS 当 C 写.但写的时候总会遇到一 ...
- HTTP基础知识(一)
一.了解web及网络基础 1.通过发送请求获取服务器资源的web浏览器等的都可称为客户端(client) 2.HTTP:HyperText Transfer Protocol,超文本传输协议:所有的W ...
- 禁止linux被ping
cho "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf sysctl -p 生效 开启ping功能: 删除/ ...
- C#自动弹出窗口并定时自动关闭
最近做个小项目,用到一个小功能:后台线程定时查询数据库,不符合条件的记录弹出消息提醒(在窗口最前面),并且过几秒钟再自动关闭弹出的窗口. 所以从网上找来资料,如下: WinForm 下实现一个自动关闭 ...