SaltStack自动化部署keeplived实现haproxy高可用

实验环境

rhel6.5
serevr1 salt-master,salt-minion keeplived+haproxy ip:172.25.254.100
server4 salt-minion keeplived+haproxy ip :172.25.254.104
server2 salt-minion ip:172.25.254.102
server3 salt-minion ip:172.25.254.103
虚拟ip 172.25.254.200

salt的基础配置见https://blog.csdn.net/weixin_42711549/article/details/83478459

源码编译keeplived

[[email protected] salt]# mkdir keepalived
[[email protected] salt]# mkdir keepalived/files
[[email protected] salt]# cd keepalived/
[[email protected] keepalived]# vim install.sls
[[email protected] keepalived]# cat install.sls 
keepalived-install:
  pkg.installed:
    - pkgs:
      - pcre-devel
      - gcc
      - openssl-devel

kp-install:
  file.managed:
    - name: /mnt/keepalived-2.0.6.tar.gz
    - source: salt://keepalived/files/keepalived-2.0.6.tar.gz
  cmd.run:     
    - name: cd /mnt && tar zxf keepalived-2.0.6.tar.gz && cd  keepalived-2.0.6 && ./configure --prefix=/usr/local/keepalived --with-init=SYSV &> /dev/null && make &> /dev/null && make install &> /dev/null
    - creates: /usr/local/keepalived

/etc/keepalived:
  file.directory:
    - mode: 755

/sbin/keepalived:
  file.symlink:
    - target: /usr/local/keepalived/sbin/keepalived

/etc/sysconfig/keepalived:
   file.symlink:
    - target: /usr/local/keepalived/etc/sysconfig/keepalived

/etc/init.d/keepalived:
  file.managed:
    - source: salt://keepalived/files/keepalived
    - mode: 755
[[email protected] keepalived]# ls files/
keepalived-2.0.6.tar.gz

在server4上

[[email protected] etc]# cd /usr/local/keepalived/etc/rc.d/init.d/
[[email protected] init.d]# ls
keepalived
[[email protected] init.d]# scp keepalived [email protected]:/srv/salt/keepalived/files
[[email protected] init.d]# cd /usr/local/keepalived/etc/
[[email protected] etc]# cd keepalived/
[[email protected] keepalived]# ls
keepalived.conf  samples
[[email protected] keepalived]# scp keepalived.conf [email protected]:/srv/salt/keepalived/files
在server1上推送编译keeplived
[[email protected] files]# salt server4 state.sls keepalived.install

修改keeplived 的配置文件

[[email protected] keepalived]# vim files/keepalived.conf

SaltStack自动化部署keeplived实现haproxy高可用

[[email protected] srv]# mkdir pillar
[[email protected] srv]# cd pillar/
[[email protected] pillar]# mkdir keepalived [[email protected] pillar]# cd keepalived/ [[email protected] keepalived]# vim install.sls
[[email protected] keepalived]# cat install.sls 
{% if grains['fqdn'] == 'server1' %}
state: MASTER
vrid: 25
priority: 100
{% elif grains['fqdn'] == 'server4' %}
state: BACKUP
vrid: 25
priority: 50
{% endif %}
[[email protected] pillar]# cat top.sls 
base:
  '*':
    - web.install
    - keepalived.install

多节点推送

[[email protected] salt]# vim top.sls 
[[email protected] salt]# cat top.sls 
base:   
  'server1':     
    - haproxy.service
    - keepalived.service
  'server4':
    - haproxy.service
    - keepalived.service
  'roles:apache':
    - match: grain
    - apache.service
  'roles:nginx':
    - match: grain
    - nginx.service
[[email protected] salt]# cd /srv/pillar/web/ [[email protected] web]# vim install.sls
 {% if grains['fqdn'] == 'server2' %} 
 webserver: httpd 
 port: 80 
 {% elif grains['fqdn'] == 'server3' %} 
 webserver: nginx 
 {% endif %}
[[email protected] salt]# salt '*' state.highstate

在浏览器测试:
SaltStack自动化部署keeplived实现haproxy高可用
SaltStack自动化部署keeplived实现haproxy高可用
高可用测试
SaltStack自动化部署keeplived实现haproxy高可用
SaltStack自动化部署keeplived实现haproxy高可用
SaltStack自动化部署keeplived实现haproxy高可用
高可用部署成功

重新推送则会恢复虚拟ip 回到之前的主机上

[[email protected] salt]# salt '*' state.highstate

SaltStack自动化部署keeplived实现haproxy高可用