黑帽联盟

 找回密码
 会员注册
查看: 1115|回复: 0
打印 上一主题 下一主题

[基础服务] saltstack自动化编译安装haproxy,实现nginx负载均衡

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    本帖最后由 yun 于 2019-8-30 15:05 编辑

    此文主要是通过haproxy实现nginx负载均衡

    环境:centos6.7
    172.31.225.250 node1.example.com nginx(端口8080)  haproxy安装在这台主机上,占用的端口是80端口
    172.31.225.251 node2.example.com nginx(端口8080)

    我们所需要用到的相关文件都在 /srv/salt/prod/haproxy/files/ 这个目录下面,大家直接下载即可: files.zip (2.28 MB, 下载次数: 1)
    files.png

    master相关配置:(/etc/salt/master)

    1. file_roots:
    2.   base:
    3.     - /srv/salt/base
    4.   dev:
    5.     - /srv/salt/dev
    6.   prod:
    7.     - /srv/salt/prod

    8. pillar_roots:
    9.   base:
    10.     - /srv/salt/base/pillar
    11.   dev:
    12.     - /srv/salt/dev/pillar
    13.   prod:
    14.     - /srv/salt/prod/pillar
    复制代码
    1、部署haproxy(这里个人是编译安装)
    首先下载源码包:
    wget http://www.haproxy.org/download/1.9/src/haproxy-1.9.10.tar.gz

    以上是官网的,官网被墙了,如果大家没办法下载,就去国内的网站下载,如下:
    https://src.fedoraproject.org/repo/pkgs/haproxy/


    初始化安装:(/srv/salt/prod/init/haproxy-init.sls)
    1. pkg-init:
    2.   pkg.installed:
    3.     - names:
    4.       - gcc
    5.       - gcc-c++
    6.       - glibc
    7.       - make
    8.       - autoconf
    9.       - openssl
    10.       - openssl-devel
    11.       - libnl
    12.       - libnl-devel
    复制代码

    haproxy安装:(/srv/salt/prod/haproxy/haproxy.sls)
    1. include:
    2.   - init.haproxy-init

    3. haproxy-source:
    4.   file.managed:
    5.     - name: /usr/local/src/haproxy-1.9.10.tar.gz
    6.     - source: salt://haproxy/files/haproxy-1.9.10.tar.gz
    7.     - user: root
    8.     - group: root
    9.     - mode: 644
    10.     - unless: test -f /usr/local/src/haproxy-1.9.10.tar.gz

    11. haproxy-install:
    12.   cmd.run:
    13.     - name: cd /usr/local/src && tar xf haproxy-1.9.10.tar.gz && cd haproxy-1.9.10 && make TARGET=linux2628 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
    14.     - unless: test -d /usr/local/haproxy
    15.     - require:
    16.       - pkg: pkg-init
    17.       - file: haproxy-source

    18. /etc/haproxy:
    19.   file.directory:
    20.     - user: root
    21.     - group: root
    22.     - mode: 755

    23. /etc/haproxy/haproxy.cfg:
    24.   file.managed:
    25.     - source: salt://haproxy/files/haproxy.cfg
    26.     - user: root
    27.     - group: root
    28.     - mode: 644
    29.     - require:
    30.       - file: /etc/haproxy

    31. /etc/init.d/haproxy:
    32.   file.managed:
    33.     - source: salt://haproxy/files/haproxy.init
    34.     - user: root
    35.     - group: root
    36.     - mode: 755
    37.     - watch_in:
    38.       - service: haproxy-service

    39. user-create:
    40.   cmd.run:
    41.     - name: groupadd haproxy && useradd -r -g haproxy haproxy -s /sbin/nologin
    42.     - unless: id haproxy
    43.     - require_in:
    44.       - service: haproxy-service

    45. haproxy-service:
    46.   service.running:
    47.     - name: haproxy
    48.     - enable: True
    49.     - require:
    50.       - cmd: haproxy-install
    51.     - watch:
    52.       - file: /etc/haproxy/haproxy.cfg
    复制代码
    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安装路径

    下面正式安装:
    安装之前最好先进行测试安装,检查有没有错误,因为在生产环境下直接执行安装错误,会导致对外服务的相关组件有可能出现问题,所以先进性测试安装
    1. salt '*' state.sls haproxy.haproxy env=prod test=True
    复制代码
    这里我测试没有问题,就直接安装了
    1. salt '*' state.sls haproxy.haproxy env=prod
    复制代码
    查看haproxy服务
    node1.png


    验证负载均衡:(haproxy里面我用的是roundrobin),node1权重2,node2权重1
    172.31.225.250:8080  内容如下:
    250.png

    172.31.225.251:8080  内容如下:
    251.png

    172.31.225.250 内容如下:
    1.gif


    至此就结束了。原创不易,转载请注明原创来处,谢谢!


    相关文章:
    haproxy配置文件详解
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部