saltstack搭建集群2

简介:

功能模块-----keepalived模块


写之前先找一台主机源码安装测试

1
2
3
4
5
6
7
http: //www.keepalived.org/software/keepalived-1.2.19.tar.gz
[root@node1 tools]# tar xf keepalived- 1.2 . 19 .tar.gz
[root@node1 tools]# cd keepalived- 1.2 . 19
[root@node1 keepalived- 1.2 . 19 ]# ./configure --prefix=/usr/local/keepalived --disable-fwmark
[root@node1 keepalived- 1.2 . 19 ]# make && make install
keepalived- 1.2 . 19 /keepalived/etc/init.d/keepalived.init       #启动脚本
keepalived- 1.2 . 19 /keepalived/etc/keepalived/keepalived.conf    #配置文件

 

配置keepalived模块路径及相关文件

1
2
3
4
5
6
7
8
9
10
[root@node1 ~]# mkdir /srv/salt/prod/keepalived
[root@node1 ~]# mkdir /srv/salt/prod/keepalived/files
[root@node1 keepalived]# cp ~/tools/keepalived- 1.2 . 19 .tar.gz /srv/salt/prod/keepalived/
files/
[root@node1 tools]#cp keepalived- 1.2 . 19 /keepalived/etc/init.d/keepalived.init /srv/salt/prod/keepalived/files/        #复制启动脚本
[root@node1 tools]#cp keepalived- 1.2 . 19 /keepalived/etc/keepalived/keepalived.conf /srv/salt/prod/keepalived/files/           #复制配置文件
[root@node1 tools]# cp keepalived- 1.2 . 19 /keepalived/etc/init.d/keepalived.sysconfig /srv/salt/prod/keepalived/files/
[root@node1 tools]# cd /srv/salt/prod/keepalived/files/
[root@node1 files]# vim keepalived.init     #修改启动脚本路径
daemon /usr/local/keepalived/sbin/keepalived ${KEEPALIVED_OPTIONS}


1.keepalived功能模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[root@node1 keepalived]# cd /srv/salt/prod/keepalived/
[root@node1 keepalived]# cat install.sls
include :
   - pkg.pkg-init
keepalived-install:
   file.managed:
     - name: /usr/local/src/keepalived- 1.2 . 19 .tar.gz
     - source: salt: //keepalived/files/keepalived-1.2.19.tar.gz
     - user: root
     - group: root
     - mode:  755
   cmd.run:
     - name: cd /usr/local/src/ && tar xf keepalived- 1.2 . 19 .tar.gz && cd keepalived- 1.2 . 19  && ./configure --prefix=/usr/local/keepalived --disable-fwmark && make &&make install
     - unless: test -d /usr/local/keepalived
     - require:
       - pkg: pkg-init
       - file: keepalived-install
keepalived-init:
   file.managed:
     - name: /etc/init.d/keepalived
     - source: salt: //keepalived/files/keepalived.init
     - user: root
     - group: root
     - mode:  755
   cmd.run:
     - name: chkconfig --add keepalived
     - unless: chkconfig --list |grep keepalived
     - require:
       - file: keepalived-init
/etc/sysconfig/keepalived:
   file.managed:
     - source: salt: //keepalived/files/keepalived.sysconfig
     - user: root
     - group: root
     - mode:  644
/etc/keepalived:
   file.directory:
     - user: root
     - group: root
     - mode:  755
  
[root@node1 files]# salt  '*'  state.sls keepalived.install env=prod     #手动测试一下


2.keepalived业务模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@node1 ~]# cd /srv/salt/prod/cluster/files/
[root@node1 files]# cat haproxy-outside-keepalived.cfg #keepalived配置文件,里面用到了jinja变量
#configutation file  for  keepalive
globlal_defs {
     notification_email {
       saltstack@example.com
}
     notification_email_from keepalived@example.com
     smtp_server  127.0 . 0.1
     smtp_connect_timeout  30
     router_id `ROUTEID`
}
vrrp_instance haproxy_ha {
state `STATEID`
interface  eth2
     virtual_router_id  36
priority `PRIORITYID`
     advert_int  1
authentication {
auth_type PASS
     auth_pass  1111
   }
   virtual_ipaddress {
     192.168 . 10.130
   }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
[root@node1 ~]# cd /srv/salt/prod/cluster/
[root@node1 cluster]# cat haproxy-outside-keepalived.sls
include :
  - keepalived.install
  
keepalived-service:
   file.managed:
     - name: /etc/keepalived/keepalived.conf
     - source: salt: //cluster/files/haproxy-outside-keepalived.cfg
     - user: root
     - group: root
     - mode:  644
     - template: jinja
     {%  if  grains[ 'fqdn' ] ==  'node1'  %}
     - ROUTEID: haproxy_ha
     - STATEID: MASTER
     - PRIORITYID:  150
     {% elif grains[ 'fqdn' ] ==  'node2'  %}
     - ROUTEID: haproxy_ha
     - STATEID: BACKUP
     - PRIORITYID:  100
     {% endif %}
   service.running:
     - name: keepalived
     - enable: True
     - watch:
       - file: keepalived-service
  
  
[root@node1 cluster]# salt  '*'  state.sls cluster.haproxy-outside-keepalived env=prod  #测试一下

指定服务器执行keepalived模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@node1 salt]# cat /srv/salt/base/top.sls
base:
   '*' :
     - init.env_init
prod:
   'node1' :
     - cluster.haproxy-outside
     - cluster.haproxy-outside-keepalived
   'node2' :
     - cluster.haproxy-outside
     - cluster.haproxy-outside-keepalived
  
  
[root@node1 salt]# salt  '*'  state.highstate    #到这步执行成功的话就实现了keepalived+haproxy

 

遇到问题:发现keepalived 虚拟vip写不上去

查看日志 cat /var/log/messages,发现下面一句

Aug 11 15:10:12 node1 Keepalived_vrrp[29442]: VRRP_Instance(haproxy_ha{) sending 0 priority

haproxy_ha后面打了个空格解决

vrrp_instance haproxy_ha {


本文转自 fxl风 51CTO博客,原文链接:http://blog.51cto.com/fengxiaoli/1958138

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
消息中间件 监控 网络协议
SaltStack安装Apache/Mysql/PHP部署Wordpress
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。 SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。 master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受
151 0
|
关系型数据库 应用服务中间件 测试技术