實驗環境:
server1:172.25.31.1 | salt-master |
---|---|
server2:172.25.31.2 | salt-minion、 apache、keepalived |
server3:172.25.31.3 | salt-minion、nginx、keepalived |
apache與nginx的部署上文已經介紹過了,這裏就不介紹了。
1.建立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.copykeepalived配置文件並修改
[root@server1 keepalived]# cat 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 eth0
virtual_router_id {{ VRID }}
priority {{ PRIORITY }}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.31.100
}
}
3.編輯keepalived安裝文件
[root@server1 keepalived]# cat install.sls
install-keepalived:
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
- watch:
- file: install-keepalived
4.編輯相應的pillar文件
[root@server1 pillar]# cat web/vars.sls
{% if grains['fqdn'] == 'server2' %}
webserver: httpd
ip: 172.25.31.2
port: 80
state: MASTER
vrid: 31
priority: 100
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
state: BACKUP
vrid: 31
priority: 50
{% endif %}
[root@server1 pillar]# cat top.sls
base:
'*':
- web.vars
5.編輯頂層top
root@server1 salt]# cat top.sls
base:
'roles:apache':
- match: grain
- apache.install
- keepalived.install
'roles:nginx':
- match: grain
- nginx.service
- keepalived.install
6.推送相應軟件給server2、server3
測試:
server2的優先級較高,vip在server2上
瀏覽器輸入:172.25.31.100
訪問的是server2的apache
關閉server2的keepalived
[root@server2 ~]# systemctl stop keepalived.service
vip轉移到server3上
此時,訪問的是server3的nginx