码农日记

薄洪涛的个人博客

高负载均衡haproxy的搭建

目的:做负载均衡

步骤:做两台nginx服务器,一台haproxy转发器

首先安装nginx

1.安装相关的依赖包。
yum install gcc -c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
2.下载nginx包
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
3、默认配置
./configure
4、编译
make&&make install

特别注意:如果你和我一样是虚拟机,需要关闭防火墙才能访问到nginx的其实页面

systemctl stop firewalld.service  
systemctl start firewalld.service

相同的方法安装两台nginx服务器;因为我是虚拟机,所以直接克隆的;

安装haproxy

1、下载

从这个网站下载https://src.fedoraproject.org/repo/pkgs/haproxy/

wget https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.6.3.tar.gz/3362d1e268c78155c2474cb73e7f03f9/haproxy-1.6.3.tar.gz

2、解压

tar -zxvf haproxy-1.7.5.tar.gz
cd haproxy-1.7.5

3、安装

make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

注意

    TARGET=linux26  #内核版本,使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26;

    kernel 大于2.6.28的 用:TARGET=linux2628 

    ARCH=x86_64     #系统位数

     PREFIX=/usr/local/haprpxy  #/usr/local/haprpxy为haprpxy安装路径

4、配置
安装完成后需要自己手动创建配置文件
cd /usr/local/haproxy #进入haproxy安装目录
touche haproxy.cfg #创建配置文件
vi haproxy.cfg #编辑配置文件
以下是配置文件具体内容:

5、启动

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

负载均衡示例

global
    log 127.0.0.1 local1
    maxconn 65000             #最大连接数
#    chroot /usr/local/haproxy #安装目录
#    uid haproxy                  #用户haproxy
#    gid haproxy                  #组haproxy
    daemon                    #守护进程运行
    nbproc 1                  #进程数量

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


frontend main
        bind *: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
        default_backend   my_webserver     #定义一个名为my_app前端部分。此处将对于的请求转发给后端(集群池名称)
        backend static                     #使用了静态动态分离(如果url_path匹配 .jpg .gif .png .css .js静态文件则访问此后端)
        balance roundrobin                 #负载均衡算法(#banlance roundrobin 轮询)
        server   static 127.0.0.1:80 check  #静态文件部署在本机(也可以部署在其他机器或者squid缓存服务器

backend my_webserver
        mode http
        option  forwardfor
        balance roundrobin  #这里采用的是轮询
        cookie  SERVERID
        option  httpchk HEAD /index.html
        # 下面两个地址是我的服务器的地址
        server  web01 192.168.50.107:80 cookie web01 check inter 2000 rise 3 fall 3 weight 3
        server  web02 192.168.50.59:82 cookie web02 check inter 2000 rise 3 fall 3 weight 3

我自己开了3台虚拟机,两台nginx(182.168.50.107:80,192.168.50.59:82),一台haproxy(http://192.168.50.81/)

当我访问haproxy时,会自动转发到两台nginx服务器上;当我把其中一台服务器杀死后,haproxy会自动剔除死去的服务器,哇,厉害厉害

TIM图片20190422173250.png


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

版权所有 | 转载请标明出处