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

[经验分享] saltstack之haproxy的安装配置

[复制链接]

尚未签到

发表于 2018-1-3 20:00:16 | 显示全部楼层 |阅读模式
  

mkdir /srv/salt/prod/pkg  
mkdir /srv/salt/prod/haproxy
  
mkdir /srv/salt/prod/haproxy/files
  

  

  在创建上述目录之前需要修改salt的master配置文件,打开prod环境:
  

[iyunv@node1 base]# egrep -v "^$|^#" /etc/salt/master  
publisher_acl:
  wadeson:
  - test.ping
  - network.*
  jsonhc:
  - node1*:
  - test.ping
  
file_roots:
  base:
  - /srv/salt/base
  test:
  - /srv/salt/test
  prod:
  - /srv/salt/prod
  
pillar_roots:
  base:
  - /srv/pillar/base
  

  

  1、构建编译环境:
  

[iyunv@node1 pkg]# pwd  
/srv/salt/prod/pkg
  
[iyunv@node1 prod]# cat pkg/pkg-init.sls
  
pkg-init:
  pkg.installed:
  - names:
  - gcc
  - gcc-c++
  - glibc
  - make
  - autoconf
  - openssl
  - openssl-devel
  

  

  构建编译开发环境,如果上述不满足需求,可以更换为下面:
  

# cat pkg_group-init.sls  
pkg_group-init:
  cmd.run:
  - name: yum groupinstall "Development tools" "Server Platform Development"
  - unless: yum grouplist|grep "Development tools"
  

  

  2、使用saltstack进行编译安装haproxy
  2.1将下载好的haproxy源码包放置在haproxy目录下面的files目录中(files目录提供需要用的源码包,文件等)
  

[iyunv@node1 prod]# ll haproxy/files/  
总用量 1552
  
-rw-r--r-- 1 root root 1580214 6月  18 21:45 haproxy-1.6.13.tar.gz
  
-rwxr-xr-x 1 root root    2395 10月  9 22:25 haproxy.init
  

  

  2.2haproxy的源码包和启动脚本准备好后,开始进行安装haproxy
  

[iyunv@node1 haproxy]# pwd  
/srv/salt/prod/haproxy
  
[iyunv@node1 haproxy]# cat install.sls
  
include:
  - pkg.pkg-init          pkg.pkg-init前面的pkg是以目录prod为基准,也就是目录根
  

  
haproxy-install:                  haproxy的安装
  file.managed:
  - name: /usr/local/src/haproxy-1.6.13.tar.gz
  - source: salt://haproxy/files/haproxy-1.6.13.tar.gz
  - user: root
  - group: root
  - mode: 755
  cmd.run:
  - name: cd /usr/local/src/ && tar xf haproxy-1.6.13.tar.gz && cd haproxy-1.6.13 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
  - unless: test -d /usr/local/haproxy                  判断目录,如果存在即返回TRUE则不会执行name中的命令
  - require:
  - pkg: pkg-init                 haproxy的安装依赖编译环境的安装,如果编译环境安装失败,haproxy安装将不会进行
  - file: haproxy-install       haproxy的安装也依赖于/usr/local/src/haproxy-1.6.13.tar.gz
  

  
haproxy-init:                     为haproxy提供启动脚本,并添加到启动项
  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:                   能够监听本机以外的ip(keepalived的vip漂移做准备)
  sysctl.present:
  - value: 1
  

  
haproxy-config-dir:                         为haproxy创建配置目录
  file.directory:
  - name: /etc/haproxy
  - user: root
  - group: root
  - mode: 755
  

  haproxy的安装sls写完后,验证是否成功,当前目录为:
  

[iyunv@node1 haproxy]# ll  
total 8
  
drwxr-xr-x 2 root root 4096 Oct  9 23:40 files
  
-rw-r--r-- 1 root root 1033 Oct 10 11:12 install.sls
  
[iyunv@node1 haproxy]# pwd
  
/srv/salt/prod/haproxy
  

  

  salt默认是从base环境下面进行查找sls文件(如果没有添加到top.sls文件中),于是需要如下操作来执行install这个sls文件:
  salt 'node1' state.sls haproxy.install env=prod 这种报错
   DSC0000.png
  查找文档:salt.modules.state.sls(mods, saltenv=None, test=None, exclude=None, queue=False, env=None, **kwargs)
  于是解决办法为:salt 'node1' state.sls haproxy.install saltenv=prod
  3、安装完haproxy后,并且haproxy已经有了启动脚本,接下来需要给haproxy提供配置文件,最后将haproxy服务开启,由于根据业务需求的不同,可能用到的haproxy的配置文件会有区别,
  所以这里将配置文件与haproxy的安装分隔开进行状态管理配置,以后minion的haproxy可以根据配置文件的不同而提供安装
  

[iyunv@node1 haproxy]# mkdir /srv/salt/prod/cluster  
[iyunv@node1 haproxy]# mkdir /srv/salt/prod/cluster/files
  
[iyunv@node1 haproxy]# pwd
  
/srv/salt/prod/haproxy
  
[iyunv@node1 files]# ll
  
总用量 4
  
-rw-r--r-- 1 root root 1252 10月  9 22:25 haproxy-outside.cfg
  
[iyunv@node1 files]# pwd
  
/srv/salt/prod/cluster/files
  

  

  开始编译状态配置文件,将haproxy的安装与配置文件结合起来,并且将haproxy的服务开启
  

[iyunv@node1 cluster]# cat haproxy-outside.sls  
include:
  - haproxy.install                include进来haproxy的安装
  

  
haproxy-service:                      启动haproxy服务
  file.managed:                         复制配置文件
  - name: /etc/haproxy/haproxy.cfg
  - source: salt://cluster/files/haproxy-outside.cfg
  - user: root
  - group: root
  - mode: 644
  service.running:                        开启haproxy服务,并添加到开机启动
  - name: haproxy
  - enable: True
  ->当该服务有reload则,当配置文件发生变化时,会reload,而不是restart
  - require:
  - cmd: haproxy-init
  - watch:                      监控某状态,当配置文件发生变化,自动reload(没有reload则会restart)
  - file: haproxy-service
  

  

  上述sls文件中,第一步骤是haproxy的安装,接下来才是给安装好的haproxy提供配置文件,最后才是将haproxy服务开启(如果需要开机启动则添加enable)
  将上述haproxy整个项目添加到base环境下面的top.sls中
  

[iyunv@node1 base]# cat top.sls  
base:
  '*':
  - init.env_init
  

  
prod:
  'node1':
  - cluster.haproxy-outside 
  

  于是haproxy的整个项目执行命令为salt '*' state.highstate

  当配置文件修改后,然后执行salt '*' state.highstate ,会根据watch的定义
  - watch: 监控某状态,当配置文件发生变化,自动reload(没有reload则会restart)
  - file: haproxy-service
  来reload服务haproxy:
下面是整个haproxy项目的框架构图  

[iyunv@node1 salt]# tree  
.
  
├── base
  
│   ├── init
  
│   │   ├── audit.sls
  
│   │   ├── dns.sls
  
│   │   ├── env_init.sls
  
│   │   ├── files
  
│   │   │   ├── echo.sh
  
│   │   │   ├── resolv.conf
  
│   │   │   ├── test.txt
  
│   │   │   ├── zabbix-agent-3.0.10-1.el6.x86_64.rpm
  
│   │   │   └── zabbix-sender-3.0.10-1.el6.x86_64.rpm
  
│   │   ├── history.sls
  
│   │   ├── sysctl.sls
  
│   │   └── zabbix_agent.sls
  
│   ├── _modules
  
│   ├── test
  
│   │   ├── create_file.sls
  
│   │   ├── file-manage.sls
  
│   │   ├── file.text
  
│   │   ├── httpd-remove.sls
  
│   │   ├── if_unless.sls
  
│   │   └── test1.sls
  
│   └── top.sls
  
├── prod
  
│   ├── cluster
  
│   │   ├── files
  
│   │   │   └── haproxy-outside.cfg
  
│   │   └── haproxy-outside.sls
  
│   ├── haproxy
  
│   │   ├── files
  
│   │   │   ├── haproxy-1.6.13.tar.gz
  
│   │   │   └── haproxy.init
  
│   │   └── install.sls
  
│   └── pkg
  
│       └── pkg-init.sls
  
└── test
  

  

  haproxy-outside.sls中包含haproxy的安装,配置文件的添加,haproxy服务的启动,而haproxy的安装包含编译环境的构建,haproxy编译安装的命令步骤,启动脚本的添加

运维网声明 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-431297-1-1.html 上篇帖子: 1、Saltstack简介及安装配置 下篇帖子: saltstack master minion安装配置简单使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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