第 二 十 七 天 :HA 高 可 用 集 群 搭 建

小Q:凡事都要看得远一点,再远一点,当你迈出第一步,心中必须装着第三步,

第二步才能作为你的筹码,没有筹码的人生,

注定会生存在别人的股掌之中。

今天学了一个特别好的知识,我发现我最近的进度慢,情有可原,一整天就只是看两三个知识点,但是每个知识点我都会研究好长时间,虽然我知道过后我会忘,但

大概我再复习的时候,原理我不会忘,第一遍的目的达到了;

简 介

HA(High Available), 高可用性集群,又被叫做双机热备(Active/Passive),用于关键性业务;是保证业务连续性的有效解决方案,一般有两个或两个以上的节点;当活动节点出现问题,备用节点此时就会侦测到,并立即接续活动节点来执行业务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。

图一是高可用集群的方式,很清晰明了,我就不介绍了;

图二是他的工作原理,讲解一下,只是我的理解啊,有错的话,希望多多指教:

web1服务器为主节点,web2作为主备服务器,当然也可以添加web3作主备服务,流动IP也就是虚拟IP(VIP),左上角为用户,组播为传递心跳信息;

用户通过switch连接流动IP(流动IP同时存在于两个服务器),进行web1主服务器提供的服务,当web1服务中断后,web2会检测到心跳信息停止,于是接过流动IP,继续用户的进程

当然这个过程对于用户是透明的,她只是一直连接着流动IP,除非两台机子都宕掉,VIP中断

否则web1宕掉,VIP转到web2继续提供服务;

今天练习的是用heartbeat搭建高可用服务器

前期准备

两台服务器,我用的两台虚拟机,IP是 主192.168.1.103,备192.168.1.113,流动IP 192.168.1.104

为了实验方便,更改主机名

主:hostname   master             >>>      bash

从:hostname   slave                >>>       bash

双机共同作业

关防火墙:iptables -F         setenforce  0  (getenforce)

域名指向:vim  /etc/hosts

192.168.1.103     master      IP  主机名

192.168.1.113     slave

安装扩展源,为了下载配置HA所用的开源软件 heartbeat

wget  www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm  centos6版32位的

cd     /usr/locla/src

rpm   -ivh    epel-release-6-8_32.noarch.rpm

yum   install   -y   heartbeat                               安装HA的应用软件

yum   install   -y   libnet                                      HA应用依赖的包

这样准备工作就算完成了

配置主备双机

因为HA高可用集群只是实现双机热备,所以需要给他提供热备的服务,比如mysql主从数据热备·tomcat服务·Apache服务

今天我们用nginx服务来展示

进入heartbeat报的位置,拷贝三个模板文件

cd    /usr/share/doc/heartbeat-3.0.4/

cp    ha.cf   haresources  authkeys     /etc/ha.d/

cd    /etc/ha.d/

vim  authkeys 认证文件,关于安全级别设置的

修改处如下图:

chmod   600  authkeys                                改权限

vim    haresources文件,用来设置主机,流动IP,热备的服务

接近底部的位置添加格式:主机名    VIP    服务

192.168.1.114/24/eth0:1

代表的是虚拟IP192.168.1的这个网段,而这个IP是eth0的虚拟网卡,名为eth0:1;添加虚拟网卡的方法见我扩展知识模块;(我文件中的IP写错了哈,少了个1.)

vim  ha.cf    这是最重要的配置文件了,先用重定向清空,添加;

logfile         /var/log/ha.log                     日志文件

debugfile   /var/log/ha-debug.log

#bcast eth1                               心跳使用以太网广播方式,eth1为广播地址

ucast eth1 192.168.1.113             单播形式通信,与上二选一;对方网卡信息

keepalive 2                               每2秒发一次广播

warntime 10                              警告时间,10s钟内没有收到对方节点的信号,发警告到日志

deadtime 30                             30s没收到对方节点的信号认为对方宕机,立即接管对方节点的服务

initdead 120                             为重启系统留的等待时间,防止系统在重启不是宕掉

udpport 694                             广播通信使用的端口

auto_failback on                       如果是on, 则当主节点故障恢复后,服务自动切换回来

node master                              主节点主机名

node slave                                 从节点主机名

ping 192.168.1.11                       仲裁节点,是一个比较强健的设备,比如说交换机,要同网段

respawn hacluster /usr/lib/heartbeat/ipfail       当heartbeat启动时会随着一起启动的进程放到

这里,ipfail是用来检测网络连通性的工具,

hacluster为启动该程序的用户

然后复制三个文件到 从 机上

scp    ha.cf   haresources  authkeys   [email protected]:/etc/ha.d/

输入从机密码,即可

其他两个文件不用改,只需更改 ha.cf 内的ucast ,根据你的主机网卡信息改哦

ucast   eth0  192.168.1.103                                  注意我网卡是eth0

这时候配置就完成了,因为我们用nginx服务进行测试,所以双机上都要安装nginx

yum   install  -y   nginx

测 试 

测试无非就是宕掉主机,看备用服务器是否会立即接替,恢复主机,用户进程会不回自动切换过来;

其实就是验证配置文件中配置的能否实现,当然一些时间累的就不用测了;

启动heartbeat,特别注意,启动有先后顺序,一定要先启动主机

/etc/init.d/heartbeat   start

稍等片刻查看主机

ifconfig   会发现读了一个虚拟网卡eth0:1

ps aux |grep nginx    进程也跑起来了

同样的查看从机会发现什么也没有,因为不可能两台服务器都为用户提供服务

修改nginx服务网站目录的默认页面;

(查找网站目录路径  进入/etc/nginx/nginx.conf     >>>  include 路径    >>>     路径/virtual(default).conf    >>>   进入查找

echo  "1111111111master"   >  /usr/share/nginx

访问192.168.1.104                                                    流动IP

会显示:1111111111master

而双机热备主要是检测用户与服务器的连通性,当不连通时,从机开始接替他与用户连接;

而连通的本质就是因为icmp协议,关闭它就可以断开连通

iptables  -A  INPUT  -p  icmp  -j DROP

主机查看:

ifconfig       ps  aux  |grep  nginx              tail  /var/log/ha_log

从机查看:

ifconfig       ps  aux  |grep  nginx              tail  /var/log/ha_log

主机打开icmp协议

iptables  -D  INPUT  -p  icmp  -j DROP                    -D 删除

和上相同的方式查看,会发现主机又把用户的服务自动切换回来了;

也可以停止主机的 heartbeat服务测试查看:

/etc/init.d/heartbeat    stop

其实配置各种高可用的服务,只是更改了ha.cf文件中的服务名;

然后安装相应的服务软件,比如参考下面的mysql高可用,就是有点太乱

扩展:概念   http://www.linuxidc.com/Linux/2013-08/88522.htm

选用软件根据 http://svsky.blog.51cto.com/10184644/1672431

mysql高可用  http://tianshi10cool.blog.51cto.com/1870184/1665900

===更清晰      http://colderboy.blog.51cto.com/485582/104872

时间: 2024-11-05 15:20:45

第 二 十 七 天 :HA 高 可 用 集 群 搭 建的相关文章

第 二 十 八 天 :高 可 用 负 载 均 衡 集 群 搭 建

小Q: 一直努力着,努力着,偶尔停下来歇歇,又要振作精神,继续努力着, 努力着,实现我的愿望:不敢奢望. 前面我们用heartbeat配置了高可用集群,用Lvs配置了负载均衡集群:而现在我们可以将两者的功能合二为一,用前面介绍高可用的时候讲到了另一个开源软件keepalived和LVS的ipvsadm合作完成: 一.简介: keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层.第4层和第7层交换.作用是检测web服务器的状态,如果有一台web服务器工

第 二 十 八 天 :LB 负 载 均 衡 搭 建 之 LVS

小Q:抱怨,是一种负能量,犹如搬起石头砸自己的脚,与人无益,于己不利,于事无补 前面我们介绍了HA高可用集群,今天我们来了解下LB负载均衡集群,在学习完基本的搭建后,在扩展中方了解到他的知识量是挺大的,详细的我会在开一个目录,重点讲解我所了解到的集群的概念与操作.下面我介绍的重点在于搭建一个简单NAT和DR模式下的LVS集群以及我对LB和LVS的理解,有错误希望大家多多指教: 简介 LB=load balance  负载均衡集群 是集群中的一种集群方式,另外的有高可用集群,高性能计算机群:他主要

Heartbeat+Haresources+NFS配置一个简单的HA高可用+资源共享集群

一定要先安装openssh和openssh-clients两个包 192.168.139.2 [[email protected] .ssh]# ssh-keygen -t rsa -P '' //做ssh双机互信 [[email protected] .ssh]# ssh-copy-id -i ./id_rsa.pub [email protected] ______________________________________________________________________

HA 高可用mysql集群

注意问题: 1.保持mysql用户和组的ID号是一致的: 2.filesystem 共享存储必须要有写入权限: 3.删除资源必须先删除约束,在删除资源: 1.安装数据库,这里使用maridb数据库: node1节点配置: tar -xf maridb-xx.tar.gz -C /usr/local ln -sv maridb-xx mysql cd /usr/local/mysql 初始化数据库,第二台node2不需要在进行初始化直接copy相关配置文件即可 2.配置filesystem NFS

hadoop3.1.1 HA高可用分布式集群安装部署

1.环境介绍 服务器:CentOS 6.8 其中:2 台 namenode.3 台 datanode JDK:jdk-8u191-linux-x64.tar.gz hadoop:hadoop-3.1.1.tar.gz 节点信息: 节点 IP namenode datanode resourcemanager journalnode namenode1 192.168.67.101 √   √ √ namenode2 192.168.67.102 √   √ √ datanode1 192.168

Linux HA Cluster高可用服务器集群,所谓的高可用不是主机的高可用,而是服务的高可用。

什么叫高可用:一个服务器down掉的可能性多种多样,任何一个可能坏了都有可能带来风险,而服务器离线通常带来的代价是很大的,尤其是web站点,所以当某一台提供服务的的服务器down掉不至于服务终止的就叫高可用. 什么叫心跳:就是将多台服务器用网络连接起来,而后每一台服务器都不停的将自己依然在线的信息很简短很小的通告给同一个网络中的备用服务器的主机,告诉其实主机自己依然在线,其它服务器收到这个心跳信息就认为本机是在线的,尤其是主服务器. 心跳信息怎么发送,由谁来收,其实就是进程中的通信两台主机是没法

搭建高可用mongodb集群(二)—— 副本集

http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 这篇文章看完这些问题就可以搞定了.NoSQL的产生就是为了解决大数据量.高扩展性.高

【转】搭建高可用mongodb集群(二)—— 副本集

在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 这篇文章看完这些问题就可以搞定了.NoSQL的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.但是光通过主从模式的架构远远达不到上面几点,由此MongoDB设计了副本集和分片的功能

搭建高可用MongoDB集群(二): 副本集

在上一篇文章<搭建高可用MongoDB集群(一)--配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 这篇文章看完这些问题就可以搞定了.NoSQL的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.但是光通过主从模式的架构远远达不到上面几点,由此MongoDB设计了副本集和分片的功能