haproxy 实战之haproxy实现httpd负载均衡

haproxy 实战之haproxy实现httpd负载均衡

实验目的
haproxy + httpd实现负载均衡

1.准备机器,做好时间同步,域名主机名解析

192.168.42.151 [node2 haproxy]
192.168.42.152 [node3 httpd]
192.168.42.153 [node4 httpd]

2.node3,node4上安装httpd

node3上操作:
(1)安装httpd

yum install httpd -y

(2)创建应用目录

mkdir -p /application/test
chown -R apache.apache /application/test

(3)添加测试页

echo "this is test1 page." > /application/test/index.html

(4)定义discuz虚拟主机

vim /etc/httpd/conf.d/test.conf

<VirtualHost *:80>
        ServerName www.test.com
        DocumentRoot "/application/test"
        <Directory "/application/test">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        CustomLog "logs/www.test.com_access_log" combined
</VirtualHost>

(5)添加hosts解析

vim /etc/hosts
192.168.42.152  www.test.com

(6)检查httpd语法并启动httpd

httpd -t
systemctl start httpd

(7)测试一把

[root@node3 ~]# curl www.test.com
this is test1 page.

node4 操作同上:
需要改下测试页的内容,和hosts解析的IP地址
(1)修改测试页

echo "this is test2 page." > /application/test/index.html

(2)添加hosts解析

vim /etc/hosts
192.168.42.153  www.test.com

(3)测试一把

[root@node4 ~]# curl www.test.com
this is test2 page.

3.安装haproxy
node1:
(1).haproxy的安装

yum install haproxy -y

(2).配置haproxy
配置文件如下:

[root@node2 haproxy]# cat haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
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 to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following 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

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.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

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  web
    bind *:80
    default_backend             websrvs

backend websrvs
    balance     roundrobin
    server      web1 192.168.42.152:80 check
    server      web2 192.168.42.153:80 check

(3)启动haproxy

systemctl start haproxy
[root@node2 haproxy]# ss -tnl
State      Recv-Q Send-Q      Local Address:Port     Peer Address:Port              
LISTEN     0      3000                    *:80                  *:*                  
LISTEN     0      128                     *:22                  *:*                  
LISTEN     0      100             127.0.0.1:25                  *:*                  
LISTEN     0      128                    :::22                 :::*                  
LISTEN     0      100                   ::1:25                 :::*

(4)添加域名解析

vim /etc/hosts
192.168.42.151 www.test.com

(5).测试一把

[root@node2 haproxy]# for i in {1..10};do curl www.test.com ; done;
this is test1 page.
this is test2 page.
this is test1 page.
this is test2 page.
this is test1 page.
this is test2 page.
this is test1 page.
this is test2 page.
this is test1 page.
this is test2 page.

至此我们就能看到我们访问的能够负载均衡了

原创文章,作者:srayban,如若转载,请注明出处:http://www.178linux.com/78827

(0)
sraybansrayban
上一篇 2017-06-29
下一篇 2017-06-29

相关推荐

  • httpd功能配置之CGI程序

        httpd服务中有一个cgi-bin目录,此目录专门用于存放cgi脚本。CGI即网关通用接口,用于实现动态网页。下面简单编写一个CGI脚本来进行测试此功能:     1、在/var/www/cgi-bin/目录下创建一个脚本     2、重启服务     3、验证 &nb…

    Linux干货 2016-03-11
  • LVM2

    1、逻辑卷     逻辑卷为何物:逻辑,是从人的角度出发的,合乎人类的思维的,所以逻辑卷相对于其它磁盘分区高级一些。主要作用就是可以进行动态扩展缩减,不像其它分区大小固定了要想变动就必须重新格式化。 在实际工作环境中,LVM更适用于现实复杂多变的环境。 现在使用的是LVM2,Logical Volume Manager,Version 2…

    Linux干货 2016-08-30
  • 互联网的实现

    互联网的实现 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡就收到了,两者实际上根本就不知道对方的物理位置,这难道不是一件很神奇的事情吗? 互联网的**核心**是一些列协议,总称为“互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网做出了详细的规定。 互联网协议入门 概述 五层模型…

    Linux干货 2017-05-05
  • 下载编译安装httpd 2.4最新版本

    关于这个问题分三步讲:1.下载最新版本;2.编译;3.安装 一:下载httpd 2.4的最新版本:(这里以Centos 7为例,Centos 6里用的是2.2版本的) 下载的话如何找下载路径—–>下载后是存在windows下,如何将其移进linux中  1.下载路径: 当然我们现在只要是碰到不会或者不知道的东西,通常会…

    2017-08-26
  • 马哥教育网络班N22期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bashnolo_user=0login_user=0while read user;do    bash_type=$(e…

    Linux干货 2016-10-21
  • web service之http协议

    一.概述 1.web应用的核心是http协议(HyperText Transfer Protocol),http协议的由两部分组成,客户端程序和服务器端程序,通过交换http报文进行会话。web页面则是由对象(也叫资源)组成的,对象直白的说就是一个个的文件,而这些对象可以通过URL引用,URL由两部分组成,存放对象的主机名和对象的文件路径,而这些对象都存储在…

    Linux干货 2016-11-03