如何成功创建Linux集群

如何成功创建Linux集群,第1张

很多小型组织使用了KVM虚拟化,但却无法在主机发生故障时采取相关措施保证高可用性。本文介绍如何采取简单的方式确保虚拟机的高可用性。你可以使用任一Linux发行版的KVM,但是这些Linux发行版在集群功能方面存在差异。Pacemaker堆栈源于SUSE,红帽在最近的版本中才确定其集群实现方式。因此在本文中我将介绍如何在OpenSuSE 13.1 下配置集群。 图1. KVM高可用架构概览假定集群中的节点已经连接到了SAN。如果集群中的节点还没有连接到SAN,那么将虚拟主机连接到Linux SAN并不复杂,当然你也可以使用SAN设备。然而我们在本文中采用的方式—使用OCFS 2共享文件系统构建集群—只有在使用SAN时才是有效的。配置KVM高可用集群的步骤如下所示:创建基础集群在SAN共享存储上配置OCFS2集群文件系统使用SAN磁盘作为后端存储,安装虚拟机为虚拟机配置Pacemaker集群资源验证集群配置创建基础集群在Open SUSE 13.1下使用命令zypper in pacemaker ocfs2-tools lvm2-clvm 安装构建集群所必需的软件包,开始创建基础集群。集群包括两层。较低的层称之为corosync转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦

1.2.并行技术

这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux *** 作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。

2.使用MPICH构建一个四节点的集群系统

这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux *** 作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。

2.1 所需设备

1).4台采用Pentium II处理器的PC机,每台配

置64M内存,2GB以上的硬盘,和EIDE接口的光盘驱动器。

2).5块100M快速以太网卡,如SMC 9332 EtherPower 10/100(其中四块卡用于连接集群中的结点,另外一块用于将集群中的其中的一个节点与其它网络连接。)

3).5根足够连接集群系统中每个节点的,使用5类非屏蔽双绞线制作的RJ45缆线

4).1个快速以太网(100BASE-Tx)的集线器或交换机

5).1张Linux安装盘

2.2 构建说明

对计算机硬件不熟的人,实施以下这些构建步骤会感到吃力。如果是这样,请找一些有经验的专业人士寻求帮助。

1. 准备好要使用的采用Pentium II处理器的PC机。确信所有的PC机都还没有接上电源,打开PC机的机箱,在准备与网络上的其它设备连接的PC机上安装上两块快速以太网卡,在其它的 PC机上安装上一块快速以太网卡。当然别忘了要加上附加的内存。确定完成后盖上机箱,接上电源。

2. 使用4根RJ45线缆将四台PC机连到快速以太网的集线器或交换机上。使用剩下的1根RJ45线将额外的以太网卡(用于与其它网络相连的那块,这样机构就可以用上集群)连接到机构的局域网上(假定你的机构局域网也是快速以太网),然后打开电源。

3. 使用LINUX安装盘在每一台PC机上安装。请确信在LINUX系统中安装了C编译器和C的LIB库。当你配置TCP/IP时,建议你为四台PC分别指定为192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4。第一台PC为你的服务器节点(拥有两块网卡的那台)。在这个服务器节点上的那块与机构局域网相连的网卡,你应该为其指定一个与机构局域网吻合的IP地址。

4.当所有PC都装好Linux系统后,编辑每台机器的/etc/hosts文件,让其包含以下几行:

192.168.1.1 node1 server

192.168.1.2 node2

192.168.1.3 node3

192.168.1.4 node4

编辑每台机器的/etc/hosts.equiv文件,使其包含以下几行:

node1

node2

node3

node4

$p#

以下的这些配置是为了让其能使用MPICH’s p4策略去执行分布式的并行处理应用。

1. 在服务器节点

,建一个/mirror目录,并将其配置成为NFS服务器,并在/etc/exports文件中增加一行:

/mirror node1(rw) node2(rw) node3(rw) node4(rw)

2. 在其他节点上,也建一个/mirror目录,关在/etc/fstab文件中增加一行:

server:/mirror /mirror nfs rw,bg,soft 0 0

3. /mirror这个目录从服务器上输出,装载在各个客户端,以便在各个节点间进行软件任务的分发。

4. 在服务器节点上,安装MPICH。MPICH的文档可在

5.任何一个集群用户(你必须在每一个节点新建一个相同的用户),必须在/mirror目录下建一个属于它的子目录,如 /mirror/username,用来存放MPI程序和共享数据文件。这种情况,用户仅仅需要在服务器节点上编译MPI程序,然后将编译后的程序拷贝到在/mirror目录下属于它的的子目录中,然后从他在/mirror目录下属于它的的子目录下使用p4 MPI策略运行MPI程序。

2.3 MPICH安装指南

1.如果你有gunzip,就d下载mpich.tar.gz,要不然就下载mpich.tar.Z。你可以到http://www.mcs.anl.gov/mpi/mpich/downloa下载,也可以使用匿名FTP到ftp.mcs.anl.gov的pub/mpi目录拿。(如果你觉得这个东西太大,你可以到pub/mpi/mpisplit中取分隔成块的几个小包,然后用cat命令将它们合并)

2.解压:gunzip c mpich.tar.gz  tar xovf-(或zcat mpich.tar.Z tar xovf-)

3.进入mpich目录

4.执行:./configure为MPICH选择一套适合你的实际软硬件环境的参数组,如果你对这些默认选择的参数不满意,可以自己进行配置(具体参见MPICH的配置文档)。最好选择一个指定的目录来安装和配置MPICH,例如:

./configure -prefix=/usr/local/mpich-1.2.0

5.执行:make >&make.log 这会花一段较长的时间,不同的硬件环境花的时间也就不同,可能从10分钟到1个小时,甚至更多。

6.(可选)在工作站网络,或是一台单独的工作站,编辑mpich/util/machines/machines.xxx(xxx是MPICH对你机器体系结构取的名称,你能很容易的认出来)以反映你工作站的当地主机名。你完全可以跳过这一步。在集群中,这一步不需要。

7.(可选)编译、运行一个简单的测试程序:

cd examples/basic

make cpi

ln s ../../bin/mpirun mpirun

./mpirun np 4 cpi

此时,你就在你的系统上运行了一个MPI程序。

8.(可选)构建MPICH其余的环境,为ch_p4策略使

用安全的服务会使得任何启动速度加快,你可以执行以下命令构建:

make serv_p4

(serv_p4是一个较新的P4安全服务的版本,它包含在MPICH 1.2.0版中),nupshot程序是upshot程序的一个更快版本,但他需要tk 3.6版的源代码。如果你有这个包,你就用以下命令可以构建它:

make nupshot

9.(可选)如果你想将MPICH安装到一个公用的地方让其它人使用它,你可以执行:

make install 或 bin/mpiinstall

你可以使用-prefix选项指定MPICH安装目录。安装后将生成include、lib、bin、sbin、www和man目录以及一个小小的示例目录,

到此你可以通告所有的用户如何编译、执行一个MPI程序。

(1)下载jdk,在官网下载,下载rpm的包

(2)hadoop包的下载,官网上下载

 download hadoop->release->mirror site(镜像站)->随便选择离自己近的(HTTP下的第一个)->选择2.7.2->下载.tar.gz

(3)将两个包远程传输到linux虚拟机中

(4)将主机名和ip地址进行适配,让我们的ip地址和主机名(如bigdata)相匹配:写到/etc/hosts里面

 vi /etc/hosts

 按“i”进入插入状态  将原有的地址注释掉

 在新的一行输入:ip地址 主机名(如172.17.171.42 bigdata)(注:可以双击xshell的窗口再打开一个连接窗口,可以在新的窗口查询ip地址并进行复制)

 按“Esc”退出插入状态

 输入:wq保存退出

 修改完之后可以输入hostname回车,查看是否成功

 reboot:重启,使得刚刚的修改生效

(5)将包放到opt下:cp hadoop-2.7.2.tar.gz /opt/

 cp jdk-8u111-linux-x64.rpm /opt/

 进入opt:cd /opt/

 查看opt下的文件:ll

(6)安装jdk,配置jdk的环境变量

 安装命令:rpm -ivh jdk-Bu101-linux-x64.rpm

 配置环境变量:进入profile进行编辑:vi /etc/profile

 并按照上面的方式在最后写入并保存:JAVA_HOME=/usr/java/default/(/usr/java/default/是jdk的安装目录)

 打印JAVA_HOME检验是否配置好:echo $JAVA_HOME结果发现打印出来的没有内容因为我们对/etc/profile的修改需要通过以下命令对它生效source /etc/profile。再次输入echo $JAVA_HOME,打印结果为/usr/java/default/

(7)验证jdk安装好:java -version

(8)配置SSH(免密码登录)

 回到根目录:cd  安装SSH秘钥:ssh-keygen -t rsa会自动在/root/.shh/目录下生成

 查看目录:ll .ssh/有两个新生成的文件id_rsa(私钥),id_rsa.pub(公钥)

 进入.ssh/:cd .ssh/

 将公钥写入authorized_key中:cat id_rsa.pub >>authorized_keys

 修改authorized_keys文件的权限:chmod 644 authorized_keys

 修改完后退出.ssh的目录cd进入初始目录输入:ssh bigdata(bigdata为你要远程登录的主机名或者ip地址)第一次登录需要确认是否需要继续登录输入yes继续登录

 退出exit

(9)安装及配置hadoop

 解压:tar zxf hadoop-2.7.2.tar.gz

 查看/opt目录下是否已经存在解压的文件:ll(结果为出现hadoop-2.7.2)

 继续查看hadoop-2.7.2里的内容:cd hadoop-2.7.2

 配置HADOOP_HOME:修改/etc/profile

 进入hadoop的配置文件目录cd /opt/hadoop-2.7.2/etc/hadoop/,会用的的配置文件如下:

 core-site.xml

 配置hadoop的文件系统即HDFS的端口是什么。

 配置项1为default.name,值为hdfs://bigdata:9000(主机名:bigdata也可也写成ip地址,端口9000习惯用)

 配置项2为hadoop临时文件,其实就是配置一个目录,配置完后要去创建这个目录,否则会存在问题。

 配置项3分布式文件系统的垃圾箱,值为4320表示3分钟回去清理一次

<property>

<name>fs.default.name</name>

<value>hdfs://bigdata:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoop-2.7.2/current/tmp</value>

</property>

<property>

<name>fs.trash.interval</name>

<value>4320</value>

</property>

 hdfs-site.xml

 配置项1,namenode的细节实际上就是一个目录

 配置项2,datanode的细节,真实环境中datanode的内容不需要再namenode的系统下配置,在此配置的原因是我们的系统是伪分布式系统,namenode和datanode在一台机器上

 配置项3,副本的数量,在hdfs中每个块有几个副本

 配置项4,HDFS是否启用web

 配置项5,HDFS的用户组

 配置项6,HDFS的权限,现在配置为不开启权限

<property>

<name>dfs.namenode.name.dir</name>

<value>/opt/hadoop-2.7.2/current/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/opt/hadoop-2.7.2/current/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.permissions.superusergroup</name>

<value>staff</value>

</property>

<property>

<name>dfs.permissions.enabled</name>

<value>false</value>

</property>

 创建配置文件中不存在的目录:mkdir -p /opt/hadoop-2.7.2/current/data

 mkdir -p /opt/hadoop-2.7.2/current/dfs/name

 mkdir -p /opt/hadoop-2.7.2/current/tmp

 yarn-site.xml

 配置项1,resourcemanager的hostname,值为你运行的那台机器的主机名或IP地址

 配置项2,nodemanager相关的东西

 配置项3,nodemanager相关的东西

 配置项4,resourcemanager的端口,主机名+端口号(IP+端口)

 配置项5,resourcemanager调度器的端口

 配置项6,resourcemanager.resource-tracker,端口

 配置项7,端口

 配置项8,端口

 配置项9,日志是否启动

 配置项10,日志保留的时间长短(以秒为单位)

 配置项11,日志检查的时间

 配置项12,目录

 配置项13,目录的前缀

<property>

<name>yarn.resourcemanager.hostname</name>

<value>bigdata</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>bigdata:18040</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>bigdata:18030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>bigdata:18025</value>

</property><property>

<name>yarn.resourcemanager.admin.address</name>

<value>bigdata:18141</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>bigdata:18088</value>

</property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>86400</value>

</property>

<property>

<name>yarn.log-aggregation.retain-check-interval-seconds</name>

<value>86400</value>

</property>

<property>

<name>yarn.nodemanager.remote-app-log-dir</name>

<value>/tmp/logs</value>

</property>

<property>

<name>yarn.nodemanager.remote-app-log-dir-suffix</name>

<value>logs</value>

</property>

 mapred-site.xml

 没有mapred-site.xml,输入vi mapred-按“TAB”发现有mapred-site.xml.template,对该文件进行复制

 cp mapred-site.xml.template mapred-site.xml  配置项1,mapreduce的框架

 配置项2,mapreduce的通信端口

 配置项3,mapreduce的作业历史记录端口

 配置项4,mapreduce的作业历史记录端口

 配置项5,mapreduce的作业历史记录已完成的日志目录,在hdfs上

 配置项6,mapreduce中间完成情况日志目录

 配置项7,mapreduce的ubertask是否开启

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobtracker.http.address</name>

<value>bigdata:50030</value>

</property>

<property>

<name>mapreduce.jobhisotry.address</name>

<value>bigdata:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>bigdata:19888</value>

</property>

<property>

<name>mapreduce.jobhistory.done-dir</name>

<value>/jobhistory/done</value>

</property>

<property>

<name>mapreduce.intermediate-done-dir</name>

<value>/jobhisotry/done_intermediate</value>

</property>

<property>

<name>mapreduce.job.ubertask.enable</name>

<value>true</value>

</property>

 slaves

bigdata

 hadoop-env.sh

JAVA_HOME=/usr/java/default/

 格式化分布式文件系统(hdfs):hdfs namenode -format

 成功的标志: INFO common.Storage: Storage directory /opt/hadoop-2.7.2/current/dfs/namehas been successfully formatted.

 启动Hadoop集群:/opt/hadoop-2.7.2/sbin/start-all.sh

 验证Hadoop集群是否正常启动:

 jps,系统中运行的java进程

 通过端口查看(关闭防火墙或者service iptables stop在防火墙的规则中开放这些端口):

 http://bigdata:50070(http://http://192.168.42.209/:50070),分布式文件系统hdfs的情况

 yarn http://bigdata:18088(http://http://192.168.42.209/:50070)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8995430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存