linux haproxy 脚本,haproxy 高可用(并使用shell写启动脚本)

本次使用haproxy仅测试web端的高可用以及负载均衡,存在的问题是haproxy是单点,所以还需要借助keepalived对haproxy高可用,下次说明。

服务器:

*.*.*.*:haproxy

两台   http

需要掌握的是:

1.高可用和负载均衡;

2.系统日志rsyslog;

3.动静分离

一:haproxy简介:

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy的优点:

1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);

2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;

3、支持url检测后端的服务器;

4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;

5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;

6、HAProxy的算法较多,达到8种;

安装:

#解压

#tar -zxvf haproxy-1.6.9.tar.gz

#cd haproxy-1.6.9

#安装

#make TARGET=linux3100 ARCH=x86_64 PREFIX=/root/haproxy  #编译

#make install PREFIX=/root/haproxy

#参数说明

TARGET=linux3100 #内核版本,

ARCH=x86_64 #系统位数

PREFIX=/root/haprpxy #/root/haprpxy为haprpxy安装路径

#touch  /root/haproxy/conf/haproxy.cfg(此配置文件需要自己手动创建)

补充:

在Unix类操作系统上,rsyslog广泛应用于系统日志。rsyslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。

先说haproxy的系统日志设置; (注意这是centos7上面的,centos6上的文件配置不在这里)

2. 开启rsyslog记录haproxy日志功能

编辑“/etc/rsyslog.conf”打开如下配置项:# Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

添加如下内容:# Save haproxy log

local0.*                       /var/log/haproxy.log

3. 修改“/etc/sysconfig/rsyslog”文件,内容如下# Options for rsyslogd

# Syslogd options are deprecated since rsyslog v3.

# If you want to use them, switch to compatibility mode 2 by "-c 2"# See rsyslogd(8) for more details

SYSLOGD_OPTIONS="-r -m 0 "

相关解释说明:

-r:打开接受外来日志消息的功能,其监控514 UDP端口;

-x:关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;

-m:修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息;

-h:默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有

接受到的信息都可根据syslog.conf中定义的@主机转发过去

4. 配置haproxy

编辑haproxy配置文件,在全局变量中配置,也就是第二行;log 127.0.0.1 local0###重启服务

service  restart rsyslog

###查看日志记录

tailf /var/log/haproxy.log

下来手写haproxy启动脚本:#!/bin/bash

#set -e

export LANG='zh_CN.UTF-8'

source /etc/init.d/functions

#PATH=$PATH:/root/haproxy/sbin

dir=/root/haproxy

name=haproxy

DAEMON=$dir/sbin/$name

CONFIG=$dir/conf/$name.cfg

#PIDFILE=$dir/conf/$name.pid

#aa=`ps -ef | grep haproxy | grep -v grep | awk '{print $2}'`

test -x $DAEMON || exit 0

start() {

$DAEMON -f $CONFIG >/dev/null

a=$?

if [ $a -eq 0 ]; then

action "haproxy服务启动正常"   /bin/true

fi

}

stop() {

killall haproxy

b=$?

if [ $b -eq 0 ]; then

action "haproxy服务关闭正常"   /bin/true

fi

}

restart() {

[ ! -n $PIDFILE ] && start || stop

start

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

*)

echo "正确的参数,start|stop|restart"

esac

下来时创建haproxy的配置文件:

vim /root/haproxy/conf/haproxy.cfgglobal

log 127.0.0.1 local0

maxconn 65536

chroot /root/haproxy

pidfile /root/haproxy/conf/haproxy.pid

#log

#user haproxy

#group haproxy

daemon

defaults

mode  http    #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK

log global

option dontlognull  #不记录健康检查日志信息

option httpclose  #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现

retries 3    #三次连接失败就认为是服务器不可用,也可以通过后面设置

maxconn 65536

timeout connect 70000

timeout client 70000

timeout server 70000

listen stats     #监控

bind 0.0.0.0:1080           # 端口

stats uri /admin-status     # 监控的uri

stats auth admin:admin    #用户用:密码

mode http

option httplog

frontend main

bind *:80

acl web hdr(host) -i www.abc.com  #acl后面是规则名称,-i为忽略大小写,后面跟的是要访问的域名,如果访问www.abc.com这个域名,就触发web规则,。

acl img hdr(host) -i img.abc.com

use_backend webserver if web #如果上面定义的web规则被触发,即访问www.abc.com,就将请求分发到webserver这个作用域

use_backend imgserver if img

#   default_backend dynamic  #不满足则响应backend的默认页面

backend webserver

mode http

balance roundrobin

server web1  192.168.116.135:80 check inter 2000 rise 2  fall 3

server web2  192.168.116.136:80 check inter 2000 rise 2 fall 3

#check inter 2000 是检测心跳频率 fall 3是3次失败认为服务器不可用,weight代表权重

backend imgserver

mode http

#option httpchk /index.php

balance roundrobin

server img01 192.168.116.136:80 check inter 2000 fall 3

server img02 192.168.116.136:80 check inter 2000 fall 3

#backend dynamic

#  balance roundrobin

#  server test1 10.0.0.152:80 check maxconn 2000

#  server test2 10.0.0.155:80 check maxconn 2000

执行结果如下:

76569184b5d01510941ac1289f4f7f21.png

当关闭135或者137上面的httpd服务后,就会请求另一个httpd服务。

将服务加入到系统中:

编辑/etc/init.d/haproxy添加:

#chkconfig 2345  20 80

#service haproxy

然后在外面执行命令:

#chkconfig  --add  haproxy

#chkconfig  --list   haproxy

下来就可以使用命令执行启动和关闭了:

719787c48c4e067e756908f791b28137.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值