[b]简介 [/b]
Sector/Sphere是一个分布式存储/分布式计算系统。
此系统工作在集群的普通计算机上。
Sector提供了用户端工具,来管理系统中数据的存储。还提供了开发API,用来进行分布式数据计算的应用开发。
Project链接: Sector/Sphere SourceForge Pages
作者链接:Yunhong Gu
[b]Sector的安装 [/b]
安装和启动
安装前的准备
Sector/Sphere库包含source code, example, documention,三部分。目前所有的软件均只能在linux上工作。
软件由C++写成,需要GCC/G++ 3.4或更高版本。
还需要Openssl开发包。(e.g., libssl-dev for Debian or openssl-devel for Fedora)
软件分为四部分:the security server, the master server, the slaves, and the clients.
这几部分可以被安装在同一个node上,或者多个node上。
典型的安装方式是,master server和security server安装在一个node上,但每个slave 分别安装在一个node上。
编译安装
可以从官网上或者tar包,或者直接从SourceForge SVN上check out。
编译安装分为如下几步:
在 ./codeblue2目录下, 运行 make
更新./conf中的配置文件, 包括master.conf, slave.conf, client.conf, user accounts, and slave access control list.
如果需要, 把完整的codeblue2 目录拷贝到所有的 slaves and client 上,(不要拷贝./conf中的Keys).
启动 the security server, the master, and the slaves.
启动Servers
Security server 位于 ./codeblue2/security目录下。
通过此文件夹下的./sserver命令来启动 security server。
security server会默认的listen 5000端口。
你可以用./sserver <port> 命令来指定别的端口。
此命令不会有什么多余的输出,只是告诉你server运行在哪个端口。
Master server位于 ./codeblue2/master目录下。
通过此文件夹下的 ./start_master 命令来启动master server.
此命令必须在 ./codeblue2/master目录下运行,因为它需要确定配置文件的位置。如../conf
屏幕上不会有什么输出,在 ./master/sector.log 会记录日志文件。
你可以用命令 ./start_all 和 ./stop_all 来启动或停止master和所有的slave。
为了使用这个命令,你必须更新 "../conf/slaves.list"文件。Sector会通过读取这个文件来使用ssh连接,启动其他slaves。在这之前,master node的公共的 SSH key 必须写入所有slaves node的 ~/.ssh/authorized_keys 文件中。
如果slaves不可靠,所有列表上的slave nodes会自动的被master重新启动。
如果你不使用上述两个命令。你可以单独在每个slave上启动./codeblue2/slave目录下的 ./start_slave命令。
一般debug的时候会这么作。这样你可以在所有slave上面看到输出。
理解“证书”
Sector 用SSL来进行clients与master,master与security之间的安全通信。
这就需要两组SSL key/sertificate pairs。
这两组pairs分别为: secuirity_node.key/security_node.cert; master_node.key/master_node.cert.
所有的 keys 和certificates are put in ./codeblue2/conf.
security_node.key/security_node.cert
如果master和security server不在一个node上,security_node.cert文件必须被拷贝到master node的 ./codeblue2/conf文件加下。
但是,security_node.key一定不能拷贝过去。
这一对key和certificate被用于security server 和 master server的连接。
master_node.key/master_node.cert
master_node.cert文件必须存在于所有slave node和client node上的 ./codeblue2/conf目录下。
但是,master_node.key文件一定不能拷贝到slave和client node上。
这对key/certificate用来执行master与 slave 和 client之间的联系。
Sector中,所有的通讯都需要间接的通过master server来实现,必要时还要经过security server的认证。
Generate and distribute the certificates
软件发布包里没有kes和certificates。第一次make源代码时,所有的keys和certificates都会自动生成在./conf目录下。
如果集群没有共享文件系统,certificates需要被拷贝到所有slaves和client node上。
如果需要重新生成证书
首先删除./conf目录下的所有key和certificate。
然后运行./codeblue2/security目录下的 ssl_cert_gen 命令。
注意,keys/certificate对必须来自于同一次生成。
配置Password-free SSH
master node用SSH方式分别启动/停止每一个slaves。
master和每个slave node之间需要一个password-free SSH。
Step.1 在master node上面运行ssh-keygen.一直按回车即可。
gu@sl01:~$ ssh-keygen
[color=green]Generating public/private rsa key pair.
Enter file in which to save the key (/home/gu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gu/.ssh/id_rsa.
Your public key has been saved in /home/gu/.ssh/id_rsa.pub.
The key fingerprint is:
64:2b:aa:fb:60:65:9d:c9:e9:dd:e6:d2:4a:ee:64:1a gu@sl01.research[/color]
你会发现在~/.ssh目录下新产生了2个文件。
id_rsa包含一个private的SSH key。
id_res.pub文件包含了pulic SSH key。
所有的key information都只在一行。
gu@sl01:~/.ssh$ ls -la
[color=green]total 28
drwx------ 2 gu gu 4096 2008-12-23 22:51 .
drwxr-xr-x 10 gu gu 4096 2008-12-06 20:56 ..
-rw------- 1 gu gu 1229 2008-03-19 21:35 authorized_keys
-rw------- 1 gu gu 1675 2008-12-23 22:51 id_rsa
-rw-r--r-- 1 gu gu 398 2008-12-23 22:51 id_rsa.pub
-rw-r--r-- 1 gu gu 4248 2008-12-16 18:51 known_hosts[/color]
gu@sl01:~/.ssh$
gu@sl01:~/.ssh$ more id_rsa.pub
[color=green]ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3qC8B3uEM8M8xyXIx/DYg7wG83dyIkta3oYUjfQmTfHs
51JHDrXxfWx+vb7w9ZtU+FGRhPscVxi8MwWEMuZt18138R2PVru5b7fK/ED/O3HHOqUqnXSc+rIIj4cR
CvCqCh+8HgP1Gt1RimYchWsfkcxofIn4YpzWrqk9h0fIsAkMIhW0wLZNetbwu8g1kuCExfe5bpaQ2rIK
7L+9ggS19Gfyea5ftKukz279y4Zu4pq3C5D7d6MpN25R9c+wmW/JlkCbdnbp7lSbgrxqMcyPiHa+oWGJ
VshT51NhvkSYBTOgC1VgafUBdMR+QjaLImNwD9rLHQW1LgUNr48Xd6aUTQ== gu@sl01.research[/color]
Step.2 把public key(id_rsa.pub)添加到每一个slave上。在每个slave的~/.ssh目录下,可能会存在一个叫做authorized_keys的文件。如果没有这个文件,就创建一个新的。打开文件,把public key复制到文件的结尾。如果文件中已经有了一个key information。就在末尾新起一行,粘贴public key的内容。
下面的例子中,最后一行是新的key,文件中原先就有了一个别的节点的 key information。
[color=green]ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvVhDtd6i/X3oUeLxom/z+mVfhmrW6Kvnz68DPwIQHHAU
EilcWx57MbrB7EV8+Q5iJlvg2599j+fvO39qmllkQ2YI25DmySlkSrWGa+2RyvqC0e3NB1bTSJSTqBqf
PR10HXpYa74zUzRQpOuUw8nxhzQ/KVIfUh+gdQ4BW38TxqFDCbbaX+vpcWXMxuuDqkusjdHAi3pUEpEY
3W/XH3OEk9EGZ3L20bvtw3wHvjNnLY+7vivcRtpHI9ezvX9k9L8slVOjVI9g9JxsqGT8HwR3n0/iyD4H
MZsxU2V3HPg9cD0MBVgDuMTXOdg9Ph+B1AjlLS7k8yDLLbz6zcde+TP2Xw== gu@isi01
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3qC8B3uEM8M8xyXIx/DYg7wG83dyIkta3oYUjfQmTfHs
51JHDrXxfWx+vb7w9ZtU+FGRhPscVxi8MwWEMuZt18138R2PVru5b7fK/ED/O3HHOqUqnXSc+rIIj4cR
CvCqCh+8HgP1Gt1RimYchWsfkcxofIn4YpzWrqk9h0fIsAkMIhW0wLZNetbwu8g1kuCExfe5bpaQ2rIK
7L+9ggS19Gfyea5ftKukz279y4Zu4pq3C5D7d6MpN25R9c+wmW/JlkCbdnbp7lSbgrxqMcyPiHa+oWGJ
VshT51NhvkSYBTOgC1VgafUBdMR+QjaLImNwD9rLHQW1LgUNr48Xd6aUTQ== gu@sl01.research[/color]
Step.3 从master node上用SSH 去登录 slave node。如果是第一次登录,SSH会让你确认new key 是否被 acception。按yes继续.
gu@sl01:~/.ssh$ ssh -lgu 192.168.0.1
[color=green]The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
RSA key fingerprint is 68:64:8a:ce:1a:97:d9:0d:47:55:e8:de:df:6a:19:7c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.1' (RSA) to the list of known hosts. [/color]
在所有的slave node上重复Step 2、3
配置Security server
security server掌握着所有slaves nodes的权限控制列表和所有的用户信息。
权限控制列表决定节点是否被当作一个slave node加入到Sector系统中。
用户信息包括用户的帐号、密码、IP控制和文件IO权限。
slave_acl.conf
"slave_acl.conf"文件包含一个IP地址列表(e.g., 192.168.0.1),或者一个IP地址区间(e.g., 192.168.0.0/24)。这些地址的电脑会被当作slave node 加入到系统中。
每一行表示一个IP地址,或者一个IP地址区间。
地址区间的表示利用了字节掩码,例如192.168.0.0/24 表示 192.168.0.0 - 192.168.0.255.
默认的,任何地址为(0.0.0.0/0)的节点可以被当作slaves加入到系统。
[color=green]#list of IP addresses or ranges from which a slave can join the system
#by default the system is open: i.e., any node can become a slave node
#you should change this for a production system
#E.g., 192.168.0.0/24 allows all IPs within 192.168.0.0-255 to join
0.0.0.0/0
[/color]
User Accounts
用户帐号信息存储于 ./codeblue2/conf/users。
每一个用户的信息存在一个text文件中。
例如:用户"test"的信息存在 ./codeblue2/conf/users/test 中。
"PASSWORD"区域是用户的密码.
"READ_PERMISSION"列出了用户可以read的文件和目录.
"WRITE_PERMISSION"列出了用户可以read的文件和目录.
"EXEC_PERMISSION"是 TRUE or FALSE 决定了用户能不能运行Sphere的应用程序。
"ACL"列出了用户可以访问的IP地址或IP地址的区间。
最后的QUOTA表示用户可以访问的磁盘空。包括用户所有可写的目录和文件夹。
配置文件中,每个选项的值前面都需要一个"TAB"字符。“#”字符可以被用来注释一行。
[color=green]#user's password
PASSWORD
xxx
#directories that the user can read, one per line
#default is none, which means the user cannot read anything, same for write
READ_PERMISSION
/test
/angle
/
#directories that the user can write or modify
WRITE_PERMISSION
/angle
/
#if the user is allowed to run Sphere process, default is false.
#All capital letters "TRUE" must be used, otherwise it will be treated as false
EXEC_PERMISSION
TRUE
#list of IP addresses from which the user is allowed to login, one per line.
#this field must exist, otherwise the user will not be able to login
ACL
0.0.0.0/0
#the user's quota, which is the size limit of all the directories he/she has the write permission
#unit is MB
QUOTA
1000000[/color]
[b]配置Master server
配置Slave server
配置Client server
Sector-FUSE文件系统
Sector的使用[/b]
Sector/Sphere是一个分布式存储/分布式计算系统。
此系统工作在集群的普通计算机上。
Sector提供了用户端工具,来管理系统中数据的存储。还提供了开发API,用来进行分布式数据计算的应用开发。
Project链接: Sector/Sphere SourceForge Pages
作者链接:Yunhong Gu
[b]Sector的安装 [/b]
安装和启动
安装前的准备
Sector/Sphere库包含source code, example, documention,三部分。目前所有的软件均只能在linux上工作。
软件由C++写成,需要GCC/G++ 3.4或更高版本。
还需要Openssl开发包。(e.g., libssl-dev for Debian or openssl-devel for Fedora)
软件分为四部分:the security server, the master server, the slaves, and the clients.
这几部分可以被安装在同一个node上,或者多个node上。
典型的安装方式是,master server和security server安装在一个node上,但每个slave 分别安装在一个node上。
编译安装
可以从官网上或者tar包,或者直接从SourceForge SVN上check out。
编译安装分为如下几步:
在 ./codeblue2目录下, 运行 make
更新./conf中的配置文件, 包括master.conf, slave.conf, client.conf, user accounts, and slave access control list.
如果需要, 把完整的codeblue2 目录拷贝到所有的 slaves and client 上,(不要拷贝./conf中的Keys).
启动 the security server, the master, and the slaves.
启动Servers
Security server 位于 ./codeblue2/security目录下。
通过此文件夹下的./sserver命令来启动 security server。
security server会默认的listen 5000端口。
你可以用./sserver <port> 命令来指定别的端口。
此命令不会有什么多余的输出,只是告诉你server运行在哪个端口。
Master server位于 ./codeblue2/master目录下。
通过此文件夹下的 ./start_master 命令来启动master server.
此命令必须在 ./codeblue2/master目录下运行,因为它需要确定配置文件的位置。如../conf
屏幕上不会有什么输出,在 ./master/sector.log 会记录日志文件。
你可以用命令 ./start_all 和 ./stop_all 来启动或停止master和所有的slave。
为了使用这个命令,你必须更新 "../conf/slaves.list"文件。Sector会通过读取这个文件来使用ssh连接,启动其他slaves。在这之前,master node的公共的 SSH key 必须写入所有slaves node的 ~/.ssh/authorized_keys 文件中。
如果slaves不可靠,所有列表上的slave nodes会自动的被master重新启动。
如果你不使用上述两个命令。你可以单独在每个slave上启动./codeblue2/slave目录下的 ./start_slave命令。
一般debug的时候会这么作。这样你可以在所有slave上面看到输出。
理解“证书”
Sector 用SSL来进行clients与master,master与security之间的安全通信。
这就需要两组SSL key/sertificate pairs。
这两组pairs分别为: secuirity_node.key/security_node.cert; master_node.key/master_node.cert.
所有的 keys 和certificates are put in ./codeblue2/conf.
security_node.key/security_node.cert
如果master和security server不在一个node上,security_node.cert文件必须被拷贝到master node的 ./codeblue2/conf文件加下。
但是,security_node.key一定不能拷贝过去。
这一对key和certificate被用于security server 和 master server的连接。
master_node.key/master_node.cert
master_node.cert文件必须存在于所有slave node和client node上的 ./codeblue2/conf目录下。
但是,master_node.key文件一定不能拷贝到slave和client node上。
这对key/certificate用来执行master与 slave 和 client之间的联系。
Sector中,所有的通讯都需要间接的通过master server来实现,必要时还要经过security server的认证。
Generate and distribute the certificates
软件发布包里没有kes和certificates。第一次make源代码时,所有的keys和certificates都会自动生成在./conf目录下。
如果集群没有共享文件系统,certificates需要被拷贝到所有slaves和client node上。
如果需要重新生成证书
首先删除./conf目录下的所有key和certificate。
然后运行./codeblue2/security目录下的 ssl_cert_gen 命令。
注意,keys/certificate对必须来自于同一次生成。
配置Password-free SSH
master node用SSH方式分别启动/停止每一个slaves。
master和每个slave node之间需要一个password-free SSH。
Step.1 在master node上面运行ssh-keygen.一直按回车即可。
gu@sl01:~$ ssh-keygen
[color=green]Generating public/private rsa key pair.
Enter file in which to save the key (/home/gu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gu/.ssh/id_rsa.
Your public key has been saved in /home/gu/.ssh/id_rsa.pub.
The key fingerprint is:
64:2b:aa:fb:60:65:9d:c9:e9:dd:e6:d2:4a:ee:64:1a gu@sl01.research[/color]
你会发现在~/.ssh目录下新产生了2个文件。
id_rsa包含一个private的SSH key。
id_res.pub文件包含了pulic SSH key。
所有的key information都只在一行。
gu@sl01:~/.ssh$ ls -la
[color=green]total 28
drwx------ 2 gu gu 4096 2008-12-23 22:51 .
drwxr-xr-x 10 gu gu 4096 2008-12-06 20:56 ..
-rw------- 1 gu gu 1229 2008-03-19 21:35 authorized_keys
-rw------- 1 gu gu 1675 2008-12-23 22:51 id_rsa
-rw-r--r-- 1 gu gu 398 2008-12-23 22:51 id_rsa.pub
-rw-r--r-- 1 gu gu 4248 2008-12-16 18:51 known_hosts[/color]
gu@sl01:~/.ssh$
gu@sl01:~/.ssh$ more id_rsa.pub
[color=green]ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3qC8B3uEM8M8xyXIx/DYg7wG83dyIkta3oYUjfQmTfHs
51JHDrXxfWx+vb7w9ZtU+FGRhPscVxi8MwWEMuZt18138R2PVru5b7fK/ED/O3HHOqUqnXSc+rIIj4cR
CvCqCh+8HgP1Gt1RimYchWsfkcxofIn4YpzWrqk9h0fIsAkMIhW0wLZNetbwu8g1kuCExfe5bpaQ2rIK
7L+9ggS19Gfyea5ftKukz279y4Zu4pq3C5D7d6MpN25R9c+wmW/JlkCbdnbp7lSbgrxqMcyPiHa+oWGJ
VshT51NhvkSYBTOgC1VgafUBdMR+QjaLImNwD9rLHQW1LgUNr48Xd6aUTQ== gu@sl01.research[/color]
Step.2 把public key(id_rsa.pub)添加到每一个slave上。在每个slave的~/.ssh目录下,可能会存在一个叫做authorized_keys的文件。如果没有这个文件,就创建一个新的。打开文件,把public key复制到文件的结尾。如果文件中已经有了一个key information。就在末尾新起一行,粘贴public key的内容。
下面的例子中,最后一行是新的key,文件中原先就有了一个别的节点的 key information。
[color=green]ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvVhDtd6i/X3oUeLxom/z+mVfhmrW6Kvnz68DPwIQHHAU
EilcWx57MbrB7EV8+Q5iJlvg2599j+fvO39qmllkQ2YI25DmySlkSrWGa+2RyvqC0e3NB1bTSJSTqBqf
PR10HXpYa74zUzRQpOuUw8nxhzQ/KVIfUh+gdQ4BW38TxqFDCbbaX+vpcWXMxuuDqkusjdHAi3pUEpEY
3W/XH3OEk9EGZ3L20bvtw3wHvjNnLY+7vivcRtpHI9ezvX9k9L8slVOjVI9g9JxsqGT8HwR3n0/iyD4H
MZsxU2V3HPg9cD0MBVgDuMTXOdg9Ph+B1AjlLS7k8yDLLbz6zcde+TP2Xw== gu@isi01
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3qC8B3uEM8M8xyXIx/DYg7wG83dyIkta3oYUjfQmTfHs
51JHDrXxfWx+vb7w9ZtU+FGRhPscVxi8MwWEMuZt18138R2PVru5b7fK/ED/O3HHOqUqnXSc+rIIj4cR
CvCqCh+8HgP1Gt1RimYchWsfkcxofIn4YpzWrqk9h0fIsAkMIhW0wLZNetbwu8g1kuCExfe5bpaQ2rIK
7L+9ggS19Gfyea5ftKukz279y4Zu4pq3C5D7d6MpN25R9c+wmW/JlkCbdnbp7lSbgrxqMcyPiHa+oWGJ
VshT51NhvkSYBTOgC1VgafUBdMR+QjaLImNwD9rLHQW1LgUNr48Xd6aUTQ== gu@sl01.research[/color]
Step.3 从master node上用SSH 去登录 slave node。如果是第一次登录,SSH会让你确认new key 是否被 acception。按yes继续.
gu@sl01:~/.ssh$ ssh -lgu 192.168.0.1
[color=green]The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
RSA key fingerprint is 68:64:8a:ce:1a:97:d9:0d:47:55:e8:de:df:6a:19:7c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.1' (RSA) to the list of known hosts. [/color]
在所有的slave node上重复Step 2、3
配置Security server
security server掌握着所有slaves nodes的权限控制列表和所有的用户信息。
权限控制列表决定节点是否被当作一个slave node加入到Sector系统中。
用户信息包括用户的帐号、密码、IP控制和文件IO权限。
slave_acl.conf
"slave_acl.conf"文件包含一个IP地址列表(e.g., 192.168.0.1),或者一个IP地址区间(e.g., 192.168.0.0/24)。这些地址的电脑会被当作slave node 加入到系统中。
每一行表示一个IP地址,或者一个IP地址区间。
地址区间的表示利用了字节掩码,例如192.168.0.0/24 表示 192.168.0.0 - 192.168.0.255.
默认的,任何地址为(0.0.0.0/0)的节点可以被当作slaves加入到系统。
[color=green]#list of IP addresses or ranges from which a slave can join the system
#by default the system is open: i.e., any node can become a slave node
#you should change this for a production system
#E.g., 192.168.0.0/24 allows all IPs within 192.168.0.0-255 to join
0.0.0.0/0
[/color]
User Accounts
用户帐号信息存储于 ./codeblue2/conf/users。
每一个用户的信息存在一个text文件中。
例如:用户"test"的信息存在 ./codeblue2/conf/users/test 中。
"PASSWORD"区域是用户的密码.
"READ_PERMISSION"列出了用户可以read的文件和目录.
"WRITE_PERMISSION"列出了用户可以read的文件和目录.
"EXEC_PERMISSION"是 TRUE or FALSE 决定了用户能不能运行Sphere的应用程序。
"ACL"列出了用户可以访问的IP地址或IP地址的区间。
最后的QUOTA表示用户可以访问的磁盘空。包括用户所有可写的目录和文件夹。
配置文件中,每个选项的值前面都需要一个"TAB"字符。“#”字符可以被用来注释一行。
[color=green]#user's password
PASSWORD
xxx
#directories that the user can read, one per line
#default is none, which means the user cannot read anything, same for write
READ_PERMISSION
/test
/angle
/
#directories that the user can write or modify
WRITE_PERMISSION
/angle
/
#if the user is allowed to run Sphere process, default is false.
#All capital letters "TRUE" must be used, otherwise it will be treated as false
EXEC_PERMISSION
TRUE
#list of IP addresses from which the user is allowed to login, one per line.
#this field must exist, otherwise the user will not be able to login
ACL
0.0.0.0/0
#the user's quota, which is the size limit of all the directories he/she has the write permission
#unit is MB
QUOTA
1000000[/color]
[b]配置Master server
配置Slave server
配置Client server
Sector-FUSE文件系统
Sector的使用[/b]