使用Haproxy Keepalived进行双主负载均衡安装配置

收藏了!

环境准备

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/

推荐站内搜索:香港主机、广东主机托管、工信部备案查询、免费域名申请、佛山高防服务器、域名注册官网、国外服务器怎么租、免备案虚拟主机、网站备案需要什么、国外虚拟主机