1. 安装
C3 rpm方式安装到/opt/c3-4目录下,所以要将 /opt/c3-4加到你的PATH环境变量中,将/opt/c3-4/man加到MANPATH环境变量中。安装并设置完环境变量后进行如下操作:
手动建立这个文件 /etc/c3.conf ,这个文件用于定义集群节点,内容如下:
cluster local {有几点说明:
master.example.com
node02.example.com
}
(1) 大括号里的第一行是 head 节点,可以在从节点上执行 cexec 等命令,但是 head 节点上必须已经安装了 c3。
(2) 第一行必须写在 head 节点上运行 hostname 输出的主机名,而不能写 IP 或是其它有效主机名。比如我的 hostname 输出的是 master.sim973.gfkd.mtn, 但是c3.conf却是这样写的:
cluster local {这样执行就会有问题。读了一下cexec的代码发现,如果 head 节点定义和 hostname 的输出不一致会解释为远程集群,其调用的方式有些区别。如果为本地集群的话则 head 节点上不执行,除非指定了 --head 则只执行 head 节点。如果为远程集群的话,执行的过程是这样的:在 head 节点的 tmp 目录下建了一个新的conf文件,用ssh来调用 head 节点上的 cexec ,conf 文件为刚指定的这个conf文件,执行的时候根据这个文件的内容又把这个集群判断为远程集群,再重复这个调用过程。所以如果 head 节点不指定为hostname的输出,则会陷入死循环调用。
master
node02
}
(3) cexec等命令如果不加任何选项不在head节点上执行。
(4) cexec默认是用ssh的方式执行其它节点上的命令,如果想用rsh则自行设定C3_RSH环境变量,不论用哪种方式必须保证在head节点ssh或rsh运行其它节点的命令无须输入密码。ssh需要设定一下authorized_keys2,rsh需要设定一下.rhosts文件,推荐用ssh,详细设置见我的文章。
2. cexec
cexec的作用是在所有集群节点上运行一条命令,缺省情况下cexec在运行命令时并不在 head 节点上运行,除非你在调用cexec时使用了 --head 参数,其它命令同理。
cexec lsC系列的脚本程序均在运行时均可以用-f参数指定单独的c3.conf文件,如:
cexec --head ls
cexec -f ./c3.conf ls
cexec -f ~/c3.conf ls3. cget
cget的作用是在运算节点上拷贝文件到本地:
[lxq@lxq temp]$ cget -f ~/c3.conf mbox
[lxq@lxq temp]$ ls
mbox_local_10.129.4.19 mbox_local_10.129.4.23
4. cpush
cpush的作用是将文件推到所有节点上:
[lxq@lxq temp]$ touch aaa.tmp这里只是举几个例子,更详细的命令及用法可以参见其manual。
[lxq@lxq temp]$ ls
aaa.tmp mbox_local_10.129.4.19 mbox_local_10.129.4.23
[lxq@lxq temp]$ cpush -f ~/c3.conf aaa.tmp $HOME
building file list ... done
aaa.tmp wrote 103 bytes read 36 bytes 13.24 bytes/sec
total size is 0 speedup is 0.00
building file list ... done aaa.tmp
wrote 103 bytes read 36 bytes 13.24 bytes/sec total size is 0 speedup is 0.00
[lxq@lxq temp]$ ssh 10.129.4.23 ls
Sent
Trash
aaa.tmp
mbox
没有评论:
发表评论