Linux下搭建HA高可用集群

HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务。 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。

下面我们使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务。
试验准备工作:
两台机器,都是CentOS6.6,各增加一块网卡eth1,使用主机模式连接vmnet1,并设定为192.168.11.0网段;eth0为NAT模式,网段为192.168.20.0网段;

Linux下搭建HA高可用集群

开机启动后,拷贝ifcfg-eth0 到 ifcfg-eth1,修改DEVICE为eth1,ip地址设为:192.168.11.20
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-eth1
# cat ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.11.20

设置完成后,重启网卡,ifconfig查看eth0、eth1的ip地址;

# /etc/init.d/network restart
#ifconfig

主机的配置:

hostname hello
eth0:192.168.20.20
eth1:192.168.11.20

从机的配置:
hostname web
eth0:192.168.20.30
eth1:192.168.11.30

1、设置hostname,分别为hello和 web;
2、主从都需要关闭防火墙;关闭selinux;
# iptables -F
# setenforce 0
setenforce: SELinux is disabled

3、 vi /etc/hosts  //主从都需要增加内容如下: 
192.168.20.20 hello 
192.168.20.30 web

4、安装epel扩展源
# yum install -y epel-release

5、两个机器都安装heartbeat、libnet

#yum  install -y heartbeat*  libnet  nginx

nginx做代理服务;
6、主上(hello)配置
Heartbeat软件的安装目录为/etc/ha.d目录;
拷贝配置文件的模板到/etc/ha.d目录;
cd /usr/share/doc/heartbeat-3.0.4/
cp  authkeys  ha.cf haresources  /etc/ha.d/
cd /etc/ha.d

vi  authkeys  //去掉前面的#号,或加入下面的内容:

auth 3
3 md5 Hello!

更改权限为600

chmod 600 authkeys

vi  haresources  //加入

hello 192.168.11.100/24/eth1:0 nginx

192.168.11.100 ip地址是流动ip,虚拟ip;用来绑定服务的;子网掩码为24位;使用eth1:0绑定虚拟ip,并运行nginx进行测试;

注意:两台主机的haresources文件设置必须完全一致。

vi  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.11.30
auto_failback on
node    hello
node    web
ping 192.168.11.1
respawn hacluster /usr/lib/heartbeat/ipfail

7、把主上的三个配置拷贝到从上:

#cd /etc/ha.d/
#scp  authkeys  ha.cf haresources  web:/etc/ha.d/

8、从上(web) 只需要编辑ha.cf
vi  /etc/ha.d/ha.cf  //只需要更改一个地方
ucast eth1 192.168.11.30 改为  ucast eth1 192.168.11.20 
9、启动heartbeat
先主,后从
#service heartbeat start

10、检查测试
ifconfig 查看是否有 eth1:0 出现则说明主已经开始工作;
[root@yong ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:43:3D:32 
          inet addr:192.168.20.20  Bcast:192.168.20.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe43:3d32/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:433 errors:0 dropped:0 overruns:0 frame:0
          TX packets:429 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37095 (36.2 KiB)  TX bytes:75381 (73.6 KiB)
          Interrupt:18 Base address:0x2000 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:43:3D:3C 
          inet addr:192.168.11.20  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe43:3d3c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:396 errors:0 dropped:0 overruns:0 frame:0
          TX packets:399 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:83641 (81.6 KiB)  TX bytes:89725 (87.6 KiB)
          Interrupt:18 Base address:0x2080 
           
eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:43:3D:3C 
          inet addr:192.168.11.100  Bcast:192.168.11.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2080 
           
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:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

查看是否有nginx进程、heartbeat进程;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/43e4a8ec4f806d6315ffea1d95d07bb7.html