Corosync高可用集群的实现

实验目的: 实现web服务的高可用

实验环境: 虚拟机软件为VMware6.0版. 虚拟系统为32位Redhat5.4 企业版.

实验拓补图:

2011-09-15 21-42-13

说明:  新建两台虚拟机网卡使用NAT模式. VIP192.168.145.254为提供web服务的IP地址.配置时为root用户.

配置步骤:

Node1:

1.配置静态IP

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

将'”BOOTPROTO=”后该为”static”.

并添加如下内容:

IPADDR=192.168.145.11
NETMASK=255.255.255.0

2.配置主机名

#vi /etc/sysconfig/network

将”HOSTNAME=”后该为”node1.a.org”.

#hostname node1.a.org

#uname –n 

确认显示出以下内容:

image

Node2:

1.配置静态IP

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

将'”BOOTPROTO=”后该为”static”.

并添加如下内容:

IPADDR=192.168.145.12
NETMASK=255.255.255.0

2.配置主机名

#vi /etc/sysconfig/network

将”HOSTNAME=”后该为”node2.a.org”.

#hostname node2.a.org

#uname –n

确认显示出以下内容:

image

Node1:

3.编辑hosts文件

#vi /etc/hosts

添加以下内容

192.168.0.5        node1.a.org node1
192.168.0.6        node2.a.org node2

4.配置ssh公钥认证连接,即ssh连接不需要输入密码

#ssh-keygen -t rsa

#ssh-copy-id –i /root/.ssh/id_rsa.pub 'root@node2'     [注:此命令后需输入Node2上root用户密码]

#ssh node2  'ifconfig'                 

[注:如果不用输入密码即可显示Node2的IP地址表示配置成功]

5.复制hosts文件到Node2

#scp /etc/hosts root@node2:/etc

6.安装所需软件

#yum install –y httpd

#chkconfig httpd off     //关闭httpd服务开机启动

#echo “Node1” > /var/www/html/index.html     //写入网页文件

安装corosync和pacemaker,首先下载所需要如下软件包至本地某专用目录(这里为/root/corosync)

cluster-glue
cluster-glue-libs
heartbeat
openaislib
resource-agents
corosync
heartbeat-libs
pacemaker
corosynclib
libesmtp
pacemaker-libs

#cd /root/corosync

#yum localinstall –y –nogpgcheck ./*

7.编辑配置文件

#cd /etc/corosync

#cp corosync.conf.example corosync.conf

将”totem { ”下”interface { ”中”bindnetaddr:”后改为”192.168.145.0”

添加如下内容:

service {
     ver:   0                   

     name:  pacemaker 
aisexec {                      //定义运行是使用哪个用户的身份,貌似不写也行
     user: root
     group: root
  }

8.建立日志目录

#mkdir  /var/log/cluster

9.生成authkey文件

#corosync-keygen         //新安装的系统执行此命令时等待时间可能会稍长

#scp -p authkey corosync.conf node2:/etc/corosync    //复制配置文件到Node2

#ssh node2 'mkdir -v /var/log/cluster'

Node2

3.配置ssh

配置ssh公钥认证连接,即ssh连接不需要输入密码

#ssh-keygen -t rsa

#ssh-copy-id –i /root/.ssh/id_rsa.pub 'root@node1' [注:此命令后需输入Node1上root用户密码]

#ssh node1 'ifconfig'

[注:如果不用输入密码即可显示Node1的IP地址表示配置成功]

4.安装所需软件

#yum install –y httpd

#chkconfig httpd off //关闭httpd服务开机启动

#echo “Node2” > /var/www/html/index.html //写入网页文件

安装corosync和pacemaker     [同Node1配置]

#cd /root/corosync

#yum localinstall –y –nogpgcheck ./*

5.同步时间

#hwclock –s

#ssh node1 'hwclock -s'

6.启动服务

#service corosync start

#ssh node1 ‘ service corosync start’

7.定义资源

#crm configure primitive WebIP ocf:heartbeat:IPaddr params ip=192.168.145.254

#crm configure primitive WebServer lsb:httpd

#crm configure group Web WebIP WebServer   

//默认该集群会将资源运行在不同节点上,定义组资源可将资源运行在一个节点上
[注: 因为是两节点高可用服务因此需执行以下命令定义全局属性]

#crm configure property stonith-enabled=false               //禁用STONITH

#crm configure property no-quorum-policy=ignore       //禁用quorum

8.启动服务

#service corosync start

#ssh node1 'service corosync start'

#crm  status          //查看集群信息

可能会显示如下信息

image

稍等一下该集群就可完全正常启动了

#watch -n 1 'crm status'   //如果感觉刷新crm status很纠结,可使用此命令

如果看到如下内容表示该集群已可正常使用

image

Current DC: node1.a.org  

显示的为被选为DC的节点

Resource Group: Web
    WebIP    (ocf::heartbeat:IPaddr):        Started node2.a.org
    WebServer  (lsb:httpd):    Started node2.a.org
显示的为哪些资源运行在哪个节点上

--------------------------------------------------------------------------------

*注:如果发现httpd服务无法正常启动,请先停掉集群服务,命令如下

#service corosync stop

#ssh node1 ‘service corosync stop’

之后再两个节点上启动httpd服务,之后再停止httpd服务.

最后启动集群服务

--------------------------------------------------------------------------------

好了现在验证一下集群的功能

1.在本机的浏览器中输入192.168.145.254

会显示如下内容:

image

2.这里资源运行在Node2上

所以在Node1上执行如下命令

#ssh node2 ‘service corosync stop’

#crm status

Resource Group: Web
WebIP (ocf::heartbeat:IPaddr): Started node1.a.org
WebServer (lsb:httpd): Started node1.a.org

这时会发现资源已经转到Node1上运行

3.刷新本机浏览器会发现显示内容已变为:

image

你可能感兴趣的:(集群,职场,休闲,corosync)