haproxy负载均衡的配置,以及haproxy+keeplived

####Haproxy##########(http代理)###

准备三台虚拟机

yum install haproxy -y

cd /etc/haproxy/

vim haproxy.cfg

/etc/init.d/haproxy start

vim haproxy.cfg

将前端和后端的注释

#---------------------------------------------------------------------

# main frontend which proxys to the backends

#---------------------------------------------------------------------

#frontend  main *:5000

#    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

#    default_backend             app

#---------------------------------------------------------------------

# static backend for serving up images, stylesheets and such

#---------------------------------------------------------------------

#backend static

#    balance     roundrobin

#   server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------

# round robin balancing between the various backends

#---------------------------------------------------------------------

#backend app

#    balance     roundrobin

#    server  app1 127.0.0.1:5001 check

#    server  app2 127.0.0.1:5002 check

#    server  app3 127.0.0.1:5003 check

#    server  app4 127.0.0.1:5004 check

listen lyitx *:80

balance     roundrobin

server web1 172.25.50.30:80 check

server web2 172.25.50.40:80 check

/etc/init.d/haproxy start

netstat -anplt##可以看到80端口在haproxy上

开启sever4,server3 的httpd服务,写个测试页面

在真机上curl测试

[[email protected] Desktop]# curl 172.25.50.10

<h1>server3.example.com</h1>

[[email protected] Desktop]# curl 172.25.50.10

Server4.example.com

[[email protected] Desktop]# curl 172.25.50.10

<h1>server3.example.com</h1>

[[email protected] Desktop]# curl 172.25.50.10

Server4.example.com

##############监控页面添加认证####################

listen admin *:8080

stats enable

stats uri /status

stats auth admin:lyitx##admin是登陆的用户名lyitx是密码

stats   refresh 5s

listen lyitx *:80

balance     roundrobin

server web1 172.25.50.30:80 check

server web2 172.25.50.40:80 check

/etc/init.d/haproxy reload

再在浏览器上;

172.25.50.10:8080/status

/////////////设置前后端//////////////

listen admin *:8080

stats enable

stats uri /status

stats auth admin:lyitx

stats   refresh 5s

frontend lyitx *:80

default_backend app

backend static

balance     roundrobin

server web1 172.25.50.30:80 check

backend app

balance     roundrobin

server web1 172.25.50.40:80 check

再在浏览器上;

172.25.50.10:8080/status

//////////////////////动静分离///////////////////////////////

vim haproxy.cfg

listen admin *:8080

stats enable

stats uri /status

stats auth admin:lyitx

stats   refresh 5s

frontend lyitx *:80

acl url_static       path_beg       -i /images

acl url_static       path_end       -i .jpg .gif .png

use_backend static          if url_static

default_backend app

backend static

balance     roundrobin

server web1 172.25.50.30:80 check

backend app

balance     roundrobin

server web2 172.25.50.40:80 check

[[email protected]3 html]# mkdir images

[[email protected]3 html]# ls

images  index.html

[[email protected]3 html]# cd images/

[[email protected]3 images]# ls

OSI.gif  doggyt.jpg

在浏览器中:172.25.50.10/images/doggy.jpg

###########ACL+地址转发+重定向################

listen admin *:8080

stats enable

stats uri /status

stats auth admin:lyitx

stats   refresh 5s

frontend lyitx *:80

acl url_static       path_beg       -i /images

acl url_static       path_end       -i .jpg .gif .png

acl badhost src 172.25.50.250#设置禁止访问的ip。可以是个网段的

block if badhost

errorloc 403 http://172.25.50.10:8000#错误代码403的话,将地址转发到10主机上(在这之前将10主机的httpd打开,并将端口转换为8000(配置文件的136行))

redirect location http://172.25.50.10:8000 if badhost#badhost重定向

use_backend static          if url_static

default_backend app

backend static

balance     roundrobin

server web1 172.25.50.30:80 check

测试:172.25.50.10

////////////////////读写分离/////////////////////////

server2和server3都安装php

yum install php -y

在调度器server1上;

编辑配置文件:

vim haproxy.cfg

listen admin *:8080

stats enable

stats uri /status

stats auth admin:lyitx

stats   refresh 5s

frontend lyitx *:80

acl url_static       path_beg       -i /images

acl url_static       path_end       -i .jpg .gif .png

acl lyitx.com hdr_beg(host) -i lyitx.com

acl badhost src 172.25.50.250

acl read method GET

acl read method HEAD

acl write method PUT

acl write method POST

#       block if badhost

#       errorloc 403 http://172.25.50.10:8000

#       redirect location http://172.25.12.10:8000 if badhost

redirect code 301 location http://www.lyitx.com if lyitx.com

use_backend app          if write

default_backend static

backend static

balance     roundrobin

server web1 172.25.50.30:80 check

backend app

balance     roundrobin

server web2 172.25.50.40:80 check

/etc/init.d/haproxy reload

真机上发送upload

[[email protected] Desktop]# scp -r upload/ 172.25.50.30:/var/www/html/

[[email protected] Desktop]# scp -r upload/ 172.25.50.40:/var/www/html/

在server3和server4上都进行如下操作

[[email protected]3 html]# ls

index.html  upload

[[email protected]3 html]# cd upload/

[[email protected]3 upload]# ls

index.php  upload_file.php

[[email protected]3 upload]# mv * ..

[[email protected]3 upload]# ls

[[email protected]3 upload]# cd ..

[[email protected]3 html]# ls

index.html  index.php  upload  upload_file.php

[[email protected]3 html]# chmod 777 upload

[[email protected]3 html]# ll

total 16

-rw-r--r-- 1 root root   33 Feb 19 23:57 index.html

-rw-r--r-- 1 root root  257 Mar 18 03:36 index.php

drwxrwxrwx 2 root root 4096 Mar 18 03:44 upload

-rw-r--r-- 1 root root  927 Mar 18 03:36 upload_file.php

[[email protected]3 html]# vim upload_file.php

&& ($_FILES["file"]["size"] < 2000000))

[[email protected]3 html]# /etc/init.d/httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd:                                            [  OK  ]

[[email protected]3 html]# ls

index.html  index.php  upload  upload_file.php

Server4和3重新启动httpd

在真机添加上解析后,在浏览器上www.lyitx.com

Keepalived+haproxy

编辑主从调度器的keepalived配置文件

把haproxy配置文件进行如下配置:

Vim /etc/haproxy/haproxy.cfg

在主调度器上:

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

vrrp_script check_haproxy {

script "/opt/check_haproxy.sh"

interval 2

weight 2

}

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.25.50.100

}

track_script {

check_haproxy

}

}

 

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

vrrp_script check_haproxy {

script "/opt/check_haproxy.sh"

interval 2

weight 2

}

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.25.50.100

}

track_script {

check_haproxy

}

}

编写配置脚本文件,主从调度器都需要进行如下配置

[[email protected] ~]# cat /opt/check_haproxy.sh

#!/bin/bash

/etc/init.d/haproxy status &> /dev/null || /etc/init.d/haproxy restart &> /dev/null

if [ $? -ne 0 ];then

/etc/init.d/keepalived stop &> /dev/null

fi

[[email protected] ~]# chmod 755 /opt/check_haproxy.sh 给定权限755

配置完成后。

在真机上测试:

[[email protected] Desktop]# curl 172.25.50.100

<h2>server4.example.com</h2>

[[email protected] Desktop]# curl 172.25.50.100

<h1>server3.example.com</h1>

[[email protected] Desktop]# curl 172.25.50.100

<h2>server4.example.com</h2>

[[email protected] Desktop]# curl 172.25.50.100

<h1>server3.example.com</h1>

Vip 是在server1上的

[[email protected] ~]# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 52:54:00:06:13:fa brd ff:ff:ff:ff:ff:ff

inet 172.25.50.10/24 brd 172.25.50.255 scope global eth0

inet 172.25.50.100/32 scope global eth0

inet6 fe80::5054:ff:fe06:13fa/64 scope link

测试:将server1的网卡接口关闭,

[[email protected] ~]# ip link set down eth0

负载均衡调度依然正常,此时vip出现在server2主机上

[[email protected] Desktop]# curl 172.25.50.100

<h2>server4.example.com</h2>

[[email protected] Desktop]# curl 172.25.50.100

<h1>server3.example.com</h1>

[[email protected] Desktop]# curl 172.25.50.100

<h2>server4.example.com</h2>

[[email protected] Desktop]# curl 172.25.50.100

<h1>server3.example.com</h1>

[[email protected] ~]# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 52:54:00:07:bb:e5 brd ff:ff:ff:ff:ff:ff

inet 172.25.50.20/24 brd 172.25.50.255 scope global eth0

inet 172.25.50.100/32 scope global eth0

inet6 fe80::5054:ff:fe07:bbe5/64 scope link

valid_lft forever preferred_lft forever

把网卡端口打开后,serevr1继续接管vip,server2上的vip调转。

Realsever

测试成功!!!!!

时间: 2024-10-12 19:21:13

haproxy负载均衡的配置,以及haproxy+keeplived的相关文章

Haproxy负载均衡/动静分离(haproxy各选项详细解释)

在前端领域做负载均衡,动静分离的程序有很多,比较常用的是nginx和Haproxy,今天就说一下 Haproxy在这两方面的表现,文章参考很多网文写成,再加上自己的实验成果,文中所有解释都经过实际环境验证. 环境介绍: Centos 6.5 Haproxy 1.7.9 前端 192.168.6.10 后端 192.168.6.20(web1)  192.168.6.21(web2) 图片服务器 192.168.6.22(img01) 1.安装Haproxy wget http://www.hap

利用docker镜像配置mysql集群+nextcloud集群+haproxy负载均衡

测试环境: docker xampp 9.1.1 ubuntu 16.0.4 hadoop 2.7 jdk 1.8 一.配置mysql集群 通过docker拉取mysql集群镜像创建容器,包括ndb_mgm(管理节点).ndb_mgmd01.ndbd01(数据节点1).ndbd02(数据节点2).mysqld01(sql节点1).mysqld02(sql节点2) docker run -itd --name ndb_mgmd01 --net=scg --ip 192.166.0.2 -v /ro

Nginx/LVS/HAProxy负载均衡软件的优缺点详解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂

lvs/nginx/haproxy 负载均衡优缺点分析讲解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂

(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂

Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)

原文:http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时

Nginx/LVS/HAProxy 负载均衡软件的优缺点对比

Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术,具体的应用需求还得具体分析. 如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+Keepalived作负载均衡器:后端采

Nginx、LVS及HAProxy负载均衡软件的优缺点详解

提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护.缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用:另外一种就是类似于Nginx/LVS

Nginx/LVS/HAProxy 负载均衡软件的优缺点详解

一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护.缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使