一.Heratbeat:
Heartbeat是High Availability项目中的一个组件,目前也是开源HA项目中最成功的一个例子,它提供了所有HA软件所需要的基本功能,比如心跳检测和资源接管、监测集群中的服务系统,在集群中的节点间转移共享ip地址的所有者等。他的缺点就是配置起来比较麻烦,而且如果双机之间的心跳线出现了问题,会很容易形成脑裂。
下载heartbeat安装包:
heartbeat-3.0.4-2.el6.x86_64.rpm
heartbeat-libs-3.0.4-2.el6.x86_64.rpm
heartbeat-devel-3.0.4-2.el6.x86_64.rpm
配置yum源:
vim /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.254.61/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.254.61/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.254.61/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.254.61/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.254.61/rhel6.5/ScalableFileSystem
gpgcheck=0
yum install heartbeat-* -y ##在server4和server5上安装heartbeat
rpm -q heartbeat -d ##查询一个已经安装软件的文档安放位置
Server4(设置为主服务器,ip为172.25.16.4):
cd /usr/share/doc/heartbeat-3.0.4/
cp ha.cf authkeys haresources /etc/ha.d/ ##拷贝主配置文件
cd /etc/ha.d/
vim ha.cf ##编辑主配置文件
keep 2:心跳的时间间隔,默认时间单位为秒
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已死亡
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录在日志中
initdead 60:系统启动或重启之后需要经过一段时间网络才能正常工作,该情况用于解决这种情况产生的时间间隔,取值至少为deadtime的两倍
uppport 694:设置广播通信使用的端口
auto_failback on:两台节点有主次之分,当主节点出现故障时,备用的会顶替,如果为on时,主节点恢复正常,备用节点会将工作交还回去
vim authkeys
vim authkeys
chmod 600 authkeys
vim haresources
scp/etc/yum.repos.d/rhel-source.repo root@172.25.254.5:/etc/yum.repos.d/rhel-source.repo
scp ha.cf authkeys haresources server5:/etc/ha.d/
/etc/init.d/heartbeat start
Server5:(处于热备状态的服务器,ip为172.25.254.5)
chmod 600 authkeys
/etc/init.d/heartbeat start
测试;
如果在4(主节点)执行ifdown eth0,此时处于热备状态的5就会接替4上的工作,实现高可用
测试:
如果此时主节点4的服务器恢复正常,那么5将重新把工作交还给4
测试:
二.LVS:
Lvs是一个虚拟的集群管理系统,采用ip负载均衡技术和基于内容请求分发技术
Server4(调度器):
yum install ipvsadm -y
ip addr
ipvsadm -L ##显示内核中虚拟服务器列表
Ipvsadm -C ##清除内核虚拟服务器列表中的所有规则
添加VIP的设置:
ipvsadm -A -t 172.25.254.116:80 -s rr ##在内核的虚拟服务器列表中添加一条新的虚拟ip记录,也就是增加一台新的虚拟服务器
ip addr add 172.25.254.116/24 dev eth0
ipvsadm -L
添加Real Server的设置;
ipvsadm -a -t 172.25.254.116:80 -r 172.25.254.2:80 -g ##在内核虚拟服务器的列表的一条记录里添加一条新的Real server
ipvsadm -a -t 172.25.254.116:80 -r 172.25.254.3:80 -g
ipvsadm -L
/etc/init.d/ipvsadm save ##保存添加的策略
cat /etc/sysconfig/ipvsadm ##查看添加到配置文件的策略
/etc/init.d/httpd start
Server2和Server3(real server);
/etc/init.d/httpd start
下载arptables_jf:
yum install arptables_jf ##安装arp防火墙用于屏蔽数据包,拦截ip冲突,因为vip与real server的地址一样,有vip到real server中间没有经过路由,所以进入real server是就需要把虚拟ipdrop调,拦截调real-server的虚拟ip
arptables -A IN -d 172.25.254.116 -j DROP ##防止客户端去访问real server的虚拟ip,只要输入进来就Drop掉
arptables -A OUT -s 172.25.24.116 -j mangle --mangle-ip-s 172.25.254.2
arptables -A OUT -s 172.25.254.116 -j mangle --mangle-ip-s 172.25.254.3
##由于tcp三次握手的原因,所以出去的时候仍要以vip地址出去才会实现三次握手,但是真正将数据传输给客户端的是 realserver
/etc/init.d/arptables_jf save ##保存添加的arp策略
在测试端:
arp -an |grep 116 ##查询之前访问的缓存,如果是Real server上的则要把他清除掉
arp -d 172.25.16.116 ##删除之前访问的缓存
三.Ldirectord健康检查
Ldirectord进程通过向Real server的RIP发送资源访问请求,并通过返回的响应信息来确定real server的运行状态,在Director上,每一个vip都需要一个单独的Ldirectord进程。如果real server端没有正常响应请求,那么Ldirectord进程将通过ipvsadm命令将此real Server从IPVS表中移除,一旦real server重新上线,Ldirectord将会把他重新添加到IPVS表中
下载:ldirectord-3.9.5-3.1.x86_64.rpm
安装:um install ldirectord-3.9.5-3.1.x86_64.rpm -y
在server4安装健康检查服务,当lvs实现负载均衡时,如果一个real server坏掉,将康检查会将工作都交给正常运行的real server,使客户端不会得到错误的数据
cd /usr/share/doc/ldirectord-3.9.5
cp ldirectord.cf /etc/ha.d/ ##拷贝主配置文件到/etc/ha.d/下生效
cd /etc/ha.d/
vim ldirectord.cf
/etc/init.d/ldirectord start ##开启健康服务
测试:
四.Keepalived:
Keepalived工作原理是VRRP虚拟路由冗余协议
下载:keepalived-1.2.20.tar.gz
解压安装:
打开两台虚拟机server4:(172.25.16.4)和server5:(172.25.16.5)
server4作为主服务器,server5作为备用
server4:
tar zxf /mnt/keepalived-1.2.20.tar.gz
cd keepalived-1.2.20/
./configure --prefix=/usr/local/keepalived ##注意解决依赖性的问题
make && make install
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin
chmod +x /etc/init.d/keepalived ##增加执行权限
vim /etc/keepalived/keepalived.conf
server4:
server5:
scp /usr/local/keepalived server5:/etc/keepalived
在server5中作和server4一样的操作
/etc/init.d/keepalived ##开启服务
Ipvstables -L
关闭主服务器的keepalived服务,查看server5是否接管了服务