码迷,mamicode.com
首页 > 其他好文 > 详细

3-7-LVS实现企业负载均衡高级应用配置实战2

时间:2019-03-16 23:29:47      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:auto   for   生成   主页   有一个   邮件   code   信息   keep   

健康逻辑:
网络层检测:能不能ping通,有可能有误差,服务不知道在不在线
传输层检测:80或443端口,tcp ping 或udp ping,但是不知道服务可用不可用(页面资源被删)
更向上一层,应用层检测资源,状态码必须是200,内容必须包含我检测的关键字,但是会记录日志,会干扰
做哪一层的检测,自己决定,而且检测不是一次有问题就认为有问题,(这叫做软状态)连续3次以后就转换为硬状态(自己设置)或者10次以内有多少次有问题,转换硬状态

注意:脚本的执行效率很差,因为脚本不是专门的编程语言,它的实现是调用系统命令,每执行一个命令就启用一个进程,所以对时间要求较严格(防止一个时钟周期过去,命令没有执行完成)
ldirectord:是为了辅助lvs对后端RS进行健康检测的,并且作为守护进程来实现周期检测

有两个站点是用来搜索rpm包的:rpmfind.net和pkgs.org
视频中的课件,接上一节课

考虑:
    (1)Director不可用,整个系统将不可用;SPoF
        解决方案:高可用
            keepalived
            heartbeat/corosync
    (2)某RS不可用时,Director依然会调度请求至此RS;
        解决方案:对各RS的健康状态做检查,失败时禁用,成功时启用;
            keepalived---可以高可用,也可以健康检测
            ldirectord---只能健康检测,而且增删操作是直接调用内核的api不需要ipvsadm命令
        检测方式:
        (a)网络层检测;
        (b)传输层检测,端口探测;
        (c)应用层检测,请求某关键资源;---不同服务检测机制不一样

        ok-->failure
        failure-->ok

ldirectord:
配置示例:
checktimeout=3
checkinterval=1
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=5
real=172.16.0.7:80 gate 2
real=172.16.0.8:80 gate 1
fallback=127.0.0.1:80 gate
service=http
scheduler=wr
checktype=negotiate
checkport=80
request="index.html"
receive="CentOS"

补充:共享存储
    NAS:Network Attached Storage
        nfs/cifs
        文件系统解耦
    SAN:Storage Area Network
        "块"接口

ldirectord需要自己安装,去rpmfind.net或者pkgs.org站点搜索
yum install -y ldirectord---有可能本机没有,需要自己下载
rpm -ql ldirectord可以查看安装这个命令后修改的文件
less 可以查看脚本中默认的配置文件位置(视频中说可以自己指定位置)
如果不指定配置文件,默认配置文件放在/etc/ha.d/conf/下
less /etc/init.d/ldirectord---读取一下脚本中的配置文件地址/etc/ha.d/ldirectord.cf
默认是没有配置文件的,但是可以从rpm -ql命令中看到有一个配置模板,复制到脚本中指定的位置然后编辑
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/---复制模板
vim ldirectord.cf---编辑配置文件

下面讲配置文件
global directives---全局配置#logfile="local0"---由rsyslog来收集日志
#emailalert="admin@x.y.z"---出现问题给谁发邮件
br/>checktimeout=3---超时时长
checkinterval=1---每隔多长时间检测一次
#fallback=127.0.0.1:80---如果rs全挂了,会由这个主机提供服务
#fallback6=[::1]:80
autoreload=yes---如果配置文件发生改变,会自动加载
logfile="/var/log/ldirectord.log"---自己指定日志地址
#logfile="local0"---由rsyslog来收集日志
#emailalert="admin@x.y.z"---出现问题给谁发邮件
#emailalertfreq=3600---如果还没修复多长时间重复发
#emailalertstatus=all---什么状态发邮件
quiescent=no---不要工作在静默模式

配置文件中一个virtual就代表一个虚拟主机
#Sample for an http virtual service
virtual=172.16.0.99:80---vip和端口
real=172.16.0.7:80 gate---rip和端口,gate表示-g dr类型
real=172.16.0.8:80 gate
fallback=127.0.0.1:80 gate
service=http---指明应用层是什么协议
scheduler=rr
#persistent=600---要不要做持久连接
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80---有可能和上边的port不一致,因为有可能专门有一台虚拟主机用来接收检测,否则会产生大量日志信息
request="test1.html"---请求哪个页面
#receive="Test Page"---期望请求页面中包含什么
#virtualhost=www.x.y.z---指定向哪个虚拟主机发请求

下边不是讲解配置文件了,而是操作步骤
在Directory:172.16.0.6上
yum install -y nginx---安装nginx服务,就是为了提供一个say sorry的服务
mkdir /data/nginx/html -pv
vim /data/nginx/html/inde.html---创建sorry主页
<h1>Maintanance Time</h1>---例行维护时间

vim /etc/nginx/nginx.conf---定义一个虚拟主机,下边的server配置没有记录完全,视频中用的是nginx提供的默认虚拟主机,只是把root改了
server {
listen 80 default_server;
servername ;
root /data/nginx/html;
}

nginx -t---检查语法错误
systemctl start nginx.service
ss -tnl---查看80端口已经启动起来了

ipvsadm -ln---查看一下规则
ipvsadm -C---把自己的ipvsadm规则全部删除
ifconfig eno16777736:0 172.16.0.99 netmask 255.255.255.255 broadcast 172.16.0.00 up---添加vip
service ldirectord start---启动ldirectord服务
ipvsadm -ln---查看有没有加进来,sorry server加进来了,其他rs检测失败了
curl
http://172.16.0.99
<h1>Maintanance Time</h1>---会看到自己定义的sorry server网页
后端服务器RS启用以后,执行curl http://172.16.0.99/test1.html是可以访问到的


上边讲的是定义单一服务,下边讲定义防火墙标记的集群服务。
配置文件:
#Sample configuration for a fwmark based service For an explanation of
#fwmark see the ipvsadm(8) man page
virtual=3
real=172.16.0.7 gate---因为是防火墙标记,所以不要加端口
real=172.16.0.8 gate
fallback=127.0.0.1:80 gate
service=http---指明应用层是什么协议
scheduler=rr
#persistent=600---要不要做持久连接
#netmask=255.255.255.255
protocol=fwm---协议是防火墙标记
checktype=negotiate
checkport=80---有可能和上边的port不一致,因为有可能专门有一台虚拟主机用来接收检测,否则会产生大量日志信息
request="test1.html"---请求哪个页面
#receive="Test Page"---期望请求页面中包含什么
#virtualhost=www.x.y.z---指定向哪个虚拟主机发请求
然后重启服务
service ldirectord restart
ipvsadm -ln---可以看到生成了新规则(防火墙标记为3的新规则)
后边讲发布,更新服务,凌晨发布,先下线一部分,用脚本发布并保留老的服务(只是一个链接,方便替换)

3-7-LVS实现企业负载均衡高级应用配置实战2

标签:auto   for   生成   主页   有一个   邮件   code   信息   keep   

原文地址:https://blog.51cto.com/13852573/2364130

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!