业务引用之keepalived
同haproxy业务引用一样,我们同样在cluster目录下进行。
编写salt文件:
salt文件涉及到keepalived的安装的引用;每个节点的具体参数如何这里主要通过编写jiaja模版来实现每个节点参数的差异性。通过grains的fqdn来判断不同的主机名,实现不同主机不同参数。
在cluster目录编辑:
[root@salt-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['fqdn'] == 'centos-test1' %}
- ROUTEID: haproxy_ha
- STATEID: MASTER
- PRIORITYID: 150
{% elif grains['fqdn'] == 'centos-test2' %}
- ROUTEID: haproxy_ha
- STATEID: BACKUP
- PRIORITYID: 100
{% endif %}
service.running:
- name: keepalived
- enable: True
- watch:
- file: keepalived-service
keepalived差异性配置文件:
在keepalived安装脚本中,我们为了能够启动keepalived服务,我们在两个节点上都下发相同的keepalived配置文件,这次为了实现每个节点上的keepalived去配置不同的参数,需要下发一份差异性配置文件。
[root@salt-master ~]# cat /srv/salt/prod/cluster/files/haproxy-outside-keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
saltstack@example.com
}
notification_email_from keepalived@example.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id {{ROUTEID}}
}
vrrp_instance haproxy_ha {
state {{STATEID}}
interface eth0
virtual_router_id 36
priority {{PRIORITYID}}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.91.100
}
}
编写top文件:
将业务引用模块keepalived的haprox-outside-keepalived导入。
[root@salt-master ~]# vi /srv/salt/base/top.sls
base:
'*':
- init.env_init
prod:
'salt-master.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
'salt-minion.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
查看文件结构:
[root@salt-master ~]# tree /srv/salt/
/srv/salt/
├── base
│ ├── init
│ │ ├── audit.sls
│ │ ├── dns.sls
│ │ ├── env_init.sls
│ │ ├── files
│ │ │ └── resolv.conf
│ │ ├── history.sls
│ │ └── sysctl.sls
│ └── top.sls
├── prod
│ ├── cluster
│ │ ├── files
│ │ │ ├── haproxy-outside.cfg
│ │ │ └── haproxy-outside-keepalived.conf
│ │ ├── haproxy-outside-keepalived.sls
│ │ └── haproxy-outside.sls
│ ├── haproxy
│ │ ├── files
│ │ │ ├── haproxy-1.7.11.tar.gz.tar
│ │ │ └── haproxy.init
│ │ └── install.sls
│ ├── keepalived
│ │ ├── files
│ │ │ ├── keepalived-1.4.4.tar.gz
│ │ │ ├── keepalived.conf
│ │ │ ├── keepalived.ini
│ │ │ └── keepalived.sysconfig
│ │ └── install.sls
│ └── pkg
│ └── pkg-init.sls
└── test
12 directories, 20 files
通过salt高级模式执行:
[root@salt-master ~]# salt '*' state.highstat
同haproxy业务引用一样,我们同样在cluster目录下进行。
编写salt文件:
salt文件涉及到keepalived的安装的引用;每个节点的具体参数如何这里主要通过编写jiaja模版来实现每个节点参数的差异性。通过grains的fqdn来判断不同的主机名,实现不同主机不同参数。
在cluster目录编辑:
[root@salt-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['fqdn'] == 'centos-test1' %}
- ROUTEID: haproxy_ha
- STATEID: MASTER
- PRIORITYID: 150
{% elif grains['fqdn'] == 'centos-test2' %}
- ROUTEID: haproxy_ha
- STATEID: BACKUP
- PRIORITYID: 100
{% endif %}
service.running:
- name: keepalived
- enable: True
- watch:
- file: keepalived-service
keepalived差异性配置文件:
在keepalived安装脚本中,我们为了能够启动keepalived服务,我们在两个节点上都下发相同的keepalived配置文件,这次为了实现每个节点上的keepalived去配置不同的参数,需要下发一份差异性配置文件。
[root@salt-master ~]# cat /srv/salt/prod/cluster/files/haproxy-outside-keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
saltstack@example.com
}
notification_email_from keepalived@example.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id {{ROUTEID}}
}
vrrp_instance haproxy_ha {
state {{STATEID}}
interface eth0
virtual_router_id 36
priority {{PRIORITYID}}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.91.100
}
}
编写top文件:
将业务引用模块keepalived的haprox-outside-keepalived导入。
[root@salt-master ~]# vi /srv/salt/base/top.sls
base:
'*':
- init.env_init
prod:
'salt-master.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
'salt-minion.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
查看文件结构:
[root@salt-master ~]# tree /srv/salt/
/srv/salt/
├── base
│ ├── init
│ │ ├── audit.sls
│ │ ├── dns.sls
│ │ ├── env_init.sls
│ │ ├── files
│ │ │ └── resolv.conf
│ │ ├── history.sls
│ │ └── sysctl.sls
│ └── top.sls
├── prod
│ ├── cluster
│ │ ├── files
│ │ │ ├── haproxy-outside.cfg
│ │ │ └── haproxy-outside-keepalived.conf
│ │ ├── haproxy-outside-keepalived.sls
│ │ └── haproxy-outside.sls
│ ├── haproxy
│ │ ├── files
│ │ │ ├── haproxy-1.7.11.tar.gz.tar
│ │ │ └── haproxy.init
│ │ └── install.sls
│ ├── keepalived
│ │ ├── files
│ │ │ ├── keepalived-1.4.4.tar.gz
│ │ │ ├── keepalived.conf
│ │ │ ├── keepalived.ini
│ │ │ └── keepalived.sysconfig
│ │ └── install.sls
│ └── pkg
│ └── pkg-init.sls
└── test
12 directories, 20 files
通过salt高级模式执行:
[root@salt-master ~]# salt '*' state.highstat