系统:centos7.6
VMwareWrok Station Pro15.1.0
3
台虚拟机配置
control:cpu=1,mem=1G
compute1:cpu=1,mem=1G
compute2:cpu=1,mem=1G
slurm
版本19.05.2-1
NFS
服务端、NIS
服务端、slurmctld
、slurmdbd
、slurmd
部署在control
节点,slurmd
部署在compute[1-2]
,数据库部署在compute2
节点。
配置网卡开机自启
$ vim etc/sysconfig/network-scripts/ifcfg-ens33 # 将ONBOOT=no这一项改为ONBOOT=yes
$ service network restart
配置DNS
$ vim /etc/NetworkManager/NetworkManager.conf
# 在[main]下,添加dns=no
添加DNS
地址
$ vim /etc/resolv.conf
# 添加 namesever 8.8.8.8
# 添加 nameserver 114.114.114.114
关闭firewalld
$ systemctl disable firewalld
关闭selinux
$ vi /etc/selinux/config
# 将SELINUX的值设置为disabled,下次开机则不会自启
检测selinux
状态
getenforce
安装ssh
服务
$ yum install openssl openssh-server -y
配置ssh
服务
$ vim /etc/ssh/sshd_config
# 设置PermitRootLogin=yes
# 设置PasswordAuthentication=yes
# 设置PubkeyAuthentication=yes
生成密钥对
$ ssh-keygen -t rsa
导入公钥
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
注意.ssh
文件夹700
权限和文件.ssh/authorized_keys
的600权限
重启sshd服务
$ systemctl restart sshd
克隆2台机器作为compute[1,2]
,克隆的机器注意mac
要不一样,否则会出现不能上网问题。
配置固定ip
$ vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改BOOTPROTO=static
# 修改IPADDR=192.168.145.100
# 修改NETMASK=255.255.255.0
# 修改GATEWAY=192.168.145.2
配置hosts
文件
$ vim /etc/hosts
# 增加 192.168.145.100 control
# 增加 192.168.145.101 compute1
# 增加 192.168.145.102 compute2
配置主机名
$ vim /etc/hostname
# 修改主机名
重启生效
$ reboot
安装
$ yum install nfs-utils rpcbind -y
自动启服务
$ systemctl enable rpcbind
$ systemctl enable nfs-server
$ systemctl enable nfs-lock
$ systemctl enable nfs-idmap
启动服务
$ systemctl start rpcbind
$ systemctl start nfs-server
$ systemctl start nfs-lock
$ systemctl start nfs-idmap
配置共享目录
$ vim /etc/exports
# 添加 /home 192.168.145.0/24(rw,sync,no_root_squash)
使其生效
exportfs -a
安装
$ yum install nfs-utils -y
检查服务端共享目录
$ showmount -e 服务器地址
配置NFS
开机自动挂载
$ vim /etc/fstab
# 添加 服务器地址:目录 客户端目录 nfs defaults 0 0
手动临时挂载
$ mount -t nfs 服务器地址:目录 客户端目录
安装
$ yum install ypserv ypbind yp-tools rpcbind -y
添加NIS
域名
$ vim /etc/rc.d/rc.local
# 添加nisdomainname nisdomain
不重启则需要执行
$ nisdomainname nisdomain
创建域用户
$ useradd -s /bin/bash nisuser
设置密码
$ passwd nisuser
创建用户组
$ groupadd nisgroup
将用户添加到组中
$ usermod -G nisgroup nisuser
在配置文件中添加权限
$ vim /etc/ypserv.conf
# 添加 192.168.145.0/24:*:*:none
自启动NIS
服务
$ systemctl enable rpcbind
$ systemctl enable yppasswdd
$ systemctl enable ypserv
启动NIS
服务
$ systemctl start rpcbind
$ systemctl start yppasswdd
$ systemctl start ypserv
初始化NIS
数据库
$ /usr/lib64/yp/ypinit -m
每次修改用户后,更新数据库
$ make -C /var/yp
初始化数据库后重启服务
$ systemctl restart rpcbind
$ systemctl restart yppasswdd
$ systemctl restart ypserv
检查服务是否启动
rpcinfo -p localhost
$ yum install ypbind yp-tools rpcbind -y
在网络中添加NIS域,同NIS服务器配置方法
$ authconfig-tui
# 选中NIS, Shadow Passwords ,Local authorization is sufficient
# 设置NIS Settings
启动服务
$ systemctl enable rpcbind
$ systemctl enable ypbind
$ systemctl start rpcbind
$ systemctl start ypbind
yptest
/etc/ypserv.conf
是NIS
服务端配置文件,可以控制NIS
客户端是否可以访问NIS
服务器。/etc/hosts
记录主机和IP地址对应关系,如果没有DNS系统,则NIS服务器的hosts
文件需要存放每一台NIS
客户端的主机记录。yum install -y epel-release
安装
$ yum install munge munge-libs munge-devel -y
生成munge.key
$ create-munge-key
分发key
给客户端,可以使用md5sum
工具校验各个节点key
是否一致
$ scp /etc/munge/munge.key root@compute1:/etc/munge
$ scp /etc/munge/munge.key root@compute2:/etc/munge
启动munge
服务
$ systemctl enable munge
$ systemctl start munge
测试
munge -n | ssh 客户端主机名 unmunge
这里使用的是slurm rpm
包,版本19.05.2-1
$ yum --nogpgcheck localinstall slurm-*
创建目录
$ mkdir -p /var/spool/slurm/d
配置slurm.conf
文件,参考官网在线配置。
服务端开启服务
$ systemctl enable slurmctl
$ systemctl enable slurmd
$ systemctl start slurmctl
$ systemctl start slurmd
客户端开启
$ systemctl enable slurmd
$ systemctl start slurmd
不成功可以使用slurmd -Dcv
切换前台模式查看原因
$ slurmd -Dcv
这里使用mysql
,但是建议用mariadb
下载
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
解压缩
$ 解压缩 tar -xvf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
安装common
、libs
、client
、server
$ rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm --nodeps --force
$ rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm --nodeps --force
$ rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm --nodeps --force
$ rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm --nodeps --force
查看安装好的mysql
$ rpm -qa | grep mysql
初始化mysql
,需要root
账户
$ mysqld --initialize
更改所有者,所属组
$ chown mysql:mysql /var/lib/mysql -R
启动服务
$ systemctl enable mysqld
$ systemctl start mysqld
查看初始密码
$ cat /var/log/mysqld.log | grep password
登录
$ mysql -u -root -p
修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
创建远程账号
create user 'mouse'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
为远程账户授权
grant all privileges on *.* to 'mouse'@'%' with grant option;
刷新生效
flush privileges;
安装
$ rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm --nodeps --force
检查
rpm -qa | grep mysql
create database slurm_acct_db;
修改slurmdbd.conf
文件,参考官方文档。
启动slurmdbd
服务
$ systemctl enable slurmdbd
$ systemctl enable slurmdbd
将集群加入作业
$ sacctmgr add cluster 集群名
MPI 的全称是 Message Passing Interface,即消息传递接口。它是一种用于编写并行程序的标准,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性,有 MPICH、OpenMPI 等一些具体的实现,提供 Fortran、C、C++ 的相应编程接口。MPI 的目标是高性能,大规模性,和可移植性。MPI 在今天仍为高性能计算的主要模型。
MPI 的工作方式很好理解,我们可以同时启动一组进程,在同一个通信域中不同的进程都有不同的编号,程序员可以利用 MPI 提供的接口来给不同编号的进程分配不同的任务和帮助进程相互交流最终完成同一个任务。
$ yum install openmpi3.x86_64 openmpi3-devel.x86_64 gcc gcc-c++ make
# 当前账户要有各个节点ssh公钥
# 不建议用root账户,若使用,则需要--allow-run-as-root参数
$ mpirun -H compute1,compute2,control hostname
例子hello_c.c
#include
#include "mpi.h"
int main(int argc, char* argv[])
{
int rank, size, len;
char version[MPI_MAX_LIBRARY_VERSION_STRING];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Get_library_version(version, &len);
printf("Hello, world, I am %d of %d, (%s, %d)\n",
rank, size, version, len);
MPI_Finalize();
return 0;
}
编译并执行
$ make
$ ./hello_c