实验环境
系统: CentOS 7
server1 172.25.41.1 salt-master
server4 172.25.41.4 salt-minion
[root@server4 ~]# vim /etc/yum.repos.d/rhel-source.repo
[root@server4 ~]# yum repolist
[root@server4 etc]# yum install -y salt-minion
[root@server4 etc]# cd salt/
[root@server4 salt]# vim minion
16 master: 172.25.41.1
[root@server4 salt]# /etc/init.d/salt-minion start
[root@server1 ~]# salt-key -L
[root@server1 ~]# salt-key -a server4 #分发server4密钥
[root@server1 ~]# salt-key -L
配置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.41.250/source6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[saltsack]
name=saltsack
baseurl=http://172.25.41.250/rhel6
enabled=1
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.41.250/source6.5/LoadBalancer
gpgcheck=0
[root@server4 ~]# yum repolist
一·安装keepalived
[root@server1 ~]# ls
keepalived-2.0.6.tar.gz
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# ls
_grains haproxy httpd nginx pkgs top.sls users
[root@server1 salt]# mkdir keepalived
[root@server1 salt]# cd keepalived/
[root@server1 keepalived]# mkdir files
[root@server1 keepalived]# cd files/
[root@server1 files]# mv /root/keepalived-2.0.6.tar.gz .
[root@server1 files]# ls
keepalived-2.0.6.tar.gz
[root@server1 files]# cd ..
[root@server1 keepalived]# vim install.sls
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
[root@server1 keepalived]# salt server4 state.sls keepalived.install #推送
server4 查看进程
将server4上的配置文件传给server1
[root@server4 ~]# ll -d /usr/local/keepalived/
drwxr-xr-x 6 root root 4096 Aug 18 10:00 /usr/local/keepalived/
[root@server4 ~]# cd /mnt/ #查看是否安装成功
[root@server4 mnt]# ls
keepalived-2.0.6 keepalived-2.0.6.tar.gz
[root@server4 mnt]# cd /usr/local/keepalived/
[root@server4 keepalived]# ls
bin etc sbin share
[root@server4 keepalived]# cd etc/
[root@server4 etc]# cd rc.d/
[root@server4 rc.d]# cd init.d/
[root@server4 init.d]# ls
keepalived
[root@server4 init.d]# scp keepalived server1:/srv/salt/keepalived/files/ #配置文件传给server1
[root@server4 init.d]# cd ..
[root@server4 rc.d]# cd ..
[root@server4 etc]# ls
keepalived rc.d sysconfig
[root@server4 etc]# cd keepalived/
[root@server4 keepalived]# ls
keepalived.conf samples
[root@server4 keepalived]# scp keepalived.conf server1:/srv/salt/keepalived/files/
二·做链接
[root@server1 keepalived]# vim install.sls
/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
[root@server1 keepalived]# salt server4 state.sls keepalived.install #推送
server4 查看
三·编辑执行脚本
[root@server1 keepalived]# cd /srv/pillar/
[root@server1 pillar]# ls
top.sls web
[root@server1 pillar]# cd web/
[root@server1 web]# cd ..
[root@server1 pillar]# mkdir keepalived
[root@server1 pillar]# cd keepalived/
[root@server1 keepalived]# cp ../web/install.sls .
[root@server1 keepalived]# vim install.sls
[root@server1 keepalived]# cat install.sls
{% if grains['fqdn'] == 'server1' %}
state: MASTER
vrid: 41
priority: 100
{% elif grains['fqdn'] == 'server4' %}
state: BACKUP
vrid: 41
priority: 50
{% endif %}
[root@server1 keepalived]# cd ..
[root@server1 pillar]# ls
keepalived top.sls web
[root@server1 pillar]# vim top.sls
[root@server1 pillar]# cat top.sls
base:
'*':
- web.install
- keepalived.install
[root@server1 pillar]# vim /srv/salt/keepalived/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 pillar]# cd /srv/salt/keepalived/
[root@server1 keepalived]# cd files/
[root@server1 files]# vim keepalived.conf
[root@server1 files]# salt server4 state.sls keepalived.service #推送
keepalived.conf 文件
server4 查看
[root@server4 keepalived]# cd /etc/keepalived/
[root@server4 keepalived]# ls
keepalived.conf
[root@server4 keepalived]# ps ax
[root@server4 keepalived]# ip addr
[root@server4 salt]# yum install -y mailx
四·实现负载均衡
[root@server1 salt]# yum install -y mailx
[root@server1 keepalived]# cd ..
[root@server1 salt]# ls
_grains haproxy httpd keepalived nginx pkgs top.sls users
[root@server1 salt]# vim top.sls
base:
'server1':
- haproxy.install
- keepalived.service
'server4':
- haproxy.install
- keepalived.service
[root@server1 salt]# salt '*' state.highstate
[root@server1 salt]# ip addr
server4 查看进程和IP
[root@server4 keepalived]# ps ax
[root@server4 keepalived]# ip addr
五·测试
网页访问:172.25.41.1
当在server1中关闭keepalived时,网页也不会受影响,还是会实现负载均衡现象
[root@server1 salt]# /etc/init.d/keepalived stop
在server4中查看时,VIP已经被接管
server1打开服务后,VIP还是会回到server1上
[root@server1 salt]# /etc/init.d/keepalived start