saltstack自动化部署keepalived的高可用和haproxy的负载均衡

实验环境

准备四台主机

master:  172.25.11.9    server9   rhel6.5    haproxy+keepalived
minion:  172.25.11.10   server10  rhel6.5    httpd
minion:  172.25.11.8    server8   rhel6.5    nginx
minion:  172.25.11.100  server0   rhel6.5    haproxy+keepalived

首先设置saltstack自动化部署haproxy实现nginx的负载均衡
saltstack自动化部署haproxy实现nginx的负载均衡
在server0上配置yum源,下载salt-minion,更改/etc/salt/minion配置文件,将文件中的master指向master端(172.25.11.9),启动salt-minion服务,详情请点击上面链接。

部署keepalived的高可用

安装keepalived
cd /srv/salt
mkdir keepalived
cd keepalived/
mkdir files
include:
  - pkgs.make

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
salt server0 state.sls keepalived.install
scp /usr/local/keepalived/etc/rc.d/init.d/keepalived 172.25.11.9:/srv/salt/keepalived/files
scp /usr/local/keepalived/etc/keepalived/keepalived.conf 172.25.11.9:/srv/salt/keepalived/files

安装成功
saltstack自动化部署keepalived的高可用和haproxy的负载均衡_第1张图片

安装并启动keepalived,对文件做软链接
include:
  - pkgs.make

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

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

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

这里写图片描述

vim top.sls
base:
  'server9':
    - haproxy.install
    - keepalived.service
  'server0':
    - haproxy.install
    - keepalived.service
  'roles:apache':
    - match: grain
    - httpd.install
  'roles:nginx':
    - match: grain
    - nginx.service
添加模块,实现取值,对配置文件更改
cd /srv/salt/keepalived/
vim service.sls
include:
  - keepalived.install

/etc/keepalived/keepalived.conf:
  file.managed:
    - source: salt://keepalived/files/keepalived.conf
    - template: jinja
    - context:
      STATE: {{ pillar['state'] }}
      VRID: {{ pillar['vrid'] }}
      PRIORITY: {{ pillar['priority'] }}

kp-service:
  file.managed:
    - name: /etc/init.d/keepalived
    - source: salt://keepalived/files/keepalived
    - mode: 755
  service.running:
    - name: keepalived
    - reload: True
    - watch:
      - file: /etc/keepalived/keepalived.conf
vim /srv/pillar/top.sls
base:
  '*':
    - web.install
    - keepalived.install
设置优先级,实现高可用
mkdir /srv/pillar/keepalived/
vim  /srv/pillar/keepalived/install.sls
{% if grains['fqdn'] == 'server9' %}
state: MASTER
vrid: 11
priority: 100
{% elif grains['fqdn'] == 'server0' %}
state: BACKUP
vrid: 11
priority: 50
{% endif %}
更改配置keepalived文件
vim files/keepalived.conf
! Configuration File for keepalived

# 脚本利用keepalived实现haproxy的高可用
vrrp_script check_haproxy {
    script "/opt/check_happroxy.sh"
    interval 2
    weight 2
}

global_defs {
   notification_email {
    [email protected]
  }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

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.11.111/24
    }
    track_scritp {
    check_haproxy
    }
}
编写脚本实现haproxy的高可用,当haproxy关闭后,尝试开启,若开不起来,则关闭本机
的keepalived,vip转移到另一个keepalived上,从而实现高可用
vim /opt/check_happroxy.sh
#!/bin/bash

/etc/init.d/haproxy status &> /dev/null || /etc/init.d/haproxy restart &> /dev/null

if [ $? -ne 0 ];then
/etc/init.d/keepalived stop &> /dev/null
salt server0 state.sls keepalived.service

推送成功
saltstack自动化部署keepalived的高可用和haproxy的负载均衡_第2张图片
验证keepalived高可用(vip)
saltstack自动化部署keepalived的高可用和haproxy的负载均衡_第3张图片
在server9上关闭keepalived后ip转移
saltstack自动化部署keepalived的高可用和haproxy的负载均衡_第4张图片
重新开启server9上的keepalived后(vip)重新回到server9上,因为server9的优先级高于server0
浏览器检测负载均衡:输入172.25.11.111

你可能感兴趣的:(soltstack,自动部署)