环境准备
1、启动四个虚拟机(这里以centos为例),ip为:
192.168.130
192.168.132
192.168.128
192.168.129
2、安装haproxy
打开130、132这两台机器相应端口外网访问权限
1 2 3 4 5 | /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT /etc/rc.d/init.d/iptables save /etc/rc.d/init.d/iptables restart |
在130、132这两台机器上分别安装haproxy:
1 | yum -y install haproxy |
两台机器都安装完成后,进行文件配置,在132上修改配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #vi /etc/haproxy/haproxy.cfg global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 stats refresh 5s stats uri /haproxy stats realm baison-test-Haproxy stats auth admin:admin123 stats hide-version option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 stats refresh 5s stats uri /haproxy #haproxy监控界面 stats realm baison-test-Haproxy stats auth admin:admin123 stats hide-version frontend main *:80 #监听80端口 acl url_static path_beg -i /static /images /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js use_backend static if url_static #匹配url_static条件的url使用static转发 default_backend web #其他的url使用后面定义的web转发 backend static #static转发服务 balance roundrobin server static1 192.168.230.128:8080 check inter 2000 fall 3 weight 30 #128这台机器上运行8080端口的tomcat,用于提供静态文件访问 server static2 192.168.230.129:8080 check inter 2000 fall 3 weight 30 #129这台机器上运行8080端口的tomcat,用于提供静态文件访问 backend web #定义名为”web“的转发服务 balance roundrobin server web1 192.168.230.128:8081 check inter 2000 fall 3 #128这台机器上运行8081端口的tomcat,用于提供非静态资源访问 server web2 192.168.230.129:8081 check inter 2000 fall 3 #129这台机器上运行8081端口的tomcat,用于提供非静态资源访问 |
复制配置文件到130服务器上相同的目录,在130服务器上执行操作:
1 2 | rm /etc/haproxy/haproxy.cfg //删除130自己的配置文件 scp root@192.168.230.132:/etc/haproxy/haproxy.cfg /etc/haproxy/ |
两台服务器的haproxy就安装配置完成了。
3、在132、130上分别安装keepalived:
首先检查安装openssl-devel
1 | yum install openssl-devel |
创建keepalived安装目录,并下载安装:
1 2 3 4 5 6 7 | mkdir /usr/local/ha cd /usr/local/ha wget http://三w.keepalived.org/software/keepalived-1.2.23.tar.gz tar zxvf keepalived-1.2.23.tar.gz cd keepalived-1.2.23 ./configure make & make install |
两台机器都安装好后,配置keepalived(132机器):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #mkdir /etc/keepalived/ #cp /usr/local/ha/keepalived-1.2.23/doc/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf #vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id Node_132 ###名称随便取 } vrrp_script chk_http_port { script "/opt/check_haproxy.sh" ###检测脚本防止不自动切换的问题,接下来会创建 interval 2 weight 2 } vrrp_instance VI_1 { state MASTER ###主服务,表示访问下面虚拟ip 200时,映射到当前机器 interface eth1 ###你的网卡名称,使用ip a命令查看,并修改 virtual_router_id 50 ###路由id,主从保持一致 priority 100 ###权重,比从服务器大 advert_int 1 track_script { chk_http_port ### 执行监控的服务 } virtual_ipaddress { 192.168.230.200 ###虚拟ip地址 } } vrrp_instance VI_2 { state BACKUP ###从服务,当另一台机器不工作时,访问下面虚拟ip 201就映射到当前台机器 interface eth1 virtual_router_id 52 ###路由id,主从保持一致 priority 99 权重,比主服务器小 advert_int 1 virtual_ipaddress { 192.168.230.201 ###虚拟ip地址 } } |
创建检测文件
1 2 3 4 5 6 7 8 | #vi /opt/check_haproxy.sh f [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then /etc/init.d/haproxy start fi sleep 2 if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then /etc/init.d/keepalived stop fi |
复制配置和检测文件到另一台服务器上,在130上操作:
1 2 3 | mkdir /etc/keepalived/ scp root@192.168.230.132:/etc/keepalived/keepalived.conf /etc/keepalived/ scp root@192.168.230.132:/opt/check_haproxy.sh /opt/check_haproxy.sh |
这里keepalived就安装完成了。
4、进行tomcat服务环境安装
在128复制两台tomcat,一台8080端口,一台8081端口:
a、修改tomcat端口,太low了,执行操作。
b、在8080端口tomcat中修改tomcat页面,方便测试验证:
1 | vi webapps/ROOT/index.jsp |
js文件会修改”js 位置”内容,表示这个js文件来自于128主机的8080端口服务
c、在8081端口tomcat中做类似修改:
同样在129服务器上复制两个tomcat,一台8080端口,一台8081端口,修改tomcat文件时,只是改ip 128为129。
现在环境就安装完成了。
运行4个tomcat
运行haproxy: service haproxy start
运行keepalived:
1 | keepalived -D -f /etc/keepalived/keepalived.conf |
打开页面查看haproxy监控页面:http://192.168.230.132/haproxy、http://192.168.230.130/haproxy
通过监控可以看到访问数量等消息
通过访问http://192.168.230.200或者http://192.168.230.201多次刷新页面:
观察js文件,页面的来源的变化,可以看到,js文件来自128、129的8080端口的服务器,页面来自128、129的8081端口服务器。说明对页面,和静态文件的负载使用的不同的haproxy服务规则
访问http://192.168.230.200,http://192.168.230.201。通过监控页面的数据变化,可以发现200是132服务器进行转发,访问201是130进行转发
在实际场景中,当访问动态资源时就使用200地址,当访问静态资源时使用201地址,通过关闭tomcat或者关闭haproxy,可以看到服务器的切换。这样就实现了双主备份,保证了高可用性的同时也提高了服务器利用率。
Copyright © 2019-2022 ant-cloud.net. All Rights Reserved. 蚂蚁云 版权所有 苏ICP备16018400号
企业建站首选蚂蚁云
代理域名注册服务机构:西部数码
云主机提供商:鸟云、腾讯云、百度云
CDN/对象存储提供商:七牛云