saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy

下载haproxy1.6.2.tar.gz
下载地址:http://www.haproxy.org/download/1.6/src/

1、编写功能模块

①首先编写依赖安装模块

pkg.installed这个路径是相对于prod即在配置/etc/salt/master的file_roots路径的相对路径

同理如果在test环境下也是相对/srv/salt/test路径

  1. # mkdir -p /srv/salt/prod/pkg /srv/salt/prod/haproxy /srv/salt/prod/haproxy/files
  2. # cd /srv/salt/prod/pkg
  3.  
  4. # cat pkg-init.sls
  5. pkg-init:
  6. pkg.installed:
  7. - names:
  8. - gcc
  9. - gcc-c++
  10. - glibc
  11. - make
  12. - autoconf
  13. - openssl
  14. - openssl-devel

②编写HAproxy状态模块

如何写状态模块?
安装一遍,记录安装步骤
手动安装步骤:
①安装依赖
# yum install gcc gcc-c++ glibc make autoconf openssl openssl-devel
cd /usr/local/
tar -zxf haproxy-1.6.2.tar.gz
cd /usr/local/haproxy-1.6.2

2、将配置文件,启动文件等拷贝到/srv/salt/prod/haproxy/files下

①获取启动脚本,并copy到/srv/salt/prod/haproxy/files/

  1. # mv haproxy-1.6.2.tar.gz /srv/salt/prod/haproxy/files/
  2. # cd /srv/salt/prod/haproxy/files/
  3. # tar zxf haproxy-1.6.2.tar.gz
  4. # cd haproxy-1.6.2/examples/
  5. # vim haproxy.init
  6. BIN=/usr/local/haporxy/sbin/$BASENAME
  7.  
  8. # cp haproxy.init /srv/salt/prod/haproxy/files/
  9.  
  10. # cd /srv/salt/prod/haproxy/files
  11. # rm -rf haproxy-1.6.2

②编写install.sls
不在这里写配置文件,是为了解耦。因为安装和启动时原子操作,在哪都必须,但是配置文件,在不同环境下是不一样的

  1. # cd /srv/salt/prod/haproxy/
  2. # vim install.sls
  3.  
  4. include:
  5. - pkg.pkg-init
  6. haproxy-install:
  7. file.managed:
  8. - name: /usr/local/src/haproxy-1.6.2.tar.gz
  9. - source: salt://haproxy/files/haproxy-1.6.2.tar.gz
  10. - user: root
  11. - group: root
  12. - mode: 755
  13. cmd.run:
  14. - name: cd /usr/local/src && tar zxf haproxy-1.6.2.tar.gz && cd haproxy-1.6.2 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
  15. - unless: test -d /usr/local/haproxy
  16. - require:
  17. - pkg: pkg-init
  18. - file: haproxy-install
  19. haproxy-init:
  20. file.managed:
  21. - name: /etc/init.d/haproxy
  22. - source: salt://haproxy/files/haproxy.init
  23. - user: root
  24. - group: root
  25. - mode: 755
  26. - require:
  27. - cmd: haproxy-install
  28. cmd.run:
  29. - name: chkconfig --add haproxy
  30. - unless: chkconfig --list | grep haproxy
  31. - require:
  32. - file: /etc/init.d/haproxy
  33. net.ipv4.ip_nonlocal_bind:
  34. sysctl.present:
  35. - value: 1
  36. haproxy-config-dir:
  37. file.directory:
  38. - name: /etc/haproxy
  39. - user: root
  40. - group: root
  41. - mode: 755

# salt '*' state.sls haproxy.install env=prod
注:
直接拷贝上面的配置文件执行可能会出错,建议进入vim状态后,使用set list命令,确保$符号和配置之间没有空格
并且层级关系是2、4、6个空格
建议先执行测试然后再实际配置修改
# salt '*' state.sls haproxy.install env=prod test=True

3、编写业务引用

①HAproxy配置文件

  1. # mkdir -p /srv/salt/prod/cluster/files
  2. # cd /srv/salt/prod/cluster/files/
  3. # vim /srv/salt/prod/cluster/files/haproxy-outside.cfg
  4. global
  5. maxconn 100000
  6. chroot /usr/local/haproxy
  7. uid 99
  8. gid 99
  9. daemon
  10. nbproc 1
  11. pidfile /usr/local/haproxy/logs/haproxy.pid
  12. log 127.0.0.1 local3 info
  13. defaults
  14. option http-keep-alive
  15. maxconn 100000
  16. mode http
  17. timeout connect 5000ms
  18. timeout client 50000ms
  19. timeout server 50000ms
  20. listen stats
  21. mode http
  22. bind 0.0.0.0:8888
  23. stats enable
  24. stats uri /haproxy-status
  25. stats auth haproxy:saltstack
  26. frontend frontend_www_example_com
  27. bind 192.168.3.11:80
  28. mode http
  29. option httplog
  30. log global
  31. default_backend backend_www_example_com
  32. backend backend_www_example_com
  33. option forwardfor header X-REAL-IP
  34. option httpchk HEAD / HTTP/1.0
  35. balance source
  36. server web-node1 192.168.3.12:8080 check inter 2000 rise 30 fall 15
  37. server web-node2 192.168.3.19:8080 check inter 2000 rise 30 fall 15
  38.  
  39. # cd ..
  40. # vim /srv/salt/prod/cluster/haproxy-outside.sls
  41. include:
  42. - haproxy.install
  43. haproxy-service:
  44. file.managed:
  45. - name: /etc/haproxy/haproxy.cfg
  46. - source: salt://cluster/files/haproxy-outside.cfg
  47. - user: root
  48. - group: root
  49. - mode: 644
  50. service.running:
  51. - name: haproxy
  52. - enable: True
  53. - reload: True
  54. - require:
  55. - cmd: haproxy-init
  56. - watch:
  57. - file: haproxy-service
  58.  
  59. # cd /srv/salt/base/
  60. # vim top.sls
  61. base:
  62. '*':
  63. - init.env_init
  64. prod:
  65. '*':
  66. - cluster.haproxy-outside

执行安装配置
# salt '*' state.highstate

4、Web查看服务状态

从web登陆192.168.3.12:8888/haproxy-status
用户名和密码在/srv/salt/prod/cluster/files/haproxy-outside.cfg中
# grep 'auth' /srv/salt/prod/cluster/files/haproxy-outside.cfg
stats auth haproxy:saltstack

至此haproxy的配置完成

saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的更多相关文章

  1. saltstack自动化运维系列⑧SaltStack实践配置管理安装nginx-1.10.3

    saltstack自动化运维系列⑧SaltStack实践配置管理安装nginx-1.10.3 安装nginx-1.10.3.tar.gz # mkdir -p /srv/salt/prod/pkg / ...

  2. saltstack自动化运维系列⑦SaltStack实践配置管理安装zabbix

    saltstack自动化运维系列⑥SaltStack实践配置管理安装zabbix 1.添加管理zabbix的sls文件# vim /srv/salt/base/init/zabbix_agent.sl ...

  3. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived 安装配置Keepalived 1.编写功能模块 #创建keepalived目录# mkdir -p ...

  4. saltstack自动化运维系列⑩SaltStack二次开发初探

    saltstack自动化运维系列⑩SaltStack二次开发初探 1.当salt运行在公网或者网络环境较差的条件下,需要配置timeout时间vim /etc/salt/master timeout: ...

  5. saltstack自动化运维系列12配置管理安装redis-3.2.8

    一.准备redis自动化配置的文件(即安装一遍redis,然后获取相关文件和配置在salt中执行上线) 1.源码安装redis3.2.8并注册为系统服务 安装依赖yum install -y tcl ...

  6. saltstack自动化运维系列11基于etcd的saltstack的自动化扩容

    saltstack自动化运维系列11基于etcd的saltstack的自动化扩容 自动化运维-基于etcd加saltstack的自动化扩容# tar -xf etcd-v2.2.1-linux-amd ...

  7. 自动化运维工具-mussh工具安装配置及简单使用讲解

    1.先决条件: 安装pssh工具的主机针对远程主机需要配置免秘钥认证: ssh-keygen -t rsa ssh-copy-id [remotehost] 2.下载mussh工具安装介质: http ...

  8. 自动化运维工具-pdsh工具安装配置及简单使用讲解

    1.先决条件: 安装pssh工具的主机针对远程主机需要配置免秘钥认证: ssh-keygen -t rsa ssh-copy-id [remotehost] 2.下载pssh工具安装介质: https ...

  9. 自动化运维工具-pssh工具安装配置及简单使用讲解

    1.先决条件:安装pssh工具要求python版本大于2.4即可. 安装pssh工具的主机针对远程主机需要配置免秘钥认证: ssh-keygen -t rsa ssh-copy-id [remoteh ...

随机推荐

  1. codeblocks下的汇编语言

    Debug->Debugging windows->Disassembly F4+F7 每条语句的调试,查看变量 可以通过两者的比较来互相学习 1.通过查看汇编代码学习c如何改进,减少代码 ...

  2. Linux下 查找大文件

    find ./ -size +50M 显示当前路径下,大于50M的文件.(包含子文件夹内的文件)

  3. ElasticSearch集群介绍二

    ElasticSearch集群 一个运行中的 Elasticsearch 实例称为一个 节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力. ...

  4. MySQL中的编码问题

    1.查看MySQL数据库的默认编码 (1).使用status命令 mysql> status -------------- mysql Ver 14.14 Distrib 5.5.28, for ...

  5. Nginx负载均衡中后端节点服务器健康检查的一种简单方式

    摘自:https://cloud.tencent.com/developer/article/1027287 一.利用nginx自带模块ngx_http_proxy_module和ngx_http_u ...

  6. python---基于memcache的自定义session类

    import config import hashlib import time import memcache import json conn = memcache.Client(["1 ...

  7. Spring Schedule整合配置

    Spring Schedule是spring提供的任务调度框架.很简单,也很强大,简单是因为只需要在spring配置文件中写一行代码配置一下.就ok,强大是因为调度表达式.这里会给出一个网站,在线生成 ...

  8. hbase记录-修改压缩格式

    在业务空闲的时候修改压缩格式 先测试 ---测试表create 'test', { NAME => 'c',VERSIONS => 1}desc 'test'disable 'test'a ...

  9. CM记录-集群主机存储情况

  10. .NET MVC中的防CSRF攻击

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...