设为首页 收藏本站
查看: 1543|回复: 0

[经验分享] HAProxy安装与配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-7 09:09:25 | 显示全部楼层 |阅读模式
一、环境说明:
实验环境
192.168.133.136 proxy
192.168.133.137 web1
192.168.133.130 web2

官方地址:http://haproxy.1wt.eu/
下载地址:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz

二、软件安装
tar xzvf haproxy-1.4.24.tar.gz
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

三、创建配置文件

useradd haproxy -u 500

vim /etc/haproxy.cfg

global
        log 127.0.0.1 local3
        maxconn 20480
        chroot /usr/local/haproxy
        uid 500 #1004为haproxy 用户的uid ,haproxy用户需要自己手动创建
        gid 500
        daemon
        quiet
        nbproc 1
        pidfile /var/run/haproxy.pid
defaults
        log global
        mode http
        maxconn 20480
        option httplog
        option httpclose
        option forwardfor
        option dontlognull
        option redispatch
        retries 3
        balance roundrobin
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000
listen web_poll 192.168.133.136:80
        mode http
        option httplog
        option dontlognull
        option logasap
        option forwardfor
        option httpclose
# option httpchk GET /index.html
server web1 192.168.133.137:80 cookie 1 check inter 2000 rise 3 fall 3
server web2 192.168.133.130:80 cookie 1 check inter 2000 rise 3 fall 3
listen status 192.168.133.136:8080
        stats enable
        stats uri /stats
        stats auth admin:123456
        stats realm (Haproxy\ statistic)

四、添加日志

vim /etc/rsyslog.conf
添加:
$ModLoad imudp
$UDPServerRun 514
local3.*                     /var/log/haproxy.log
local0.*                     /var/log/haproxy.log

vim /etc/sysconfig/rsyslog
修改:
SYSLOGD_OPTIONS="-c 2 -r -m 0"

/etc/init.d/rsyslog restart

五、创建haproxy启动脚本

vim /etc/init.d/haproxy

#!/bin/bash
#
# haproxy
#
# chkconfig: 35 85 15
# description: HAProxy is a free, very fast and reliable solution \
# offering high availability, load balancing, and \
# proxying for TCP and HTTP-based applications
# processname: haproxy
# config: /etc/haproxy.cfg
# pidfile: /var/run/haproxy.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

config="/etc/haproxy.cfg"
exec="/usr/local/haproxy/sbin/haproxy"
prog=$(basename $exec)

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/haproxy

check() {
    $exec -c -V -f $config
}

start() {
    $exec -c -q -f $config
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi

    echo -n $"Starting $prog: "
    # start it up here, usually something like "daemon $exec"
    daemon $exec -D -f $config -p /var/run/$prog.pid
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    # stop it here, often "killproc $prog"
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    $exec -c -q -f $config
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    stop
    start
}

reload() {
    $exec -c -q -f $config
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    echo -n $"Reloading $prog: "
    $exec -D -f $config -p /var/run/$prog.pid -sf $(cat /var/run/$prog.pid)
    retval=$?
    echo
    return $retval
}

force_reload() {
    restart
}

fdr_status() {
    status $prog
}

case "$1" in
    start|stop|restart|reload)
        $1
        ;;
    force-reload)
        force_reload
        ;;
    checkconfig)
        check
        ;;
    status)
        fdr_status
        ;;
    condrestart|try-restart)
      [ ! -f $lockfile ] || restart
    ;;
    *)
        echo $"Usage: $0 {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}"
        exit 2
esac

chmod +x /etc/init.d/haproxy

六、启动

报错:
Starting haproxy: [ALERT] 177/105503 (18602) : Starting proxy cacti: cannot bind socket

产生这个错误可能有两个原因:
1)没有加入内核参数 (net.ipv4.ip_nonlocal_bind=1)
2)端口冲突

vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1  (最后一行添加)

sysctl -p(重新加载)


查看状态页面
http://192.168.133.136:8080/stats
wKiom1cFFCCTveqVAAAlow5rFg4889.jpg

wKiom1cFFEKAvxAWAACdFom6nw0975.jpg
测试:
打开http:192.168.133.136
可以轮询到两个web服务器上。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-200738-1-1.html 上篇帖子: 短信接口被攻击处理--Haproxy的防盗链 下篇帖子: Haproxy+Keepalived实现网站双主高可用-理论篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表