收藏了!
环境准备
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 [email protected]:/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 [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/ scp [email protected]:/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 |
- 在head中引入js:
- 在body下加主机说明的html:
web-128:8080
js 位置
(表示这是128服务器的8080端口的服务页面) - 在index.jsp同目录新建test.js:window.onload = function(){document.getElementById(“js_h”).innerHTML=’js-128:8080′;}
js文件会修改”js 位置”内容,表示这个js文件来自于128服务器的8080端口服务
c、在8081端口tomcat中做类似修改:
- 在head中引入js:
- 在body下加主机说明的html:
web-128:8081
js 位置
- test.js:window.onload = function() {document.getElementById(“js_h”).innerHTML=’js-128:8081′;}
同样在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,可以看到主机的切换。这样就实现了双主备份,保证了高可用性的同时也提高了主机利用率。
全文转自:http://www.javaseo.cn/article/63/
推荐站内搜索:香港主机、广东主机托管、工信部备案查询、免费域名申请、佛山高防服务器、域名注册官网、国外服务器怎么租、免备案虚拟主机、网站备案需要什么、国外虚拟主机