频道栏目
首页 > 资讯 > 其他 > 正文

SaltStack实现Keepalived高可用和负载均衡的操作教程

18-07-20        来源:[db:作者]  
收藏   我要投稿

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)实现负载均衡

这里写图片描述

这里写图片描述

并且vip在server1上:

这里写图片描述

当server1停止keeplived服务时,vip漂移到server4,实现高可用

这里写图片描述

相关TAG标签
上一篇:CentOS配置OracleJDK实例教程
下一篇:C++的构造函数属性初始化_静态成员_this指针代码实例讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站