基于SaltStack完成LVS的配置管理

之前由于工作需求,编写了SaltStack的 LVS远程执行模块 , LVS service状态管理模块 及 LVS server状态管理模块 ,并提交给了SaltStack官方 Loadblance(DR)及RealServer的配置管理.
   前置阅读
   LVS-DR模式配置详解 ,需要注意的是,LVS-DR方式工作在数据链路层,文中描述需要开启ip_forward,其实没有必要, 详情见 LVS DR模式原理剖析
   环境说明
   三台服务器用于LVS集群,其中主机名为lvs的担当的角色为loadblance,对应的IP地址为192.168.36.10;主机名为web-01和web-02的主机担当的角色为RealServer, 对应的IP地址分别为192.168.36.11及192.168.36.12
   LVS VIP: 192.168.36.33, Port: 80, VIP绑定在lvs的eth1口
   最最重要的是loadblance主机为Linux,并已安装ipvsadm, Windows/Unix等主机的同学请绕过吧,这不是我的错......
   开工
   Note
   以下所有操作均在Master上进行
   配置SaltStack LVS模块
   如果使用的Salt版本已经包含了lvs模块,请忽略本节内容,测试方法:
   salt ‘lvs‘ cmd.run "python -c ‘import salt.modules.lvs‘"
   如果输出有 ImportError 字样,则表示模块没有安装,需要进行如下操作:
   test -d /srv/salt/_modules || mkdir /srv/salt/_modules
   test -d /srv/salt/_states || mkdir /srv/salt/_states
   wget?https://raw.github.com/saltstack/salt/develop/salt/modules/lvs.py?-O /srv/salt/_modules/lvs.py
   wget?https://raw.github.com/saltstack/salt/develop/salt/states/lvs_service.py?-O /srv/salt/_states/lvs_service.py
   wget?https://raw.github.com/saltstack/salt/develop/salt/states/lvs_server.py?-O /srv/salt/_states/lvs_server.py
   配置pillar
/srv/pillar/lvs/loadblance.sls
lvs-loadblance:
- name: lvstest
vip: 192.168.36.33
vip-nic: eth1
port: 80
protocol: tcp
scheduler: wlc
realservers:
- name: web-01
ip: 192.168.36.11
port: 80
packet_forward_method: dr
weight: 10
- name: web-02
ip: 192.168.36.12
port: 80
packet_forward_method: dr
weight: 30
/srv/pillar/lvs/realserver.sls
lvs-realserver:
- name: lvstest
vip: 192.168.36.33
/srv/pillar/top.sls
base:
‘lvs‘:
- lvs.loadblance
‘web-0*‘:
- lvs.realserver

  编写States
/srv/salt/lvs/loadblance.sls
# config lvs
{% if ‘lvs-loadblance‘ in pillar %}
{% for each_lvs in pillar[‘lvs-loadblance‘] %}
# config lvs vip
{{each_lvs[‘name‘]}}-vip:
network.managed:
- name: {{each_lvs[‘vip-nic‘] + ":" + each_lvs[‘name‘]}}
- enable: True
- type: eth
- proto: none
- ipaddr: {{each_lvs[‘vip‘]}}
- netmask: 255.255.255.255
{% set service_address = each_lvs[‘vip‘] + ":" + each_lvs[‘port‘]|string() %}
{{each_lvs[‘name‘]}}-service:
lvs_service.present:
- protocol: {{each_lvs[‘protocol‘]}}
- service_address: {{service_address}}
- scheduler: {{each_lvs[‘scheduler‘]}}
{% for each_rs in each_lvs[‘realservers‘] %}
{% set server_address = each_rs[‘ip‘] + ":" + each_rs[‘port‘]|string() %}
{{each_rs[‘name‘]}}-server:
lvs_server.present:
- protocol: {{each_lvs[‘protocol‘]}}
- service_address: {{service_address}}
- server_address: {{server_address}}
- packet_forward_method: {{each_rs[‘packet_forward_method‘]}}
- weight: {{each_rs[‘weight‘]}}
{% endfor %}
{% endfor %}
{% endif %}
/srv/salt/lvs/realserver.sls
# ignore arp
net.ipv4.conf.all.arp_ignore:
sysctl.present:
- value: 1
net.ipv4.conf.lo.arp_ignore:
sysctl.present:
- value: 1
net.ipv4.conf.all.arp_announce:
sysctl.present:
- value: 2
net.ipv4.conf.lo.arp_announce:
sysctl.present:
- value: 2
# config lvs vip
{% if ‘lvs-realserver‘ in pillar %}
{% for each_lvs in pillar[‘lvs-realserver‘] %}
lvs-vip:
network.managed:
- name: {{"lo" + ":" + each_lvs[‘name‘]}}
- enable: True
- type: eth
- proto: none
- ipaddr: {{each_lvs[‘vip‘]}}
- netmask: 255.255.255.255
{% endfor %}
{% endif %}
/srv/salt/top.sls
base:
‘lvs‘:
- lvs.loadblance
‘web-0*‘:
- lvs.realserver
   应用配置
   如果之前进行 配置LVS模块 的操作,需要进行同步模块的操作:
   salt ‘lvs*‘ saltutil.sync_all
   应用LVS配置:
   salt ‘*‘ state.highstate
   查看LVS当前状态:
   salt ‘lvs‘ lvs.list
   总结
   通过SaltStack LVS模块,可以快速的查询LVS状态,执行LVS常用指令及完成LVS的配置管理。如有需要调整RealServer规则或添加新的RealServer, 只需要修改 /srv/pillar/lvs/loadblance.sls ,然后应用配置即可.

本文选自:http://www.spasvo.com/news/html/2014121155049_2.html

时间: 2024-08-29 06:49:53

基于SaltStack完成LVS的配置管理的相关文章

基于Saltstack、Artifactory打造传统模式下持续部署平台

一. 持续部署 1. 现状 由于没有建立标准的持续部署流程,导致了版本管理混乱,制品管理混乱,上线持续时间长,上线测试覆盖不全面,业务流量上升后故障较多,排查复杂.运维.测试.开发人员每次版本迭代的时候,都要可能需要经历一次通宵的历练,并且这种在上线的第二天依然会出现很多线上故障. 2. 痛点 ·自动化发布体系覆盖率低.·无标准化发布的流程.a) 只注重敏捷.忽视质量问题:b) 变更频繁导致故障率增加:c) 开发语言种类多,发布制品管理混乱,发布方式复杂:·安全问题容易被忽视. 二. 工具介绍

基于Keepalived实现LVS双主高可用集群

前言 前面说过基于heartbeat的LVS高可用方案,今天带来另一种解决方案:基于Keepalived实现LVS双主高可用集群.什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生.本文将详细讲述Keepalived工作原理及高可用解决方案的实现. 相关介绍 Keepalived简介 Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余

运维自动化之Saltstack(五)配置管理

配置管理--终于到重点了 说到配置管理,不得不说一下下面谈到的几个概念,理解他们很重要. Salt是通过一个文件top.sls管理minion端的状态的. 这个文件top.sls在这里叫做入口文件,此文件里记录了一个或者几个环境,在某一个环境下需要管理的minion端ID. 以及记录了受管理的minion端需要去匹配的状态:状态一般会有多个状态. 说一下我理解的状态,状态就是一组配置,配置里包含了minion端需要安装的软件名和设置好的配置文件,salt是通过配置文件去声明的.这个配置文件名必须

基于keepalived实现LVS的高可用

keepalived简介 首先简单介绍一下VRRP协议(虚拟路由器冗余协议).VRRP是一种容错协议,它可以将一组路由器组织成一个虚拟路由器,这个虚拟路由器仅适用一个IP地址,这个IP地址配置在其中的一台路由器上,这个路由器即为主路由器(MASTER),其余的为备用路由器(BACKUP).如果这个路由器组内的MASTER路由器出现故障了,BACKUP路由器将会通过选举策略选出一个新的MASTER路由器继续向外提供服务.这样就保证了网络之间的通信不会中断. keepalived即采用了VRRP协议

Keepalived实现高可用Nginx反向代理和基于NAT的LVS及分析

1. 前言 keepalived是一个C语言开发的,能够基于Linux基础架构提供一个HA实现的软件.HA是基于VRRP协议实现,可以为LVS.Nginx.HAProxy等实现的LB提供高可用. 下图是keepalived的软件架构图 主要核心模块: Checkers:负责对Real Server进行健康检查. VRRP栈:实现了VRRP协议,实现了vrrp_sync_group扩展,不依赖于LVS可以独立的使用.例如下面第一个实验keepalived+nginx反代. IPVS Wrapper

tomcat配置管理(三):基于多实例的tomcat配置管理

tomcat简介 有时候,我们希望周期性的更新Tomcat:有时候,我们又想统一管理安装在一台机器上的tomcat(比如让tomcat版本统一,让多个实例的tomcat的依赖统一.配置统一等).在这些场景下,我们都不希望把Web应用程序的文件放入Tomcat发行版的目录结构中,而是让一个tomcat运行多个实例,并把Web应用放在tomcat的安装目录之外. 一般在使用Tomcat时,服务器会从conf及webapps目录中读取配置文件,并将文件写入logs.temp和work目录,当然一些ja

写一个基于saltstack的自动化运维平台

前端只要是采用bootsrap.html和css.用表单和ajax做前后台的数据交换.这里由于我静态框架很差,所以采用的是别人的静态oms开源系统.后端主要运用的是paramiko模块(前期做的批量命令和文件推送.刚学saltstack.后期全部采用saltstack)和saltstack进行资产的自动化收集,这个只是一个前期的小项目,后期慢慢改善.差不多完成了,好好回家过年: 执行命令界面,点击主机列表的时候返回下面的主机信息.用paramiko方式执行批量命令. 批量推送文件界面: 资产管理

基于CentOS实现LVS的nat模式和DR模式

关于LVS的错误总结见以下: nat模式:http://amelie.blog.51cto.com/12850951/1979172 DR模式:http://amelie.blog.51cto.com/12850951/1979437 来自于某国内名企架构师的说法--LVS学好了,网络这部分就通透了. 这里阿拉只列举实现方式.伙计们有不懂的可以call我.嘛,最起码一两个月阿拉混博客都挺勤. DR模式: 负载均衡器:172.17.7.17(eth0) real server1:172.17.6.

基于Saltstack批量部署apache

什么是SaltStack SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统 实验环境准备 名称 角色 地址 centos7-min master 192.168.142.172 centos7-min2 client 192.168.142.110 实验步骤 一.主服务器--控制节点 安装epel源并安装控制端 yum install -y epel-release //安装epel源 yum -y install salt-master //安装控制端 修改控制端主配置