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

[经验分享] HAproxy基础(2)-基本配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-12 10:04:22 | 显示全部楼层 |阅读模式
六.基础配置阶段
1.安装haproxy
1
2
3
4
5
[iyunv@hap ~]# yum install -y haproxy
[iyunv@hap ~]# cd /etc/haproxy/
[iyunv@hap haproxy]# cp haproxy.cfg{,.bak}
[iyunv@hap haproxy]# ls
haproxy.cfg haproxy.cfg.bak




2.开启haproxy的系统日志
1
2
3
4
[iyunv@hap haproxy]# vim/etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
local2.*                                               /var/log/haproxy.log




重新启动rsyslog服务:
1
2
3
[iyunv@hap haproxy]# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]





3.编辑配置文件,添加后端web服务器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
[iyunv@hap haproxy]# vim/etc/haproxy/haproxy.cfg
global
    #to have these messages end up in /var/log/haproxy.log you will
    #need to:
    #
    #1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option tothe SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    #2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like thefollowing can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
   log         127.0.0.1 local2

   chroot      /var/lib/haproxy
   pidfile     /var/run/haproxy.pid
   maxconn     4000
   user        haproxy
   group       haproxy
   daemon

    #turn on stats unix socket
   stats socket /var/lib/haproxy/stats

defaults
   mode                    http
   log                     global
   option                  httplog
   option                 dontlognull
   option http-server-close
   option forwardfor       except127.0.0.0/8
   option                  redispatch
   retries                 3
   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                 3000

frontend main *:80
   default_backend            websrvs

backend websrvs
   balance     roundrobin
   server  node7 172.16.31.30:80check
   server  node8 172.16.31.31:80check




4.启动服务:

1
2
[iyunv@hap haproxy]# service haproxy start
Starting haproxy:                                          [ OK  ]




5.访问测试:
是基于轮询调度算法的。
wKioL1Sybm-j8kFrAAAqmd4yeR8582.jpg


七.常用配置解析:

1.cookie会话保持
1
2
3
4
5
backend websrvs
   balance     roundrobin
   cookie  SRV insert indirectnocache
   server  node7 172.16.31.30:80cookie node7 check rise 1 fall 2
   server  node8 172.16.31.31:80cookie node8 check




重启haproxy服务:
1
2
3
[iyunv@hap haproxy]# service haproxy restart
Stopping haproxy:                                         [  OK  ]
Starting haproxy:                                         [  OK  ]




访问测试:
记录了cookie,实现了会话保持:
wKioL1SybrDBzgpSAALqT_mw9rY247.jpg

2.启用反向服务器状态信息页面
1
2
3
4
5
backend websrvs
   balance     roundrobin
   server  node7 172.16.31.30:80cookie node7 check rise 1 fall 2
   server  node8 172.16.31.31:80cookie node8 check
   stats enable




重启haproxy服务,访问测试:
wKioL1SybtaCMB9SAAXV0BHCpqo780.jpg

状态页安全性配置:
1
2
3
4
5
6
7
8
9
10
backend websrvs
    balance    roundrobin
   server  node7 172.16.31.30:80cookie node7 check rise 1 fall 2
   server  node8 172.16.31.31:80cookie node8 check
   stats enable
   stats uri /haproxyadm?stats
   stats hide-version
   stats realm HAProxy Status
   stats auth admin:admin
   stats admin if TRUE




重启haproxy服务,访问测试:
wKiom1Sybjfzht7EAAKVmz94Etk213.jpg wKioL1SybxCx5XDtAAXRFTe7irM609.jpg
3.让后端web服务器记录真实的访问客户端IP地址
更改后端web服务器的日志格式:
1
2
3
4
[iyunv@node7 ~]# vim/etc/httpd/conf/httpd.conf
#LogFormat "%h %l %u %t\"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined
#将如上日志格式更改为下面的格式即可
LogFormat "%{X-Forwarded-For}i %l %u%t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined




重新启动web服务器后进行测试访问后查看日志:
1
2
3
4
5
6
[iyunv@node7 ~]# tail/var/log/httpd/access_log
#以前访问的记录地址都是haproxy服务器的地址
172.16.31.32 - - [11/Jan/2015:10:03:45+0800] "GET / HTTP/1.1" 200 16 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/37.0.2062.124 Safari/537.36"
#更改记录日志格式后记录的是真实的客户端IP地址
172.16.31.254 - - [11/Jan/2015:11:15:50+0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/37.0.2062.124 Safari/537.36"
172.16.31.254 - - [11/Jan/2015:11:15:56+0800] "GET / HTTP/1.1" 200 16 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/37.0.2062.124 Safari/537.36"




4.通过ACL实现网站访问的动静分离
我通过ACL将动态资源的访问到节点7,而静态资源的访问定位到节点8
先在节点7和节点8安装php,实现php动态资源和httpd服务器的结合:
1
# yum install -y php



创建phpinfo测试页:
1
2
3
4
#cat /var/www/html/index.php
       phpinfo();
?>



节点7和节点8都存在动态的php测试页:
wKiom1SybuvRuVjZAAK2aZvkM6c982.jpg
wKioL1Syb7_iZyjUAAKwL5p4OLg063.jpg
我们配置haproxy实现动静分离:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[iyunv@hap haproxy]# cat /etc/haproxy/haproxy.cfg
global
    # to have these messages end up in/var/log/haproxy.log you will
    #need to:
    #
    #1) configure syslog to accept network log events.  This is done
   #    by adding the '-r' option tothe SYSLOGD_OPTIONS in
   #    /etc/sysconfig/syslog
    #
    #2) configure local2 events to go to the /var/log/haproxy.log
   #   file. A line like thefollowing can be added to
   #   /etc/sysconfig/syslog
    #
   #    local2.*                       /var/log/haproxy.log
    #
   log         127.0.0.1 local2

   chroot      /var/lib/haproxy
   pidfile     /var/run/haproxy.pid
   maxconn     4000
   user        haproxy
   group       haproxy
   daemon

    #turn on stats unix socket
   stats socket /var/lib/haproxy/stats

defaults
   mode                    http
   log                     global
   option                  httplog
   option                 dontlognull
   option http-server-close
   option forwardfor       except127.0.0.0/8
   option                  redispatch
   retries                 3
   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                 3000

listen stats
   bind :1080
   mode http
   stats enable
   stats uri /haproxy?stats
   stats realm HAProxy Status
   stats auth admin:admin
   stats admin if TRUE

frontend http-in
   bind *:80
   mode http
   log global
   option httpclose
   option logasap
   option dontlognull
   capture request header Host len 20
   capture request header Referer len 60
   acl url_static path_beg -i /static /images /javascript /stylesheets
   acl url_static path_end -i  .html.jpg .jpeg .gif .png .css .js
   acl url_dynamic path_end -i .php .jsp
   use_backend static_servers if  url_static
   use_backend dynamic_servers if url_dynamic
   default_backend           dynamic_servers

backend static_servers
    balance    roundrobin
   server  node7 172.16.31.30:80check maxconn 1000

backend dynamic_servers
   balance     roundrobin
   cookie srv insert nocache
   server node8 172.16.31.31:80 check maxconn 1000 cookie node8




重新启动haproxy服务进行访问测试:
我们访问静态的html页面,代理服务器就定位到节点7上进行访问;
wKiom1SybxiwJeNoAANJwtDBJ_M018.jpg
我们访问动态页面,代理服务器就将请求定位到了节点8上,并记录了session会话状态;
wKioL1Syb_HgERCnAAMn0-9xTxg158.jpg

至此,一些基础的haproxy实用配置就介绍到这里。


运维网声明 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-40584-1-1.html 上篇帖子: HAproxy基础(1)-理论篇 下篇帖子: Haproxy和keepalived高可用实验
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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