1、 由于自动平台的HA是针对的无状态的rest 服务,所以不存在状态问题,因此配置相对简单,可以采用互联网一般负载均衡、双机热备等策略,此处我们选择技术为:
Linux+ keepalived + apache + tomcat。
1、 以下为该实现的逻辑架构(该图盗用网友的)
前端服务器使用apache或者nginx都可以
1、环境准备
本文档给出时的实践环境为:
2台linux虚拟机,OS为CentOS - 6X
Node1:192.168.126.128
Node2:192.168.126.129
虚拟ip:192.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 �Czxvfhttpd-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)
同理,将apache在tomcat-node2节点也安装一份,并验证。
Tomcat 安装:
下载tomcat安装包:apache-tomcat-7.0.65.tar.gz
解压到/usr/local/ 目录
部署一个简单的web app 验证是否可以访问。
同理安装tocmat到tomcat-node2节点
Keepalived 安装:
分别在128,129两台节点安装keepalived
a、HA配置
Apache负载均衡配置(192.168.126.128):
编辑apache配置文件:vi /usr/local/apache/conf/httpd.conf
找到 ServerName 一行,取消注释,并修改为如下结果:
接着找到 virtualhost 行将其下一行注释去掉,结果如下:
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 ,打开该文件,将文件中原本内容注释或者删掉,然后配置为如下结果:
保存文件,完成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/test及http://192.168.126.129/test ,但是暴漏给客户端应该只有一个才合适,所以,此处可以利用浮动IP技术来实现,为此需要配置keepalived来实现双机热备。(我们前面已经准备了浮动ip,其值为:192.168.126.100)
以192.168.126.128节点keepalived配置为例:
keepalived的配置文件(keepalived.conf),128节点配置文件位于:/etc/keepalived/目录下,打开配置文件,看到如下内容:
按照图中红色标记地方检察配置即可,其他地方一般不用修改,默认即可,完成配置。
至此,我们就将192.168.126.128节点配置为了主服务器。
同理按下图配置192.168.126.129节点为slave服务器:
至此完成了,192.168.126.128与192.168.126.129的主从双机热备配置。
验证:
分别启动两台主机的keepalived服务:service keepalived start
分别查看主机ip配置 : ip a
129:
128:
看到,浮动IP已经分配给了128节点。
保证两台主机apache都已经启动,两台主机tomcat也已经启动
通过浏览器访问我们的浮动IP地址下的应用: http://192.168.126.100/test,可以正常访问,此时停掉128的keepalived(servicekeepalived stop),刷新浏览器,看是否可以正常访问应用,如可以,则双机热备配置正常。(当然,此处可以断掉apache或者tomcat继续验证其他组合情况)
至此,我们实现了利用keepalived实现apache的双击热备,然后通过apache负载均衡到两个tomcat的方式实现了restapp的高可用。
以上apache是双机热备,tomcat是轮询负载,以后如果需要可以将tomcat改为主从负载方式,apache可以换成nginx。
测试使用的war包见附件