高负载均衡haproxy的搭建

薄洪涛6年前Linux1545

目的:做负载均衡

步骤:做两台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


相关文章

xshell做端口映射链接数据库

xshell做端口映射链接数据库

有些时候,公司的一些线上的数据库,数据太多,不适合复制到本地然后搭建本地数据库开发,直接链接数据库又不安全所以,需要通过xshell做端口转发,通过隧道来链接数据库1、首先通过xshell登陆跳板机2...

Nginx如何获取get/post传递的参数?

有一些业务场景,需要我们用nginx做url的重写,这样的话我们就需要做参数的拼接,比如我们想把xxx.com/a/1/2 重写成yyy.com/b?a=1&b=2,就需要做参数的拼接;假如我...

mac下使用docker来构建不同版本的php环境并安装扩展

切换到mac后,我目前php环境是php7.3 ,但是一些老项目需要7.1 甚至5.6 的环境,特别是服务器上也有这种问题,所以我决定使用docker来部署不同的项目首先安装dockerbrew&nb...

编辑器之神Vim的使用

在这个蔚蓝色的星球上,流传着两大神器的传说: 据说Emacs是神的编辑器,而Vim是编辑器之神。今天我们来学习下编辑器之神Vim的使用;想当年我开始学习Vim的时候,最抓狂的事情莫过于怎么退出vim;...

linux免密登陆

linux免密登陆

最近有些累,所以今天的教程就水一篇;所谓免密登陆,就是说我有一台服务器,不想让人家知道具体的ip或者用户名密码,只让使用者从跳板机登陆,通过ssh xxx@ip  这种来登陆;1、 首先跳板...

前后端分离如何实现用户身份认证及鉴权?

前后端分离如何实现用户身份认证及鉴权?

假设我们不适用前后端分离,那么登录成功之后,我们会把用户的信息存储到session中,之后的每一次请求,都会带着cookies中的session_id,服务端会自行验证此用户是否登录及登录是否失效,那...

发表评论    

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