SaltStack 实现Keepalived高可用+负载均衡
实验环境:
在SaltStack部署完毕的前提下进行实验:
master主机:
server1:172.25.51.1
minion主机:
server2:172.25.51.2
server3:172.25.51.3
server4:172.25.51.4
其中,server4的yum源配置负载均衡包:
[root@server4 ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.51.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[salt]
name=saltstack
baseurl=http://172.25.51.250/rhel6
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.51.250/rhel6.5/LoadBalancer
gpgcheck=0
详细部署如下:
一、keepalived源码编译并链接文件
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# mkdir keepalived
[root@server1 salt]# cd keepalive/
[root@server1 keepalive]# mkdir files
[root@server1 keepalive]# cd files
[root@server1 files]# ls
keepalived-1.4.3.tar.gz ##下载keepalived安装包到此目录
[root@server1 files]# cd ..
[root@server1 keepalived]# vim install.sls
include:
- pkgs.make
kp-install:
file.managed:
- name: /mnt/keepalived-1.4.3.tar.gz
- source: salt://keepalived/files/keepalived-1.4.3.tar.gz
cmd.run:
- name: cd /mnt && tar zxf keepalived-1.4.3.tar.gz && cd keepalived-1.4.3 && ./configure --prefix=/usr/local/keepalived --with-init=SYSV &> /dev/null && make &> /dev/null && make install &> /dev/null
- creates: /usr/local/keepalived
/etc/sysconfig/keepalived:
file.symlink:
- target: /usr/local/keepalived/etc/sysconfig/keepalived
/sbin/keepalived:
file.symlink:
- target: /usr/local/keepalived/sbin/keepalived
/etc/keepalived:
file.directory:
- mode: 755
keepalived源码编译推送:
[root@server1 keepalived]# salt server4 state.sls keepalive.install
二、将server4的keepalived文件拷贝给server1
[root@server4 init.d]# pwd
/usr/local/keepalived/etc/rc.d/init.d
[root@server4 init.d]# scp keepalived server1:/srv/salt/keepalived/files
[root@server4 keepalived]# pwd
/usr/local/keepalived/etc/keepalived
[root@server4 keepalived]# scp keepalived.conf server1:/srv/salt/keepalived/files
三、修改keepalived配置文件
[root@server1 files]# pwd
/srv/salt/keepalived/files
[root@server1 files]# vim keepalived.conf ##删除31行后的不相关内容
3 global_defs {
4 notification_email {
5 root@localhost
6 }
7 notification_email_from keepalived@localhost
8 smtp_server 127.0.0.1
9 smtp_connect_timeout 30
10 router_id LVS_DEVEL
11 vrrp_skip_check_adv_addr
12 #vrrp_strict
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
16
17 vrrp_instance VI_1 {
18 state {{STATE}}
19 interface eth0
20 virtual_router_id {{vrid}}
21 priority {{priority}}
27 virtual_ipaddress {
28 172.25.51.100 ##vip
29 }
示图:keepalived配置文件
四、服务文件(jinja模板)
[root@server1 pillar]# cd /srv/salt/keepalived/
[root@server1 keepalived]# ls
files install.sls service.sls
[root@server1 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
五、定义变量
[root@server1 ~]# cd /srv/pillar/
[root@server1 pillar]# mkdir keepalived
[root@server1 pillar]# ls
keepalived top.sls web
[root@server1 pillar]# cd keepalived/
[root@server1 keepalived]# vim install.sls
{% if grains['fqdn'] == 'server1' %}
state: MASTER
vrid: 24
priority: 100
{% elif grains['fqdn'] == 'server4' %}
state: BACKUP
vrid: 24
priority: 50
{% endif %}
[root@server1 ~]# cd /srv/pillar/
[root@server1 pillar]# ls
keepalived top.sls web
[root@server1 pillar]# cd web/
[root@server1 web]# vim install.sls
{% if grains['fqdn'] == 'server2' %}
webserver: httpd
port: 80
bind: 172.25.51.2
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
port: 80
bind: 172.25.51.3
{% endif %}
六、修改base
[root@server1 pillar]# pwd
/srv/pillar
[root@server1 pillar]# vim top.sls
base:
'server2':
- web.install
'server3':
- web.install
'server1':
- keepalived.install
'server4':
- keepalived.install
七、make.sls添加mailx安装
[root@server1 ~]# vim /srv/salt/pkgs/make.sls
make:
pkg.installed:
- pkgs:
- gcc
- pcre-devel
- openssl-devel
- mailx
八、高级推送文件
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# ls
_grains haproxy httpd keepalived lib.sls nginx pkgs top.sls users
[root@server1 salt]# vim top.sls
base:
'server1':
- haproxy.install
- keepalived.service
'server4':
- haproxy.install
- keepalived.service
'server2':
- httpd.service
'server3':
- nginx.service
测试:
1、高级推送成功
2、访问172.25.51.100(vip)实现负载均衡