收藏了!
环境准备
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自己的配置文件 |
两台服务器的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/ |
这里keepalived就安装完成了。
4、进行tomcat服务环境安装
在128复制两台tomcat,一台8080端口,一台8081端口:
a、修改tomcat端口,太low了,执行操作。
b、在8080端口tomcat中修改tomcat页面,方便测试验证:
1
|
vi webapps /ROOT/index .jsp |
- 在head中引入js:<script type=”text/javascript” src=”test.js”></script>
- 在body下加服务器说明的html:<h1>web-128:8080</h1><h1 id=”js_h”>js 位置</h1> (表示这是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:<script type=”text/javascript” src=”test.js”></script>
- 在body下加服务器说明的html:<h1>web-128:8081</h1><h1 id=”js_h”>js 位置</h1>
- 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/
-
所有主机信息仅是为及时分享并收录,不做推荐!