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

来源:互联网 发布:linux命令强制关机 编辑:程序博客网 时间:2024/04/30 23:49
saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy

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

1、编写功能模块

①首先编写依赖安装模块

# mkdir -p /srv/salt/prod/pkg /srv/salt/prod/haproxy /srv/salt/prod/haproxy/files # cd /srv/salt/prod/pkg# cat pkg-init.sls pkg-init:pkg.installed:- names:- gcc- gcc-c++- glibc- make- autoconf- openssl- 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/

# mv haproxy-1.6.2.tar.gz /srv/salt/prod/haproxy/files/# cd /srv/salt/prod/haproxy/files/# tar zxf haproxy-1.6.2.tar.gz# cd haproxy-1.6.2/examples/# vim haproxy.initBIN=/usr/local/haporxy/sbin/$BASENAME# cp haproxy.init /srv/salt/prod/haproxy/files/# cd /srv/salt/prod/haproxy/files# rm -rf haproxy-1.6.2

 

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

# cd /srv/salt/prod/haproxy/# vim install.slsinclude:- pkg.pkg-inithaproxy-install: file.managed: - name: /usr/local/src/haproxy-1.6.2.tar.gz- source: salt://haproxy/files/haproxy-1.6.2.tar.gz- user: root- group: root- mode: 755cmd.run:- 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- unless: test -d /usr/local/haproxy- require:- pkg: pkg-init- file: haproxy-installhaproxy-init:file.managed:- name: /etc/init.d/haproxy- source: salt://haproxy/files/haproxy.init- user: root- group: root- mode: 755- require:- cmd: haproxy-installcmd.run:- name: chkconfig --add haproxy- unless: chkconfig --list | grep haproxy- require:- file: /etc/init.d/haproxynet.ipv4.ip_nonlocal_bind:sysctl.present:- value: 1haproxy-config-dir:file.directory:- name: /etc/haproxy- user: root- group: root- 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配置文件

# mkdir -p /srv/salt/prod/cluster/files# cd /srv/salt/prod/cluster/files/ # vim /srv/salt/prod/cluster/files/haproxy-outside.cfgglobalmaxconn 100000chroot /usr/local/haproxyuid 99 gid 99daemonnbproc 1pidfile /usr/local/haproxy/logs/haproxy.pidlog 127.0.0.1 local3 infodefaultsoption http-keep-alivemaxconn 100000mode httptimeout connect 5000mstimeout client 50000mstimeout server 50000mslisten statsmode httpbind 0.0.0.0:8888stats enablestats uri /haproxy-statusstats auth haproxy:saltstackfrontend frontend_www_example_combind 192.168.3.11:80mode httpoption httploglog globaldefault_backend backend_www_example_combackend backend_www_example_comoption forwardfor header X-REAL-IPoption httpchk HEAD / HTTP/1.0balance sourceserver web-node1 192.168.3.12:8080 check inter 2000 rise 30 fall 15server web-node2 192.168.3.19:8080 check inter 2000 rise 30 fall 15# cd ..# vim /srv/salt/prod/cluster/haproxy-outside.slsinclude:- haproxy.installhaproxy-service:file.managed:- name: /etc/haproxy/haproxy.cfg- source: salt://cluster/files/haproxy-outside.cfg- user: root- group: root- mode: 644service.running:- name: haproxy- enable: True- reload: True- require:- cmd: haproxy-init- watch:- file: haproxy-service# cd /srv/salt/base/# vim top.slsbase:'*':- init.env_initprod:'*':- 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的配置完成

阅读全文
0 0
原创粉丝点击