准备阶段

  • 有用于搭建的多个虚拟机,且相互之间能ping通
  • 虚拟机均能访问互联网

安装curl

apt-get update && apt-get install -y curl

根据角色安装htcondor

注意将命令中的$htcondor_password换成登录密码(三个都要一样),$central_manager_name换成将要设立中央节点的虚拟机ip

配置静态ip就是为了这一步

Central Manager中心节点

sudo curl -fsSL https://get.htcondor.com | GET_HTCONDOR_PASSWORD=$htcondor_password /bin/bash -s -- --no-dry-run --central-manager $central_manager_name

Submit提交节点

sudo curl -fsSL https://get.htcondor.com | GET_HTCONDOR_PASSWORD=$htcondor_password /bin/bash -s -- --no-dry-run --submit $central_manager_name

Execute执行节点

sudo curl -fsSL https://get.htcondor.com | GET_HTCONDOR_PASSWORD=$htcondor_password /bin/bash -s -- --no-dry-run --execute $central_manager_name

安装成功之后开启服务

sh -c 'systemctl enable condor'

sh -c 'systemctl start condor'

关闭服务

sh -c 'systemctl stop condor'

可以用pstree | grep condor命令查看condor服务是否启动

查看是否安装成功和节点通信是否正常

安装完毕并且正常开启服务之后,提交机器上登录的用户应该能够通过condor_status指令看到池中的执行机器:

1
2
3
4
5
6
7
8
9
10
root@ylxy2:/home/ylxy2$ condor_status
Name OpSys Arch State Activity LoadAv Mem Actvt

ylxy3 LINUX X86_64 Claimed Busy 0.000 1970 0+00:

Total Owner Claimed Unclaimed Matched Preempting Backfill Drain

X86_64/LINUX 1 0 1 0 0 0 0 0

Total 1 0 1 0 0 0 0 0

自定义角色功能

我们可以通过如下配置condor_config来自定义各个节点的功能:

sudo vi /etc/condor/condor_config

根据不同的角色,请分别在主节点和从属节点上向condor_config里面添加如下信息:

1
2
3
DAEMON_LIST = COLLECTOR MASTER NEGOTIATOR SCHEDD STARTD # 中央节点
DAEMON_LIST = MASTER SCHEDD # 提交节点
DAEMON_LIST = MASTER STARTD # 执行节点

DAEMON_LIST是分配具体功能的,推荐如下分配:

中央管理节点(可提交可执行,一个pool中最多存在一个中央管理节点)
DAEMON_LIST = COLLECTOR, MASTER, NEGOTIATOR, SCHEDD, STARTD

中央管理节点(只提交不执行)
DAEMON_LIST = COLLECTOR, MASTER, NEGOTIATOR, SCHEDD

提交与执行节点
DAEMON_LIST = MASTER, SCHEDD, STARTD

提交节点
DAEMON_LIST = MASTER, SCHEDD

执行节点
DAEMON_LIST = MASTER, STARTD

编辑完成后输入:wq保存退出,然后通过condor_reconfig更新配置:

1
2
3
ylxy2@ylxy2:~$ condor_reconfig
Sent "Reconfig" command to local master
ylxy2@ylxy2:~$

更新之后,我们通过condor_status命令可以看到我们的pool中多了新的执行节点:

1
2
3
4
5
6
7
8
9
10
11
12
13
ylxy2@ylxy2:~$ condor_status
Name OpSys Arch State Activity LoadAv Mem ActvtyTime

ylxy1 LINUX X86_64 Claimed Busy 0.000 1970 0+00:25:01
ylxy2 LINUX X86_64 Claimed Busy 0.000 1970 0+00:25:45
ylxy3 LINUX X86_64 Claimed Busy 0.000 1970 0+00:24:48

Total Owner Claimed Unclaimed Matched Preempting Backfill Drain

X86_64/LINUX 3 0 3 0 0 0 0 0

Total 3 0 3 0 0 0 0 0
ylxy2@ylxy2:~$

至此一个集群就搭建完啦,接下来我们就可以跑跑测试代码了。