设为首页 收藏本站
查看: 1277|回复: 0

[经验分享] saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy

[复制链接]

尚未签到

发表于 2018-1-3 20:50:47 | 显示全部楼层 |阅读模式
  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路径
  

# 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.init  
BIN=/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.sls  

  
include:
  
- pkg.pkg-init
  
haproxy-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: 755
  
cmd.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-install
  
haproxy-init:
  
file.managed:
  
- name: /etc/init.d/haproxy
  
- source: salt://haproxy/files/haproxy.init
  
- user: root
  
- group: root
  
- mode: 755
  
- require:
  
- cmd: haproxy-install
  
cmd.run:
  
- name: chkconfig --add haproxy
  
- unless: chkconfig --list | grep haproxy
  
- require:
  
- file: /etc/init.d/haproxy
  
net.ipv4.ip_nonlocal_bind:
  
sysctl.present:
  
- value: 1
  
haproxy-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.cfg  
global
  
maxconn 100000
  
chroot /usr/local/haproxy
  
uid 99
  
gid 99
  
daemon
  
nbproc 1
  
pidfile /usr/local/haproxy/logs/haproxy.pid
  
log 127.0.0.1 local3 info
  
defaults
  
option http-keep-alive
  
maxconn 100000
  
mode http
  
timeout connect 5000ms
  
timeout client 50000ms
  
timeout server 50000ms
  
listen stats
  
mode http
  
bind 0.0.0.0:8888
  
stats enable
  
stats uri /haproxy-status
  
stats auth haproxy:saltstack
  
frontend frontend_www_example_com
  
bind 192.168.3.11:80
  
mode http
  
option httplog
  
log global
  
default_backend backend_www_example_com
  
backend backend_www_example_com
  
option forwardfor header X-REAL-IP
  
option httpchk HEAD / HTTP/1.0
  
balance source
  
server web-node1 192.168.3.12:8080 check inter 2000 rise 30 fall 15
  
server web-node2 192.168.3.19:8080 check inter 2000 rise 30 fall 15
  

  
# cd ..
  
# vim /srv/salt/prod/cluster/haproxy-outside.sls
  
include:
  
- haproxy.install
  
haproxy-service:
  
file.managed:
  
- name: /etc/haproxy/haproxy.cfg
  
- source: salt://cluster/files/haproxy-outside.cfg
  
- user: root
  
- group: root
  
- mode: 644
  
service.running:
  
- name: haproxy
  
- enable: True

  
->  
- require:
  
- cmd: haproxy-init
  
- watch:
  
- file: haproxy-service
  

  
# cd /srv/salt/base/
  
# vim top.sls
  
base:
  
'*':
  
- init.env_init
  
prod:
  
'*':
  
- 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的配置完成
DSC0000.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-431318-1-1.html 上篇帖子: centos7 saltstack安装 下篇帖子: SaltStack 与 Python 程序的结合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表