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.****.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
[[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
在浏览器测试:
高可用测试
高可用部署成功
重新推送则会恢复虚拟ip 回到之前的主机上
[[email protected] salt]# salt '*' state.highstate