OpenLava是一个开源的HPC项目,是100%免费、开源、兼容IBM Spectrum LSF的工作负载调度器,支持各种高性能计算和分析应用。
由于OpenLava的命令行和文件格式与大多数LSF功能相兼容,因此用户和管理员都将非常熟悉OpenLava的操作。组织和机构可以充分利用数以百计的商业和开源软件的已有集成,保留他们在设计、集成和技能方面的已有投资,并快速摆脱在生产环境中对商业许可证的依赖和限制。
目前国内关于Openlava的安装教程几乎没有,故写此篇来介绍,有不对之处还请指正。
1 系统要求
支持主流的64位x86 Linux发行版,包括RHEL、CentOS、SUSE、和Ubuntu
2 网络要求
安装Openlava需要:a)主机联网 b)各个主机可以互相通信,即可以互相Ping通对方主机名。
使用快捷键CTRL+ALT+T(或者在桌面点击右键,选择open terminal)进入系统的终端界面:
2.1 查看系统主机名
在安装开始前,我们需要知道本机器的主机名,在终端输入hostname –f即可看到
2.2 测试两台主机的网络状况
当设置好网络之后结果应如下所示:1
2
3
4
5
6[jensd@master ~]$ ping -c 1 node
PING node (192.168.202.102) 56(84) bytes of data.
64 bytes from node (192.168.202.102): icmp_seq=1 ttl=64 time=0.380 ms
--- node ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.380/0.380/0.380/0.000 ms
1 | [jensd@node ~]$ ping –c 1 master |
3 下载准备
进入Openlava官方网站:http://www.openlava.org/ ,点击Download标签,下载安装包:openlava-2.2.tar.gz,将文件存储于主机某个指定位置(例如将文件存放于浏览器自动下载的~/Download目录下)
4 安装Openlava
以下文档以CentOS 7操作系统为例,其中:主机 master作为集群中的管理主机,node为本集群中的一个执行主机。
注:在一个Openlava集群中,可以有很多个执行主机,此处仅以node这一台执行主机为例。
4.1 管理主机安装Openlava
4.1.1 安装依赖包
打开终端,在终端中逐条输入以下命令,以安装Openlava所需要的依赖包:1
2
3yum update
yum upgrade
yum install tcl-dev ncurses-dev autoconf libtool
注:如在Ubuntu系统下,指令稍有变化:1
2
3sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y tcl-dev ncurses-dev autoconf libtool
4.1.2 打开防火墙
1 | sudo iptables -I INPUT -p tcp --match multiport --dports 1024:65535 -j ACCEPT |
4.1.3 解压Openlava安装包
1 | cd ~/Download |
4.1.4 执行安装
1 | ./configure --prefix=/opt/openlava |
4.1.5 添加Openlava用户
1 | # Create a Openlava user to own all lsf processes |
4.1.6 复制默认配置文件
1 | # Copy the configurations to the system |
4.1.7 配置环境变量
1 | . /etc/profile.d/openlava.sh |
4.1.8 编辑lsf.cluster.openlava文件
1 | cd /opt/openlava/etc |
如下所示为需要新增的文字,其中,第一行为系统认为的管理主机,因此将管理主机的主机名放在灰色部分的第一行,并将后续需要加入集群的执行主机主机名依次加入该列表:1
2
3
4
5Begin Host
HOSTNAME model type server r1m RESOURCES
master IntelI5 linux 1 3.5 (cs)
node IntelI5 linux 1 3.5 (cs)
End Host
4.1.9 编辑/etc/hosts
将需要加入本集群的主机名用以下命令添加至/etc/hosts:
sudo printf “33.33.33.31 master\n33.33.33.32 node\n” | sudo tee -a /etc/hosts
如需添加更多主机,可参照如下列表:
33.33.33.31 master
33.33.33.32 node
33.33.33.33 node1
33.33.33.34 node2
33.33.33.35 node3
4.1.10 确保安装权限正确
1 | sudo chown -R openlava:openlava /opt/openlava |
4.1.11 验证安装
开启Openlava服务,如出现如下字段则表示安装成功且Openlava服务已开启:1
2
3
4
5
6[jensd@master ~]$ sudo /etc/init.d/openlava start
Stopping daemons...
Starting daemons...
lim started
res started
sbatchd started
1 | [jensd@master ~]$ lsid |
4.2 执行主机安装Openlava
方法与管理主机基本相同,需要注意的是,在上节第8步(编辑lsf.cluster.openlava文件)时,将管理主机的hostname仍放置在第一行,执行主机的顺序与上节第8步的顺序一致。
5 安装Openlava Web端
5.1 安装依赖包
1 | sudo yum -y install python-django python-pip git python-devel gcc lighttpd lighttpd-fastcgi |
注:在Ubuntu系统中,指令稍有变化:1
2
3sudo apt-get install python-django python-pip git python-devel gcc lighttpd lighttpd-fastcgi
sudo pip install flup cython
sudo pip install –v Django==1.8
5.2 安装openlava-python
从GitHub上下载openlava-python:
sudo git clone https://github.com/irvined1982/openlava-python.git
确认该文件中的变量lsfdir所示为真实的openlava安装目录:
sudo vi openlava-python/openlava/setup.py1
2
3
4
5
6
7
8...
# Find lsbatch
try:
lsfdir=os.environ['LSF_ENVDIR']
lsfdir=os.path.join(libdir,"..")
except:
lsfdir='/opt/openlava'
安装openlava-python:1
2cd /opt/openlava-python/openlava/
sudo python setup.py install
5.3 安装openlava-web
从GitHub上下载openlava-web:1
2
3sudo git clone https://github.com/irvined1982/openlava-web.git
cd openlava-web/
sudo git submodule update --init –recursive
执行安装命令:sudo python setup.py install
5.4 创建Django项目并配置
在/opt目录下创建Django项目openlava_webui:1
2
3cd /opt/
sudo django-admin startproject openlava_webui
sudo cp -r /opt/openlava-web/openlavaweb/ /opt/openlava_webui/
编辑/opt/openlava_webui/openlava_webui/urls.py文件及openlavaweb.urls文件:1
2
3
4
5
6
7
8
9
10
11
12
13from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'openlava_webui.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('openlavaweb.urls')),
)
编辑/opt/openlava_webui/openlava_webui/settings.py文件来包含openlavaweb:1
2
3
4
5
6
7
8
9INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'openlavaweb',
)
5.5 设置防火墙
1 | sudo iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 808 -j ACCEPT |
5.6 打开服务器
1 | [jensd@master opt]$ sudo python /opt/openlava_webui/manage.py runserver 0.0.0.0:808 |
5.7 验证openlava web端
在浏览器中访问地址即可看到web界面:http://0.0.0.0:808/:
5.8 使用Lighttpd
编辑/etc/lighttpd/modules.conf文件:1
2
3
4
5
6
7
8
9
10
11server.modules = (
"mod_access",
"mod_alias",
"mod_fastcgi",
# "mod_auth",
# "mod_evasive",
# "mod_redirect",
# "mod_rewrite",
# "mod_setenv",
# "mod_usertrack",
)
编辑/etc/lighttpd/lighttpd.conf文件,将以下代码新增至文件结尾:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16alias.url = (
"/static" => "/opt/openlava_webui/openlavaweb/static/",
"/media" => "/var/www/olweb/media",
)
fastcgi.server = (
"/olweb" => (
"main" => (
# Use host / port instead of socket for TCP fastcgi
"host" => "127.0.0.1",
"port" => 3033,
#"socket" => "/home/user/mysite.sock",
"check-local" => "disable",
)
),
)
开启Lighttpd:sudo systemctl start lighttpd
5.9 创建登录用户
为了可以登录网络接口,需要创建一个用户,在其中设置自己的用户名和密码(创建成功以后可在网页右上角的Login登录并提交作业):1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22[jensd@node01 opt]$ sudo python /opt/openlava_webui/manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): jensd
Email address:
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
5.10 给Django项目指定端口号:
1 | sudo python /opt/openlava_webui/manage.py runfcgi method=prefork host=127.0.0.1 port=3033 pidfile |
至此,可在浏览器中输入地址http://master/olweb 访问openlava web端!