在SaltStack部署完毕的前提下进行实验:
其中,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
[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
[root@server1 keepalived]# salt server4 state.sls keepalive.install
[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
[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 %}
[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
[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