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云主机上)。
我也刚接触,自己上网查资料整理的,写的都是小白操作方法,欢迎高手多多指点,代码有什么不对的,欢迎更正!如有侵权,请告诉我删除!
因篇幅问题不能全部显示,请点此查看更多更全内容