码迷,mamicode.com
首页 > 其他好文 > 详细

HA高可用集群

时间:2015-02-07 19:05:40      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:ha   heartbeat   

★什么时HA?

  HA(high available)高可用,又被叫做双机热备,用于关键性业务。通俗理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务。

★使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务。

  只要在/etc/init.d/下可以找到的web服务都可以使用

  • 试验环境:
    开启两台虚拟机, 系统都是centos6.5,网卡、ip信息如下:
    yue   192.168.182.100   eth1
    test  192.168.182.105   eth0

  • 为了防止实验过程中出现不必要的错误,我们先在主上关闭防火墙和selinux服务

    关闭防火墙:  iptables -F 
    关闭selinux: setenforce 0

  • 在主上编辑配置文件  vim /etc/hosts

    并加入以下信息  
    192.168.182.100 yue  
    192.168.182.105 test

  • 两台机器上均需要安装epel扩展源,因为接下来在安装heartbeat时会用到epel扩展源
    可以先wget到本地,再使用rpm安装

  • 两台机器上都安装heartbeat、libnet、nginx

    yum install -y heartbeat*

    yum install -y libnet

    yum install -y nginx

  • cd /usr/local/doc/heartbeat-3.0.4/

    cp authkeys ha.cf haresources /etc/ha.d/    <== 复制三个文件到/etc/ha.d/目录下

  • cd /etc/ha.d/

    vim authkeys  <== 编辑authkeys文件

    将文本最后内容改为以下形式

    auth 3    <== 必须有此行的内容并将数字改为3,否则报错
    #1 crc
    #2 sha1 HI!
    3 md5 Hello!

  • 修改authkeys权限为600

    chmod 600 authkeys

  • vim haresources 并加入以下内容

    yue 192.168.182.10/24/eth1:0 nginx

     ①       ②       ③   ④     ⑤

    ① hostname主机名

    ② 虚拟网卡的虚拟ip

    ③ 24网段

    ④ 虚拟网卡名

    ⑤ 我们搭建HA所使用的线上服务(这里使用的是nginx服务)

[root@yue ~]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0C:29:16:83:95  
          inet addr:192.168.182.100  Bcast:192.168.182.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe16:8395/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:96 errors:0 dropped:0 overruns:0 frame:0
          TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9684 (9.4 KiB)  TX bytes:23194 (22.6 KiB)
          Interrupt:19 Base address:0x2000

eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:16:83:95  
          inet addr:192.168.182.10  Bcast:192.168.182.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:19 Base address:0x2000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:61 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:15375 (15.0 KiB)  TX bytes:15375 (15.0 KiB)
==> 这也是一块网卡配置多个ip的原理

  • vim ha.cf 清空文本并加入以下内容

    debugfile /var/log/ha-debug
    logfile /var/log/ha-log
    logfacility     local0
    keepalive 2
    deadtime 30
    warntime 10
    initdead 60
    udpport 694
    ucast eth1 192.168.182.105      <== 从ip
    auto_failback on
    node    yue
    node    test
    ping 192.168.182.1              <== 一个测试ip,主要用来测试能否ping通
    respawn hacluster /usr/lib/heartbeat/ipfail

  • 把主(yue)上编辑的三个配置文件拷贝到从(test)上

    cd /etc/ha.d/
    scp  authkeys  ha.cf haresources   192.168.182.105:/etc/ha.d/

  • 到从上编辑ha.cf文件

    vim  /etc/ha.d/ha.cf   只需改动一个地方即可
    ucast eth1 192.168.11.105(从ip)==> ucast eth1 192.168.11.100 (主ip)

  • 因为我主从网卡名不一样,所以从上还需把haresources 文件中的网卡名改成从的

    要不然无法启动heartbeat提示

  • 启动nginx服务

    nginx服务监听的是80端口,因为我之前配置apache的时候曾将其监听端口改为了80,所以启动nginx服务时出现了端口冲突,需要先kill掉已经在运行的监听80的服务

  • 启动heartbeat服务

    启动顺序要严格,先主后从

    /etc/init.d/heartbeat start
    可能由于我使用的是虚拟机,所以启动的很缓慢,虚拟网卡生成的也很慢~~

[root@yue ha.d]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
Done.

启动heartbeat的提示,但是通过测试虽然提示这个但heartbeat确实启动了

  • 配置检查

    ifconfig 查看是否生成了虚拟网卡 eth1:0

    ps aux |grep nginx 查看是否有nginx进程

[root@yue ha.d]# ps aux |grep nginx
root      2123  0.0  0.1  15628  1496 ?        Ss   14:01   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     2124  0.0  0.1  15784  1944 ?        S    14:01   0:00 nginx: worker process                   
root      2298  0.0  0.0   5976   748 pts/0    S+   14:45   0:00 grep nginx

    ps aux |grep heart 查看是否有heartbeat进程

[root@yue ha.d]# ps aux |grep heart
root      1397  0.1  0.6   6712  6708 ?        SLs  14:00   0:04 heartbeat: master control process
root      1406  0.0  0.6   6416  6412 ?        SL   14:00   0:00 heartbeat: FIFO reader      
root      1407  0.0  0.6   6412  6408 ?        SL   14:00   0:00 heartbeat: write: ucast eth1
root      1408  0.0  0.6   6412  6408 ?        SL   14:00   0:00 heartbeat: read: ucast eth1
root      1409  0.0  0.6   6412  6408 ?        SL   14:00   0:02 heartbeat: write: ping 192.168.182.1
root      1410  0.0  0.6   6412  6408 ?        SL   14:00   0:00 heartbeat: read: ping 192.168.182.1
498       1623  0.0  0.1   5308  1500 ?        S    14:01   0:00 /usr/lib/heartbeat/ipfail
root      2300  0.0  0.0   5980   756 pts/0    S+   14:46   0:00 grep heart
★服务测试

  • 在主上设置禁止ping

    iptables -I INPUT -p icmp -j DROP

    iptables -D INPUT -p icmp -j DROP  <== 恢复

  • 主上停止heartbeat服务

    主上停止后虚拟网卡被释放掉

    我们切换到从上,ifconfig,发现从上立马生成了虚拟网卡继续提供服务


有问题养成查看日志的习惯 /var/log/ha-log

实验是使用两台机器,如果是很多台还想使用heartbeat的话就需要分组了


HA高可用集群

标签:ha   heartbeat   

原文地址:http://caoyue.blog.51cto.com/9876038/1612667

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!