黑帽联盟

标题: saltstack自动化编译安装haproxy,实现nginx负载均衡 [打印本页]

作者: yun    时间: 2019-8-30 14:05
标题: saltstack自动化编译安装haproxy,实现nginx负载均衡
本帖最后由 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配置文件详解





欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5