配置管理实例-keepalived 的部署与业务应用
一、keepalived 部署
1.编写 sls 方法文件
1.1 keepalived 部署 sls 文件
[root@master ~]# cat /srv/salt/prod/keepalived/install.sls
include:
- pkg.pkg-init
keepalived-install:
file.managed:
- name: /opt/keepalived-1.2.19.tar.gz
- source: salt://keepalived/files/keepalived-1.2.19.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /opt && tar zxvf keepalived-1.2.19.tar.gz && cd keepalived-1.2.19 && ./configure --prefix=/usr/local/keepalived --disable-fwmark && make && make install
- unless: test -d /usr/local/keepalived
- require:
- pkg: pkg-init
- file: keepalived-install
keepalived-init:
file.managed:
- name: /etc/init.d/keepalived
- source: salt://keepalived/files/keepalived.init
- user: root
- group: root
- mode: 755
cmd.run:
- name: chkconfig --add keepalived
- unless: chkconfig --list | grep keepalived
- require:
- file: keepalived-init
/etc/sysconfig/keepalived:
file.managed:
- source: salt://keepalived/files/keepalived.sysconfig
- user: root
- group: root
- mode: 644
/etc/keepalived:
file.directory:
- user: root
- group: root
- mode: 755
2. 配置文件修改
## 修改启动脚本文件keepalived.init中的keepalived安装路径
daemon /usr/local/keepalived/sbin/keepalived
3. 安装文件测试
[root@master ~]# salt '192.168.1.102' state.sls keepalived.install env=prod test=True
二、keepalived 的业务引用
1.业务引用 sls 方法文件
[root@master ~]# cat /srv/salt/prod/cluster/haproxy-outside-keepalived.sls
include:
- keepalived.install
keepalived-service:
file.managed:
- name: /etc/keepalived/keepalived.conf
- source: salt://cluster/files/haproxy-outside-keepalived.conf
- user: root
- group: root
- mode: 644
- template: jinja
{% if grains['id'] == '192.168.1.102' %}
- ROUTERID: haproxy_ha
- STATEID: MASTER
- PRIORITYID: 150
{% elif grains['id'] == '192.168.1.103' %}
- ROUTERID: haproxy_ha
- STATEID: BACKUP
- PRIORITYID: 100
{% endif %}
service.running:
- name: keepalived
- enable: True
- watch:
- file: keepalived-service
2. keepalived 集群配置文件模板
[root@master ~]# cat /srv/salt/prod/cluster/files/haproxy-outside-keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state [[STATEID]]
interface eth1
virtual_router_id 51
priority [[PRIORITYID]]
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.115
}
}
3.测试
[root@master ~]# salt '192.168.1.102' state.sls cluster.haproxy-outside-keepalived env=prod test=True
三、top.sls 文件修改
[root@master ~]# cat /srv/salt/base/top.sls
base:
'*':
- init.env_init
prod:
'192.168.1.102':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
'192.168.1.103':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
[root@master ~]# salt '*' state.highstate test=True