一.实验环境
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)客户端透明,不影响访问