部署如下
实验环境:
主机名(IP) | 服务 |
---|---|
server1(172.25.254.1) | salt-master |
server2(172.25.254.2) | salt-minion,keeplived |
server3(172.25.254.3) | salt-minion,keeplived |
1.在server1上的saltstack的配置目录/srv/salt下建立相应的keepalived的目录并且建立其配置文件存放目录
[root@server1 salt]# mkdir keepalived
[root@server1 salt]# cd keepalived/
[root@server1 keepalived]# ls
[root@server1 keepalived]# mkdir files
[root@server1 keepalived]# ls
files
2.因为需要keepalived的配置文件可以在server2上安装keepalived的配置文件将其烤到server1上的配置文件存放的相应目录下
[root@server2 minion]# yum install keepalived -y
[root@server2 minion]# scp /etc/keepalived/keepalived.conf server1:/srv/salt/keepalived/files
3.在server1上编辑keepalived的安装文件
[root@server1 ~]# cd /srv/salt/keepalived
[root@server1 keepalived]# vim install.sls
kp-install:
pkg.installed:
- pkgs:
- keepalived
file.managed:
- name: /etc/keepalived/keepalived.conf
- source: salt://keepalived/files/keepalived.conf
- template: jinja
- context:
STATE: {{ pillar['state'] }}
VRID: {{ pillar['vrid'] }}
PRIORITY: {{ pillar['priority'] }}
service.running:
- name: keepalived
- enable: true
- reload: true
- watch:
- file: kp-install
4.编辑keepalived的配置文件,设置在jinja模版中导入的相应参数
[root@server1 keepalived]# vim files/keepalived.conf
! Configuration File for keepalived
global_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_instance VI_1 {
state {{ STATE }}
interface ens3
virtual_router_id {{ VRID }}
priority {{ PRIORITY }}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.254.100
}
}
5.编辑相应的pillar文件
[root@server1 keepalived]# vim /srv/pillar/web/vars.sls
{% if grains['fqdn'] == 'server2' %}
webserver: httpd
state: MASTER
vrid: 25
priority: 100
ip: 172.25.254.2
port: 80
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
state: BACKUP
vrid: 25 ##范围是1到100
priority: 50
ip: 172.25.254.3
port: 80
{% endif
6.编辑顶层top文件,分别在server2和server3上安装keepalived及其测试要用到的nginx和apache
[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# ls
apache _grains keepalived nginx top.sls
[root@server1 salt]# vim top.sls
base:
'server2':
- keepalived.install
- apache.service
'server3':
- keepalived.install
- nginx.service
7.进行推送
推送成功
8.查看vip默认在优先级高(server2)的服务端
10.综合httpd的测试
如果在作httpd的推送时设定了监听端口为host:port的方式,需要其中的host去掉,不去掉的花只能本机访问
[root@server1 salt]# cd apache/
[root@server1 apache]# vim install.sls
httpd-install:
pkg.installed:
- pkgs:
- httpd
- php
- httpd-tools
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644
- template: jinja
- context:
port: {{ pillar['port'] }}
[root@server1 apache]# vim files/httpd.conf
Listen {{ port }}
再次重新推送:
[root@server1 salt]# salt '*' state.highstate
//在物理机上访问虚拟ip,出现http的默认发布界面则高可用配置成功: