rhel6.5-saltstack一键部署keepalived+haproxy

一.实验环境

172.15.78.11(server11)
salt-master
172.25.78.12(server12) 、172.25.78.13(server13)
haproxy+keepalived
172.25.78.14(server14) 、172.25.78.15(server15)
apache(web服务)

172.25.78.12、172.25.78.13

172.25.78.14、172.25.78.15

salt-minion

haproxy高可用的整个框架:


二.salt-master以及salt-minion服务的部署

1.salt-master的安装及配置

/etc/salt/master   ##salt-master配置文件

saltstack部署的服务都在这个基础目录下

2.每个salt-minion节点都安装

/etc/salt/minion   ##salt-minion配置文件

每个节点指定master的主机号


3.在/etc/hosts做本地解析

4.配置好之后重启服务

5.把salt-minion节点加入salt-master

salt-key  -A    ##全部的节点都加入master

salt-key  -L     ##查看节点


三.推送keepalived+haproxy服务

1.在/srv/salt/目录下创建目录(haproxy、httpd、keepalived、pkgs)以及文件top.sls

haproxy服务推送目录

httpd服务推送目录

keepalived服务推送目录

pkgs:安装keepalived需要的安装包的目录

tops.sls:同时推送所有服务


2.haproxy服务的推送


(1)haproxy.cfg(haproxy的负载均衡的配置)


(2)install.sls(haproxy的安装)

3.httpd服务的推送

(1)httpd服务的安装

4.keepalived需要的安装包的推送


(1)install.sls(keepalived需要的安装包的安装)

file.managed:       ##文件管理

    - name:      ##指定文件在salt-minion存放的位置
    - source:    ##文件在salt-master存放的位置

cmd.run    ##执行命令

    -name       ##操作的名称

    -creates    ##如果安装包已经创建,就不再安装

(2)files目录存放安装包


5.keepalived服务的推送

(1)install.sls(keepalived的安装以及配置文件的设置)

keepalived的安装需要一些依赖包(放在pkgs目录下),用keepalived做haproxy的高可用我用的是主备模式,所以有些参数在不同的主机配置不一致,就用到了jinja模版(在keepalived配置文件里设置变量,根据不同的主机号推送不同的参数)

根据grains['fqdn']获取主机号,把server12作为keepalived-master,server13作为keepalived-backup


(2)service.sls(管理keepalived的服务运行)

(3)files目录下的文件


haproxy.chk.sh   ##检测haproxy的脚本


keepalived1        ##keepalived脚本的启动要用

keepalived-1.4.3.tar.gz     ##keepalived的源码包

(4)keepalived.conf      ##keepalived的配置文件

6.在salt-minion节点设定节点角色


7.在salt-master同步数据,免去了反复重启服务的麻烦


8.tops.sls    ##同时推送所有的服务

base:        ##指的是salt-master配置文件中的开启的目录,所有的服务都创建在/srv/salt目录下

根据salt-minion节点的角色来部署服务,也可以根据操作系统等,

9.推送服务

salt '*' state.highstate     ##'*'匹配所有指向master的主机,可以同时推送不同的服务到不同的主机,也是一键部署的关键

10.测试

(1)在keepalived-master关闭keepalived,VIP漂移到BACKUP

(2)VIP成功漂移

(3)客户端透明,不影响访问