1、目录结构规划如下

mkdir -p /srv/salt/prod/haproxy

mkdir -p /srv/salt/prod/keepalived

mkdir -p /srv/salt/prod/pkg

mkdir -p /srv/salt/prod/cluster

mkdir -p /srv/salt/prod/haproxy/files/

mkdir -p /srv/salt/prod/cluster/files

2、依赖包安装

[root@zabbix files]# cat /srv/salt/prod/pkg/pkg-init.sls
pkg-init:
pkg.installed:
- names:
- gcc
- gcc-c++
- glibc
- make
- autoconf
- openssl
- openssl-devel
- pcre
- pcre-devel

3、手动安装一遍,一遍获得需要的文件

cd /usr/local/src

tar xvf haproxy-1.6.3.tar.gz

cd haproxy-1.6.3/

make TARGET=linux31 PREFIX=/usr/local/haproxy-1.6.3

make install PREFIX=/usr/local/haproxy-1.6.3

ln -s /usr/local/haproxy-1.6.3 /usr/local/haproxy

修改启动脚本

vi /usr/local/src/haproxy-1.6.3/examples/haproxy.init

BIN=/usr/local/haproxy/sbin/$BASENAME

cp /usr/local/src/haproxy-1.6.3/examples/haproxy.init /srv/salt/prod/haproxy/files/

haproxy-1.6.3.tar.gz安装包放入/srv/salt/prod/modules/haproxy/files/目录下

4、编写haproxy状态 文件 安装haproxy

[root@zabbix files]# cat /srv/salt/prod/haproxy/install.sls
include:
- pkg.pkg-init haproxy-install:
file.managed:
- name: /usr/local/src/haproxy-1.6..tar.gz
- source: salt://haproxy/files/haproxy-1.6.3.tar.gz
- user: root
- group: root
- mode:
cmd.run:
- name: cd /usr/local/src/&&tar xf haproxy-1.6..tar.gz&&cd haproxy-1.6.&& make TARGET=linux31 PREFIX=/usr/local/haproxy&& make install PREFIX=/usr/local/haproxy
- unless: test -d /usr/local/haproxy
- require:
- pkg: pkg-init
- file: haproxy-install /etc/init.d/haproxy:
file.managed:
- source: salt://haproxy/files/haproxy.init
- user: root
- group: root
- mode:
- require:
- cmd: haproxy-install haproxy-init:
cmd.run:
- name: /etc/init.d/haproxy
- unless: chkconfig --list|grep haproxy
- require:
- file: /etc/init.d/haproxy net.ipv4.ip_nonlocal_bind:
sysctl.present:
- value: haproxy-config-dir:
file.directory:
- name: /etc/haproxy
- user: root
- group: root
- mode:

5、编写haproxy配置文件

[root@zabbix files]# cat /srv/salt/prod/cluster/files/haproxy-outside.cfg
global
maxconn
chroot /usr/local/haproxy
uid
gid
daemon
nbproc
pidfile /usr/local/haproxy/logs/haproxy.pid
log 127.0.0.1 local3 info defaults
option http-keep-alive
maxconn
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms listen stats
mode http
bind 0.0.0.0:
stats enable
stats uri /haproxy-status
stats auth haproxy:saltstack frontend frontend_www_example_com
bind 172.16.80.199:
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 roundrobin
server web-node1 172.16.80.5: check inter rise fall
server web-node2 172.16.80.6: check inter rise fall

6、编写haproxy配置状态文件

[root@zabbix files]# cat /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:
service.running:
- name: haproxy
- enable: True
- reload: True
- require:
- cmd: haproxy-init
- watch:
- file: haproxy-service

7、配置top 文件

[root@zabbix files]# cat /srv/salt/base/top.sls
base:
'*':
- init.env_init prod:
'*':
- cluster.haproxy-outside

8、执行

[root@zabbix files]#  salt "*" state.highstate test=True #先测试

[root@zabbix files]#  salt "*" state.highstate

9、验证

keepalived

Keepalived 自安装
[root@zabbix src]# tar xf keepalived-1.3..tar.gz
[root@zabbix src]# cd keepalived-1.3./
[root@zabbix keepalived-1.3.]# ./configure --prefix=/usr/local/keepalived
[root@zabbix keepalived-1.3.]#make && make install [root@zabbix ~]# mkdir /srv/salt/prod/keepalived
[root@zabbix ~]# mkdir /srv/salt/prod/keepalived/files [root@zabbix keepalived-1.3.]# cp /usr/local/src/keepalived-1.3./keepalived/etc/init.d/keepalived /srv/salt/prod/keepalived/files/
[root@zabbix keepalived-1.3.]# cp /usr/local/src/keepalived-1.3./keepalived/etc/keepalived/keepalived.conf /srv/salt/prod/keepalived/files/

[root@zabbix ~]# cp /usr/local/src/keepalived-1.3.7/keepalived/etc/sysconfig/keepalived /srv/salt/prod/keepalived/files/keepalived.sysconfig

[root@zabbix ~]# cp /usr/local/src/keepalived-1.3.7.tar.gz /srv/salt/prod/keepalived/files


改脚本
daemon keepalived ${KEEPALIVED_OPTIONS}
改为 daemon /usr/local/keepalived/sbin/keepalived ${KEEPALIVED_OPTIONS}

编写keepaliv[root@zabbix ~]# cat /srv/salt/prod/keepalived/install.sls        include:

- pkg.pkg-init

keepalived-install:
file.managed:
- name: /usr/local/src/keepalived-1.3..tar.gz
- source: salt://keepalived/files/keepalived-1.3.7.tar.gz
- user: root
- group: root
- mode:
cmd.run:
- name : cd /usr/local/src/&& tar xf keepalived-1.3..tar.gz&&cd keepalived-1.3.&&./configure --prefix=/usr/local/keepalived&&make&&make install
- unless: test -d /usr/local/keepalived
- require:
- file: keepalived-install /etc/sysconfig/keepalived:
file.managed:
- source: salt://keepalived/files/keepalived.sysconfig
- mode:
- user: root
- group: root /etc/init.d/keepalived:
file.managed:
- source: salt://keepalived/files/keepalived
- mode:
- user: root
- group: root keepalived-init:
cmd.run:
- name: chkconfig --add keepalived
- unless: chkconfig --list | grep keepalived
- require:
- file: /etc/init.d/keepalived /etc/keepalived:
file.directory:
- user: root
- group: root

创建keepalived配置文件

[root@zabbix ~]# cat /srv/salt/prod/cluster/files/haproxy-outside-keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
saltstack@example.com
}
notification_email_from keepalived@example.com
smtp_server 127.0.0.1
smtp_connect_timeout
router_id {{ ROUTEID }}
} vrrp_instance haproxy_ha {
state {{ STATEID }}
interface eth0
virtual_router_id
priority {{ PRIORITYID }}
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
172.16.80.199
}
}

创建keepalived状态文件

[root@zabbix ~]# cat /srv/salt/prod/cluster/haproxy-outside-keepalived.sls
include:
- keepalived.install keepalived-server:
file.managed:
- name: /etc/keepalived/keepalived.conf
- source: salt://cluster/files/haproxy-outside-keepalived.conf
- mode:
- user: root
- group: root
- template: jinja
{% if grains['fqdn'] == 'zabbix' %}
- ROUTEID: haproxy_ha
- STATEID: MASTER
- PRIORITYID:
{% elif grains['fqdn'] == 'k8s-node1' %}
- ROUTEID: haproxy_ha
- STATEID: BACKUP
- PRIORITYID:
{% endif %}
service.running:
- name: keepalived
- enable: True
- watch:
- file: keepalived-server

[root@zabbix ~]# salt '*' state.sls cluster.haproxy-outside-keepalived saltenv=prod test=True

[root@zabbix ~]# cat /srv/salt/base/top.sls

[root@zabbix ~]# cat /srv/salt/base/top.sls
base:
'*':
- init.env_init prod:
'*':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived

[root@zabbix ~]# salt '*' state.highstate

saltstack 实现haproxy+keepalived的更多相关文章

  1. SaltStack生产案例-服务部署(redis,mysql,apache+php,haproxy+keepalived)

    顺序代码资料链接 课上资料.zip 接上篇:SaltStack生产案例-系统初始化 1,redis 主从 2,mysql 主从 2.1 mysql-install.sls (安装 初始化) 2.2   ...

  2. 09 saltstack生产实例--Haproxy+keepalived

    1.如何理解haproxy+keepalived https://www.cnblogs.com/zs-wei/p/9213961.html HaProxy可以通过监听一个统一的端口对外提供能力,然后 ...

  3. Haproxy+Keepalived负载均衡

    Haproxy介绍 HAProxy是一个特别适用于高可用性环境的TCP/HTTP开源的反向代理和负载均衡软件.在7层负载均衡方面的功能很强大(支持cookie track, header rewrit ...

  4. HaProxy+Keepalived+Mycat高可用群集配置

    概述 本章节主要介绍配置HaProxy+Keepalived高可用群集,Mycat的配置就不在这里做介绍,可以参考我前面写的几篇关于Mycat的文章. 部署图: 配置  HaProxy安装 181和1 ...

  5. haproxy +keepalived 原创

    Haproxy+keepalived 原理: HAProxy介绍及其定位 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.根 ...

  6. haproxy+keepalived实现高可用负载均衡

    软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...

  7. HaProxy+keepalived实现负载均衡

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...

  8. Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

    配置环境说明: KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G  系统盘20G cpu 4核 Haproxy keepalived 2台 192.168.1.10 192 ...

  9. 实现基于Haproxy+Keepalived负载均衡高可用架构

    1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...

随机推荐

  1. 浅谈PHP中的数组和JS中的数组

    最近在做前后端对接的时候,遇到一个问题,前端要求返回的数据格式是左边的,但是我通过json_encode返回到的数据格式是右边的   注意:数据格式从"[]"(数组)变成了&quo ...

  2. PHP中json_encode后,在json字符串中依然显示中文的解决方案

    <?php header("Content-Type:text/html;charset=utf-8;"); $arr = array ('Version_code'=> ...

  3. Docker自学纪实(六)搭建docker私有仓库

    docker的镜像仓库分两种:一种是从官方公有仓库拉取:还有就是自己搭建私有仓库.官方的镜像仓库是面对整个应用市场的:私有仓库一般用于公司内部,就是公司项目自身所需的镜像.搭建私有仓库有什么好处?私有 ...

  4. ARM S3C2440 时钟初始化流程

    1.设置lock time 2.设置分频系数 3.设置CPU到异步工作模式 4.设置 FCLK 了解 芯片的时钟原理图,以及寄存器的作用 了解芯片的晶振频率,锁相环,分频系数,以及有哪些时钟

  5. Mysql入门基础命令

    1    Mysql基本操作 1.1    查询当前数据库 mysql> show databases; +--------------------+ | Database | +------- ...

  6. Linq to SQL八大子句

    查询数据库中的数据 from- in子句 指定查询操作的数据源和范围变量 select子句 指定查询结果的类型和表现形式 where子句 筛选元素的逻辑条件,一般由逻辑运算符组成 group- by子 ...

  7. java中substring()、charAt()、indexOf() (2013-05-05-bd 写的日志迁移

    substring 1. public String substring(int beginIndex)     返回一个新的字符串,它是此字符串的一个子字符串, 该子字符串始于指定索引处的字符,一直 ...

  8. PHP关于 []

    在一个表格里,提交时,名字部分加一个[],表示数组,这样,存在多个同样名字的name.前面的value不会替代后面value,如下面 <td><input name="so ...

  9. 单片机入门学习笔记8:STM32单片机使用

    经常会在某个QQ群里看见某人的QQ昵称的名字"不会32绝不改名",其实无论会不会,之后名称都改了. STM32单片机在我看来就三部分组成:各部分的初始化,中断的使用,Main函数内 ...

  10. wps取消英文首字母大写功能

    wps中关于首字母大写的功能还是很有用处的,但是有时候对于我们来说却是一种累赘,怎么取消这个功能呢? 新建一个文档之后,点击wps文字,选择工具,选项按钮 然后点击编辑,取消勾选键入时自动进行首字母大 ...