搜索
您的当前位置:首页正文

haproxy安装和配置超详细步骤(全部流程)

来源:好走旅游网


haproxy安装和配置步骤(全部流程)

此文档是根据网上查找的资料,并通过测试成功配置haproxy负载均衡器整理出来的,这里我将所有操作步骤一步步列出来,这样可以节省大家很多的时间,而且最主要的是非常适合刚开始接触linux系统的初学者,即使什么都不懂也可以完成配置。

部署在centos 6.5系统

软件版本haproxy-1.5.15(1.3.20也可以用过)

假设公网ip地址10.10.10.10

本人都是以管理员身份进行安装。

下载软件

wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.15.tar.gz

解压

tar zxf haproxy-1.5.15.tar.g

进入文件夹后开始安装

cd haproxy-1.5.15

make TARGET=linux26 PREFIX=/usr/local/haproxy

#上一条命令如果提示没有gcc编译器,使用下述语句进行安装

yum install ncurses-devel gcc gcc-c++ make rpm-build

make install PREFIX=/usr/local/haproxy

cd /usr/local/haproxy/

mkdir conf

mkdir logs

cd conf #配置文件放在此目录里

以上命令万一有看不懂的哈哈,请上网查一下。

#创建配置文件

vim haproxy.cfg

#如果提示没有vim ,使用下述语句进行安装

yum install vim

复制以下haproxy.cfg配置文件里的代码(可以在windows里创建好文件,用记事本打开编辑好了上传到/usr/local/haproxy/conf文件夹里)

global

log 127.0.0.1 local0

log 127.0.0.1 local3

#log 127.0.0.1 local1 notice

maxconn 60000

chroot /usr/local/haproxy

uid 501

gid 501

daemon

pidfile /usr/local/haproxy/logs/haproxy.pid

defaults

log global

option httplog

mode http

balance source

option dontlognull

option http-server-close

option forwardfor except 127.0.0.1

option redispatch

retries 3

option redispatch

maxconn 60000

timeout http-request 10s

timeout queue 1m

timeout connect 10s

timeout client 1m

timeout server 1m

timeout http-keep-alive 10s

timeout check 10s

maxconn 60000

#listen admin_stats

#bind 0.0.0.0:80

#mode http

#option httplog

#maxconn 10

stats refresh 30s

stats uri /haproxy-stats #注释:运行状态、后端服务器监控地址,上面说公网ip地址10.10.10.10那在浏览器里打开网址10.10.10.10/haproxy-stats,输入下面设置帐号密码,即可查看

stats auth 帐号:密码 #注释:这里自己设置帐号和密码,

stats hide-version

#注释:本人用到acl规则可以一台haproxy分别处理不同的域名

frontend weblb

bind *:80

acl w2017 hdr_reg(host) -i ^(Taiwan.test.com| hongkong.test.com usa.test.com)$

acl w2016_web hdr_reg(host) -i www.test.com

#注释:这w2017,www2017就是随便命名的而已别乱就行。

use_backend www2017 if w2017

use_backend www2016 if w2016

mode http

option httplog

backend www2017

|

balance source

option httpchk

#注释:下面是后端服务器地址,端口号可以不用是80,注意防火墙要放行端口号,端口号后面是权重,健康检测等等。

server web1 123.11.23.13:12345 weight 1 check inter 2000 rise 2 fall 5

server web2 21.11.23.12:80 weight 1 check inter 2000 rise 2 fall 5

backend www2016

balance source

option httpchk

server web2016 123.11.23.2:8888 weight 1 check inter 2000 rise 2 fall 5

server web20162 22.90.123.12:7777 weight 1 check inter 2000 rise 2 fall 5

然后按esc键再输入:wq保存退出,有不知道的?详细到每一个按键~~~

#启动haprox

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg &

#重启haproxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`

#停止haproxy

killall haproxy

创建haproxy启动脚本(注意此文件没有扩展名就是haproxy)

放在目录/etc/init.d/下

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=\"/usr/local/haproxy/conf/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: {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}\"

exit 2

esac

按esc键再输入:wq保存退出

$0

chmod +x /etc/init.d/haproxy #给予执行权限

chkconfig --add haproxy #添加开机启动

正确配置日志

编辑/etc/haproxy/haproxy.conf

global

log 127.0.0.1 local3 #如果我的代码里已经有了就不用

编辑系统日志配置

vim /etc/rsyslog.conf

默认有下面的设置,会读取 /etc/rsyslog.d/*.conf目录下的配置文件

$IncludeConfig /etc/rsyslog.d/*.conf

按esc键再输入:wq保存退出

为haproxy创建一个独立的配置文件

vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local3.* /var/log/haproxy.log

按esc键再输入:wq保存退出

#如果不加下面的的配置则除了在/var/log/haproxy.log中写入日志外,也会写入message文件&~

配置rsyslog的主配置文件,开启远程日志

vim /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS=”-c 2 -r -m 0″

按esc键再输入:wq保存退出

#-c 2 使用兼容模式,默认是 -c 5

#-r 开启远程日志

#-m 0 标记时间戳。单位是分钟,为0时,表示禁用该功能

重启haproxy和rsyslog服务

/etc/init.d/rsyslog restart

下图是监控截图页面。

任何人进入haproxy.cfg文件只要把域名改一下,再把后端的服务器地址和端口改一下,就可以使用了,还有不明白的请留言吧!

如有需要还会给大家带来关于ssl证书的配置方法。

还有高可用主备haproxy配置也可以实现(这里我需要3个IP,一个IP做VIP用来实现主haproxy云服务器宕机无法使用时漂移到另一台备用haproxy云主机上)。

我也刚接触,自己上网查资料整理的,写的都是小白操作方法,欢迎高手多多指点,代码有什么不对的,欢迎更正!如有侵权,请告诉我删除!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top