一、高可用逻辑架构

1、  由于自动平台的HA是针对的无状态的rest 服务,所以不存在状态问题,因此配置相对简单,可以采用互联网一般负载均衡、双机热备等策略,此处我们选择技术为:

Linux+ keepalived + apache + tomcat

1、  以下为该实现的逻辑架构(该图盗用网友的wKiom1aE0D2RqpBdAAXpgjB9vg0149.png


前端服务器使用apache或者nginx都可以

二、高可用配置

1、环境准备

本文档给出时的实践环境为:

2linux虚拟机,OSCentOS - 6X

       Node1192.168.126.128

       Node2192.168.126.129

       虚拟ip192.168.126.100

Apache httpd2.4

Keepalived  1.2.13

Tomcat 7X

1、配置步骤

a、软件安装

Tomat安装

分别在两台虚机中安装tomcat,并验证其可访问性

 Apache安装

   Apache安装使用源码安装:

   下载httpd-2.4.17.tar.gz到目录:/usr/local/ 

    解压: tar –zxvfhttpd-2.4.17.tar.gz  ,得到目录/usr/local/httpd-2.4.17

编译: 进入apache解压目录执行:

 ./configure --prefix=/usr/local/apache

     编译时可能会报错,因为会依赖很多其他的,在本人安装时需要先安装以下

       软件:

                  apr-1.4.5.tar.gz ,解压,编译安装:

                ./configure --prefix=/usr/local/apr  && make && make install

             apr-util-1.3.12.tar.gz, 解压,编译安装:

    ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr/  && make && make install

 pcre-8.10.zip , 解压,编译安装:

 ./configure/--prefix=/usr/local/pcre

以上依赖安装完了再安装apache

./configure--prefix=/usr/local/apache --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util  --with-pcre=/usr/local/pcre

安装完apache,验证安装是否成功。

启动apache/usr/local/apache/bin/apachectl   start

浏览器访问: http://192.168.126.128  (apache安装到tomcat-node1)

同理,将apachetomcat-node2节点也安装一份,并验证。

Tomcat 安装:

下载tomcat安装包:apache-tomcat-7.0.65.tar.gz

 解压到/usr/local/ 目录

部署一个简单的web app 验证是否可以访问。

  同理安装tocmattomcat-node2节点

Keepalived 安装:

 分别在128,129两台节点安装keepalived

a、HA配置

Apache负载均衡配置(192.168.126.128):

编辑apache配置文件:vi   /usr/local/apache/conf/httpd.conf

找到 ServerName 一行,取消注释,并修改为如下结果:

wKioL1aE0vWjWzALAAAFOV_K38g500.png

接着找到 virtualhost 行将其下一行注释去掉,结果如下:

wKiom1aE0veQa1sBAAAHBF3nAy0341.png

Apache负载均衡需要相关的模块,打开如下模块注释:

LoadModule proxy_module modules/mod_proxy.so

LoadModuleproxy_connect_module modules/mod_proxy_connect.so

LoadModuleproxy_ftp_module modules/mod_proxy_ftp.so

LoadModuleproxy_http_module modules/mod_proxy_http.so

LoadModuleproxy_ajp_module modules/mod_proxy_ajp.so

LoadModuleproxy_balancer_module modules/mod_proxy_balancer.so

LoadModulelbmethod_bybusyness_modulemodules/mod_lbmethod_bybusyness.so

打开相关模块后,保存文件。

利用 apachectl  -t   命令验证配置文件是否正确。

修改完了apache主配置文件,接着需要配置负载均衡,该文件在目录/usr/local/apache/conf/extra/httpd-vhosts.conf ,打开该文件,将文件中原本内容注释或者删掉,然后配置为如下结果:

wKioL1aE0NSC-_NgAABjhjb0VXU728.png

 保存文件,完成128节点apache负载配置(此处配置为轮询负载),同理配置129节点的apache

验证操作如下:

  启动所有的tomcat(假设所有tomcat中部署了同一个应用,上下文为test),然后启动其中一个apache(此处选择128节点),通过浏览器访问192.168.126.128/test ,观察访问结果,如果两次请求分别落到了不同tomcat则,配置成功。同理,验证129节点apache负载均衡。

Keepalived 配置:

 经上述配置,已经完成apache的在两个tomcat节点中的负载均衡,目前如果两个apache(解决单点故障)同时启动,则我们的rest应用有两个访问入口分别为:http://192.128.126.128/testhttp://192.168.126.129/test ,但是暴漏给客户端应该只有一个才合适,所以,此处可以利用浮动IP技术来实现,为此需要配置keepalived来实现双机热备。(我们前面已经准备了浮动ip,其值为:192.168.126.100

  192.168.126.128节点keepalived配置为例:

  keepalived的配置文件(keepalived.conf,128节点配置文件位于:/etc/keepalived/目录下,打开配置文件,看到如下内容:

wKioL1aE0QrQ8IG1AACGjRBgJq8261.png

按照图中红色标记地方检察配置即可,其他地方一般不用修改,默认即可,完成配置。

至此,我们就将192.168.126.128节点配置为了主服务器。

同理按下图配置192.168.126.129节点为slave服务器:

wKioL1aE0TPh7c3PAAB6-N60hSo599.png

至此完成了,192.168.126.128192.168.126.129的主从双机热备配置。

验证:

分别启动两台主机的keepalived服务:service  keepalived  start

分别查看主机ip配置 ip  a

129

wKioL1aE0WjS1JnkAABCWQHS6rI178.png

128

wKiom1aE0Wzio5lWAABuKSInHOk380.png

看到,浮动IP已经分配给了128节点。

保证两台主机apache都已经启动,两台主机tomcat也已经启动

通过浏览器访问我们的浮动IP地址下的应用: http://192.168.126.100/test,可以正常访问,此时停掉128keepalivedservicekeepalived stop),刷新浏览器,看是否可以正常访问应用,如可以,则双机热备配置正常。(当然,此处可以断掉apache或者tomcat继续验证其他组合情况)

至此,我们实现了利用keepalived实现apache的双击热备,然后通过apache负载均衡到两个tomcat的方式实现了restapp的高可用。

备注

以上apache是双机热备,tomcat是轮询负载,以后如果需要可以将tomcat改为主从负载方式,apache可以换成nginx

测试使用的war包见附件