Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239522
  • 博文数量: 65
  • 博客积分: 1430
  • 博客等级: 中尉
  • 技术积分: 700
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 00:30
文章分类
文章存档

2011年(65)

分类: LINUX

2011-09-15 21:28:41

我们今天一起来使用Corosync/Openais+Pacemaker来架构一个Web HA :
----------------------------------------------------------------------------------------------
所用到的软件
cluster-glue
cluster-glue-libs
heartbeat
openaislib
resource-agents
corosync
heartbeat-libs
pacemaker
corosynclib
libesmtp
pacemaker-libs
libibverbs
librdmacm
lm_sensors
libtool-ltdl
openhpi-libs
openhpi
perl-TimeDate
下载地址:
         
         
-------------------------------------------------------------------------
1.准备系统:
   不要求每个节点具备两块网卡。
   节点名字必须跟uname -n出来的一致。
   两个节点之间彼此间通信靠解析名实现
   双节点间可通过某个ip通信
   向外提供服务用到vip
     node1 192.168.0.20
     node2 192.168.0.21
     vip 192.168.0.100
   准备两台干净的虚拟机 
-------------------------------------------------------------------------
2.对于准备工作的配置
node1的配置
1)配置ip:
   vim /etc/sysconfig/network-scripts/ifcfg-eth0
   修改两行
   BOOTPROTO static
   IPADDR 192.168.0.20
   :wq
2)重启网络服务:
   service network restart
3)将主机名改为node1.a.org:
   vim /etc/sysconfig/network
    hostname=node1.a.org
   :wq
   hostname node1.a.org
   uname -n
4)编辑/etc/hosts实现node1和node2的解析:
   vim /etc/hosts
   192.168.0.20 node1.a.org node1(node1是别名)
   192.168.0.30 node2.a.org node2
   :wq
5)生成密钥并将公钥传给node2:
   ssh-keygen -t rsa
   ssh-copy-id -i .ssh/id_rsa.pub

   ssh node1 'ifconfig'
node2的配置
   步骤同node1,只需要将1)中的ip改为192.168.0.30,将3),5)中的node1改为node2即可。
-------------------------------------------------------------------------
3.安装所依赖的软件包:
node1,node2上都配置:
  将所需要的软件包下载到/root目录下,然后使用如下命令安装即可
  yum --nogpgcheck localinstall *.rpm
------------------------------------------------------------------------
4.配置corosync:
node1: 
  cp corosync.conf.example corosync.conf
  vim corosync.conf
   将bindnetaddr所在行改为bindnetaddr:192.168.0.0
   在最后添加:
   service {
        ver:  0
        name: pacemaker
    }
   ai***ec {
      user:  root
      group: root
    }
 :wq
 mkdir /var/log/cluster(创建日志文件的目录)
 corosync-keygen(为corosync生成密钥文件)
 scp -p authkey corosync.conf node2:/etc/corosync
 (将密钥文件和配置文件拷一份给node2,就不用再在node2上配置了)
node2:
 mkdir /var/log/cluster (创建日志文件的目录)
-------------------------------------------------------------------------
5.启动并验证: 
  node1
1)启动
   service corosync start
2)验证
   grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages
   grep TOTEM /var/log/messages
   grep ERROR: /var/log/messages|grep -v unpack_resources
   grep pcmk_startup /var/log/messages
  如果验证没有错误,则可以使用如下命令开启node2上的corosync服务了,node2的服务必须通过node1来开启,否则会出现问题。
  ssh node2 -- /etc/init.d/corosync start。
-------------------------------------------------------------------------
6.同步两节点的时间:
  node1:hwclock -s
  node2:hwclock -s(都与系统时间一致)
   crm status查看当前集群节点状态
-------------------------------------------------------------------------
7.配置高可用服务:
node1:
1)查看corosync当前的配置信息
   crm configure show
2)检查是否有故障
   crm_verify -L
    此时会报错的,因为没有stonith设备,可以用下面命令手动修改全局属性stonith-enabled把stonish禁掉
   crm configure property stonith-enabled=false
   对于两个节点的HA,比较特别,没有stonith也让它运行。
   crm_verify -L
   此时应该就没错了
3)配置第一个资源
   crm回车
   configure回车
   primitive WebIP ocf:heartbeat:IPaddr params ip=192.168.0.100
  (webip是名字,params指定参数)
   show
   commit(提交)
   exit(退出)
   ifconfig
-------------------------------------------------------------------------
8.配置apache高可用服务
node1:
  yum install httpd
  crm
  configure
  primitive WebServer lsb:httpd
  commit
  group Web WebIP WebServer(将两个资源WebIP和WebServer配置到一个组Web里)
  commit
  exit
  service httpd start
  chkconfig httpd off
  配置网页文件
  echo "node1.a.org" >/var/www/html/index.html
node2
  yum install httpd
  echo "node2.a.org" >/var/www/html/idnex.html
  service httpd start
  chkconfig httpd stop
  ssh node1 '/etc/init.d/corosync stop'(在node2上把node1停掉)
  crm status
  此时集群没有quorum(法定票数)默认不让资源流转到node2上
  手动把quorum关掉: 
  ssh node1 '/etc/init.d/corosync start'
  crm configure property no-quorum-policy=ignore
  ssh node1 '/etc/init.d/corosync stop'
  crm status
  此时资源会流转到node2上,在浏览器里刷一下看看
  ssh node1 '/etc/init.d/corosync start'
  此时资源会重新流转回来,在浏览器里刷一下看看
  经常流转资源对资源是不好的,此时我们可以定义资源默认粘性,让其流过去后就别再流回来了。
  crm configure rsc_defaults resource-stickiness=100
  crm status看资源在哪个节点运行
  ssh node1 '/etc/init.d/corosync stop'
  刷浏览器
  ssh node1 '/etc/init.d/corosync start'
  刷浏览器,此时就流不回去了。因为资源在谁身上谁的粘性就是100,在两个节点都正常的情况下谁的粘性大就在谁那里呆着。
-------------------------------------------------------------------------
阅读(3234) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~