配置
server1 172.25.12.1 salt-master、salt-minion haproxy、keepalived
server2 172.25.12.2 salt-minion httpd
server3 172.25.12.3 salt-minion nginx
server4 172.25.12.4 salt-minion haproxy、keepalived
这篇文章只针对keepalived
httpd,nginx部署参考https://blog.csdn.net/u010489158/article/details/81744757
haproxy部署参考https://blog.csdn.net/u010489158/article/details/81777758
[root@server1 salt]# cd /srv/salt
[root@server1 salt]# mkdir keepalived #创建keepalived的目录
[root@server1 salt]# cd keepalived/
[root@server1 keepalived]# mkdir files #一些文件和软件包存放目录
[root@server1 keepalived]# vim install.sls #编辑安装脚本
[root@server1 keepalived]# cat install.sls
keepalived-install: #安装依赖性
pkg.installed:
- pkgs:
- pcre-devel
- gcc
- openssl-devel
kp-install:
file.managed: #将安装包存放在客户端的/mnt/keepalived-2.0.6.tar.gz位置
- 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 #权限为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]# mkdir files #一些配置信息存放的目录
[root@server1 keepalived]# cd files/
[root@server1 files]# cat keepalived #keepalived的启动脚本
#!/bin/sh
#
# Startup script for the Keepalived daemon
#
# processname: keepalived
# pidfile: /var/run/keepalived.pid
# config: /etc/keepalived/keepalived.conf
# chkconfig: - 21 79
# description: Start and stop Keepalived
# Source function library
. /etc/rc.d/init.d/functions
# Source configuration file (we set KEEPALIVED_OPTIONS there)
. /etc/sysconfig/keepalived
RETVAL=0
prog="keepalived"
start() {
echo -n $"Starting $prog: "
daemon keepalived ${KEEPALIVED_OPTIONS}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
stop() {
echo -n $"Stopping $prog: "
killproc keepalived
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
}
reload() {
echo -n $"Reloading $prog: "
killproc keepalived -1
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
fi
;;
status)
status keepalived
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
[root@server1 files]# vim keepalived.conf #keepalived的配置文件
[root@server1 files]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 172.25.12.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 }} #{{}}这种取值方式是采用pillar方法取值
interface eth0
virtual_router_id {{ VRID }}
priority {{ PRIORITY }}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.12.100
}
}
[root@server1 keepalived]# pwd
/srv/pillar/keepalived
[root@server1 keepalived]# pwd
/srv/pillar/keepalived
[root@server1 keepalived]# vim install.sls #创建pillar值
{% if grains['fqdn'] == 'server1' %} #不同的server对应不同的值
state: MASTER
vrid: 12
priority: 100
{% elif grains['fqdn'] == 'server4' %}
state: BACKUP
vrid: 12
priority: 50
{% endif %}
[root@server1 pillar]# pwd
/srv/pillar
[root@server1 pillar]# vim top.sls #读取pillar值
base:
'*':
- web.install
- keepalived.install
[root@server1 keepalived]# pwd
/srv/salt/keepalived
[root@server1 keepalived]# vim service.sls #创建推送脚本
include: #此脚本包含之前的install脚本
- keepalived.install
/etc/keepalived/keepalived.conf:
file.managed:
- source: salt://keepalived/files/keepalived.conf
- template: jinja #使用pillar需要添加这个模块
- context:
STATE: {{ pillar['state'] }} #pillar值
VRID: {{ pillar['vrid'] }}
PRIORITY: {{ pillar['priority'] }}
kp-service:
file.managed:
- name: /etc/init.d/keepalived
- source: salt://keepalived/files/keepalived
- mode: 755
service.running: #运行keepalived
- name: keepalived
- reload: True
- watch: #监控
- file: /etc/keepalived/keepalived.conf
[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# cat top.sls #创建全局配置脚本
base:
'server1':
- haproxy.install
- keepalived.service
'roles:apache':
- match: grain
- httpd.install
'roles:nginx':
- match: grain
- nginx.service
'server4':
- haproxy.install
- keepalived.service
[root@server1 salt]# salt '*' state.highstate