SaltStack之Pillar和Jinja部署LVS+Keepalived+Haproxy
来源:互联网 发布:淘宝遇到买家恶意退款 编辑:程序博客网 时间:2024/05/29 15:30
一、Pillar和Jinja简介
Pillar是Salt用来分发全局变量到所有minions的一个接口
官方文档介绍:http://docs.saltstack.cn/topics/pillar/index.html
Jinja加载工具为jinja模板提供了一个更强大的后端
官方文档介绍http://docs.saltstack.cn/ref/renderers/all/salt.renderers.jinja.html
二、部署haproxy+keepalived+nginx
本此实验的所以资源及源代码均已上传,需要的可以下载交流
下载地址:srv.tar.gz
1.环境部署安排:
系统:redhat6.5
server5:salt—master
server6:keepalived+haproxy
server7:keepalived+haproxy
server8:nginx
server9:nginx
2.在salt—master上创建top.sls
vim /srv/salt/top.slsbase: 'server6': - keepalived.service - haproxy.service 'server7': - keepalived.service - haproxy.service 'roles:nginx': - match: grain - nginx.service
3.在salt—master上创建my_grains.py
[root@server5 salt]# vim /srv/salt/_grains/my_grains.py#!/usr/bin/env pythondef my_grains(): grains = {} grains['roles'] = 'nginx' return grains
4.在salt-master上创建nginx部署
4.1 安装脚本install.sls
vim /srv/salt/nginx/install.slsinclude: - pkg.nginxnginx-install: file.managed: - name: /mnt/nginx-1.12.0.tar.gz - source: salt://nginx/files/nginx-1.12.0.tar.gz cmd.run: - name: cd /mnt && tar zxf nginx-1.12.0.tar.gz && cd nginx-1.12.0 && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module && make && make install - creates: /usr/local/nginx/usr/local/nginx/html/index.html: file.managed: - source: salt://nginx/files/index.html - template: jinja
4.2 服务启动脚本service.sls
vim /srv/salt/nginx/service.slsinclude: - nginx.install - user.nginx/usr/local/nginx/conf/nginx.conf: file.managed: - source: salt://nginx/files/nginx.conf - mode: 644/etc/init.d/nginx: file.managed: - source: salt://nginx/files/nginx - mode: 755nginx-service: service.running: - name: nginx - enable: true - reload: true - require: - file: /etc/init.d/nginx - watch: - file: /usr/local/nginx/conf/nginx.conf
4.3 依赖安装脚本nginx.sls
vim /srv/salt/pkg/nginx.slsnginx-pkg: pkg.installed: - pkgs: - gcc - pcre-devel - openssl-devel - zlib-devel
4.4 pillar部署方案脚本web.sls
vim /srv/pillar/nginx/web.sls{% if grains['host'] == 'server7' %}bind: 172.25.27.7{% elif grains['host'] == 'server8' %}bind: 172.25.27.8{% endif %}
4.5 pillar脚本top.sls
vim /srv/pillar/top.slsbase: 'server7': - nginx.web 'server8': - nginx.web
4.6 用户创建脚本
vim /srv/salt/user/nginx.slsnginx: user.present: - uid: 800 - shell: /sbin/nologin - home: /usr/local/nginx - createhome: false
5.在salt-master上创建haproxy部署
5.1安装脚本
vim /srv/salt/haproxy/install.slsinclude: - pkg.haproxy - user.haproxyhaproxy-install: file.managed: - name: /mnt/haproxy-1.6.11.tar.gz - source: salt://haproxy/files/haproxy-1.6.11.tar.gz cmd.run: - name: cd /mnt && tar zxf haproxy-1.6.11.tar.gz && cd haproxy-1.6.11 && make TARGET=linux26 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy && make TARGET=linux26 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install - creates: /usr/local/haproxy/etc/haproxy: file.directory: - mode: 755/etc/haproxy/haproxy.cfg: file.managed: - source: salt://haproxy/files/haproxy.cfg/etc/init.d/haproxy: file.managed: - source: salt://haproxy/files/haproxy - mode: 755
5.2 服务启动脚本service.sls
vim /srv/salt/haproxy/service.slsinclude: - haproxy.installhaproxy-service: service.running: - name: haproxy - enable: true - reload: true - watch: - file: /etc/haproxy/haproxy.cfg
5.3 依赖安装脚本nginx.sls
vim /srv/salt/pkg/haproxy.slshaproxy-pkg: pkg.installed: - pkgs: - gcc - pcre-devel - openssl-devel - zlib-devel
5.4 用户创建脚本
vim /srv/salt/user/haproxy.slshaproxy: group.present: - gid: 200 user.present: - uid: 200 - gid: 200 - shell: /sbin/nologin - home: /usr/local/haproxy - createhome: false
6.在salt-master上创建keepalived部署
6.1安装脚本
vim /srv/salt/keepalived/install.sls{% set keepalived_version = '1.3.6' %}include: - pkg.keepalivedkeepalived-install: file.managed: - name: /mnt/keepalived-{{keepalived_version}}.tar.gz - source: salt://keepalived/files/keepalived-{{keepalived_version}}.tar.gz cmd.run: - name: cd /mnt && tar zxf keepalived-{{keepalived_version}}.tar.gz && cd keepalived-{{keepalived_version}} && ./configure --prefix=/usr/local/keepalived --with-init=SYSV && make && make install - creates: /usr/local/keepalived/etc/sysconfig/keepalived: file.managed: - source: salt://keepalived/files/keepalived - mode: 644 - user: root/etc/keepalived: file.directory: - mode: 755/etc/keepalived/keepalived.conf: file.managed: - source: salt://keepalived/files/keepalived.conf - mode: 644 - template: jinja {% if grains['fqdn'] == 'server6' %} - STATE: MASTER - PRIORITY: 100 {% elif grains['fqdn'] == 'server7' %} - STATE: BACKUP - PRIORITY: 50 {% endif %}/sbin/keepalived: file.symlink: - target: /usr/local/keepalived/sbin/keepalived/etc/init.d/keepalived: file.managed: - source: salt://keepalived/files/keepalived-init - mode: 755
6.2 服务启动脚本service.sls
vim /srv/salt/keepalived/service.slsinclude: - keepalived.installkeepalived-service: service.running: - name: keepalived - enable: true - reload: true - watch: - file: /etc/keepalived/keepalived.conf
6.3 依赖安装脚本keepalived.sls
vim /srv/salt/pkg/keepalived.slskeepalived-pkg: pkg.installed: - pkgs: - gcc - pcre-devel - openssl-devel - zlib-devel
6.4 keepalived 配置文件配置
! Configuration File for keepalivedglobal_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr# vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0}vrrp_instance VI_1 { state {{ STATE }} interface eth0 virtual_router_id 51 priority {{ PRIORITY }} advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.25.27.100/24 }}virtual_server 172.25.27.100 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 172.25.27.8 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 172.25.27.9 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }}
7.安装部署
上面只是完成了脚本,巧妇难为无米之炊,我们还需要一些相应的包和配置文件来支持安装,这里不做详细介绍
最后配置下nginx的默认发布页
[root@server5 salt]# vim nginx/files/index.html<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }</style></head><body><h1>Welcome to nginx! {{ grains['host'] }} </h1> ##修改这里,用以区分<p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>
再写一个测试页
vim /srv/salt/nginx/files/test.html<h1>data from {{ HOST }} <h1>
相应的/srv/salt/nginx/install.sls也要改动一下
vim /srv/salt/nginx/install.sls ##在最后添加以下内容/usr/local/nginx/html/test.html: file.managed: - source: salt://nginx/files/test.html - template: jinja - HOST: {{ grains['host'] }}
最终的目录结构是这样的
[root@server5 srv]# tree.├── pillar│ ├── nginx│ │ └── web.sls│ └── top.sls└── salt ├── haproxy │ ├── files │ │ ├── haproxy │ │ ├── haproxy-1.6.11.tar.gz │ │ └── haproxy.cfg │ ├── install.sls │ └── service.sls ├── keepalived │ ├── files │ │ ├── keepalived │ │ ├── keepalived-1.3.6.tar.gz │ │ ├── keepalived.conf │ │ └── keepalived-init │ ├── install.sls │ └── service.sls ├── nginx │ ├── files │ │ ├── index.html │ │ ├── nginx │ │ ├── nginx-1.12.0.tar.gz │ │ ├── nginx.conf │ │ └── test.html │ ├── install.sls │ └── service.sls ├── pkg │ ├── haproxy.sls │ ├── keepalived.sls │ └── nginx.sls ├── top.sls └── user ├── haproxy.sls └── nginx.sls[root@server5 ~]# salt '*' saltutil.refresh_pillar ##可不用执行[root@server5 salt]# salt server[8,9] saltutil.sync_grains ##可不用执行[root@server5 salt]# salt '*' state.highstate
部署成功浏览器测试:
浏览器有缓存,我们通过shell查看轮询效果
阅读全文
0 0
- SaltStack之Pillar和Jinja部署LVS+Keepalived+Haproxy
- lvs+keepalived 和 haproxy+heartbeat
- lvs+keepalived和haproxy+heartbeat keepalived heartbeat
- Saltstack自动部署Haproxy+keepalived+nginx+memcache+php(fastcgi)
- lvs+keepalived和haproxy+heartbeat区别
- lvs+keepalived和haproxy+heartbeat区别
- keepalived + LVS 配置和部署
- saltstack Pillar
- saltstack pillar
- 自动化管理工具Saltstack之Pillar篇(11)
- SaltStack实战之数据系统-Pillar
- haproxy & LVS*(keepalived和heartbeat) & ng的比较
- 利用saltstack部署高可用集群及负载均衡(keepalived+haproxy+nginx)
- SaltStack-02Haproxy以及Keepalived配置
- LVS+Keepalived 部署
- LVS + Keepalived + mycat部署
- 菜鸟玩云计算之廿一: saltstack之pillar
- SaltStack Pillar攻略
- Java时间和时间戳的相互转换
- MapReduce的4部分
- 配置交换机的静态路由
- Win7下安装HBase0.96.0单机模式(无需cygwin)
- OC中的 __attribute__
- SaltStack之Pillar和Jinja部署LVS+Keepalived+Haproxy
- JS中如何进行对象的深拷贝
- 自定义Flume拦截器,并将收集的日志存储到Kafka中(案例)
- Jsonp解决ajax跨域问题
- HiveServer2与beeline的使用 & Hive JDBC编程
- 第三章 内部排序
- 吃惊:Kotlin 有望超越 Java 成为 Android 首选编程语言
- AtomicIntegerFieldUpdater
- JVM_10_JDK命令行工具