CentOS7.6 HAproxy-7层负载均衡集群——实施方案

目录

1、前期环境准备

1.准备4台主机

[1. 设置主机名](#1. 设置主机名)

[2. 设置IP地址然后重启网卡](#2. 设置IP地址然后重启网卡)

[3. 关闭防火墙和selinux](#3. 关闭防火墙和selinux)

[4. 全部的服务器完成时间统一](#4. 全部的服务器完成时间统一)

二、配置haproxy(192.168.200.11)服务器

[1. 安装haproxy](#1. 安装haproxy)

[2. haproxy 配置中分成五部分内容](#2. haproxy 配置中分成五部分内容)

[3. 配置HAproxy(192.168.200.11)](#3. 配置HAproxy(192.168.200.11))

配置文件内容注释(详细内容还请自行查询)

[4. 设置HTTP服务器IP地址映射主机名](#4. 设置HTTP服务器IP地址映射主机名)

三、配置HTTP服务器

[1. 两台服务器安装httpd服务并启动(192.168.200.23web1 192.168.200.34web2)](#1. 两台服务器安装httpd服务并启动(192.168.200.23web1 192.168.200.34web2))

[2. 设置默认主页](#2. 设置默认主页)

四、测试结果

[1. 客户端(192.168.200.10)安装elinks( 是一个基于文本的网页浏览器)](#1. 客户端(192.168.200.10)安装elinks( 是一个基于文本的网页浏览器))

[2. 使用elinks访问haproxy服务器](#2. 使用elinks访问haproxy服务器)


1、前期环境准备

1.准备4台主机

|----------------|---------|------------|----|
| IP地址 | 主机名 | 角色 | 内存 |
| 192.168.200.10 | clinent | 客户端 | 2G |
| 192.168.200.11 | server | HAproxy服务器 | 2G |
| 192.168.200.23 | web1 | web服务1 | 2G |
| 192.168.200.34 | web2 | web服务2 | 2G |

1. 设置主机名
bash 复制代码
hostnamectl set-hostname +主机名
 
su
2. 设置IP地址然后重启网卡
bash 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens33
 
systemctl restart network
3. 关闭防火墙和selinux
bash 复制代码
systemctl stop firewalld
systemctl disable firewalld
 
 
setenforce 0
 
 
vim /etc/selinux/config 
 
注释加'#' SELINUX=enforcing
 
添加      SELINUX=disabled
4. 全部的服务器完成时间统一
bash 复制代码
ntpdate cn.ntp.org.cn

二、配置HAproxy(192.168.200.11)服务器

1. 安装HAproxy
bash 复制代码
yum install haproxy -y
2. haproxy 配置中分成五部分内容

global: 设置全局配置参数,属于进程的配置,通常是和操作系统相关。

defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件。

frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的。backend;

backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器。

Listen :frontend和backend的组合体。

  1. 配置HAproxy(192.168.200.11)
bash 复制代码
vim /etc/haproxy/haproxy.cfg

删除文件里所有的内容
添加新的配置内容
global
        log 127.0.0.1 local3 info
        maxconn 4096
        uid nobody
#       uid 99
        gid nobody
#       gid 99
        daemon
        nbproc 1
        pidfile /run/haproxy.pid
defaults
        log                global
        mode       http
        maxconn 2048
        retries         3
        option  redispatch
        contimeout      5000
        clitimeout          50000
        srvtimeout          50000
#timeout connect 5000
#timeout client 50000
#timeout server 50000
    option abortonclose

    stats uri /admin?stats
    stats realm Private lands
    stats auth admin:password
    stats hide-version

frontend http-in
        bind 0.0.0.0:80
        mode http
        log global
        option httplog
        option httpclose
     acl html url_reg  -i  \.html$
     use_backend html-server if  html
     default_backend html-server

backend html-server
        mode http
        balance roundrobin
        option httpchk GET /index.html
        cookie SERVERID insert indirect nocache
        server html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
        server html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5


重启haproxy服务
systemctl start haproxy.service
配置文件内容注释(详细内容还请自行查询)

全局设置(global)

global

日志配置,发送到本地的 syslog 服务

log 127.0.0.1 local3 info

最大连接数

maxconn 4096

运行用户和用户组

uid nobody

gid nobody

守护进程模式运行

daemon

进程数

nbproc 1

PID 文件位置

pidfile /run/haproxy.pid

默认设置(defaults)

defaults

使用全局日志配置

log global

工作模式为 HTTP

mode http

前端最大连接数

maxconn 2048

请求重试次数

retries 3

启用请求重新分发

option redispatch

连接超时时间(毫秒)

contimeout 5000

客户端超时时间(毫秒)

clitimeout 50000

服务器超时时间(毫秒)

srvtimeout 50000

断开连接选项

option abortonclose

统计页面配置

stats uri /admin?stats

stats realm Private lands

stats auth admin:password

stats hide-version

前端配置(frontend http-in)

frontend http-in

监听地址和端口

bind 0.0.0.0:80

工作模式

mode http

日志配置

log global

启用 HTTP 日志

option httplog

启用 HTTP 连接关闭选项

option httpclose

ACL 匹配 .html 结尾的请求

acl html url_reg -i \.html$

使用后端条件

use_backend html-server if html

默认后端

default_backend html-server

后端配置(backend html-server)

backend html-server

工作模式

mode http

负载均衡算法

balance roundrobin

HTTP 健康检查

option httpchk GET /index.html

Cookie 会话保持

cookie SERVERID insert indirect nocache

后端服务器定义:服务器ID,避免rr算法将客户机请求转发给其他服务器 ,对后端服务器的健康状况检查间隔为2000毫秒,连续2次健康检查成功,则认为是有效的,连续5次健康检查失败,则认为服务器宕机

server html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5

server html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5

4. 设置HTTP服务器IP地址映射主机名
bash 复制代码
vim /etc/hosts

原内容不动添加
192.168.200.23 web1
192.168.200.34 web2

三、配置web服务器

1. 两台服务器安装httpd服务并启动(192.168.200.23web1 192.168.200.34web2)
bash 复制代码
 yum install httpd -y

systemctl start httpd

设置开机自启动
systemctl enable httpd
2. 设置默认主页
bash 复制代码
web1

echo web1 > /var/www/html/index.html

web2

echo web2 > /var/www/html/index.html

四、测试结果

1..查看HAproxy状态
bash 复制代码
http://192.168.200.11/admin?stats
2. 客户端(192.168.200.10)安装elinks(是一个基于文本的网页浏览器)
bash 复制代码
yum install -y elinks
3. 使用elinks访问HAproxy服务器
bash 复制代码
elinks --dump http://192.168.200.11
相关推荐
九河云1 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
幺零九零零2 小时前
【计算机网络】TCP协议面试常考(一)
服务器·tcp/ip·计算机网络
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
一坨阿亮5 小时前
Linux 使用中的问题
linux·运维
幺零九零零7 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
wclass-zhengge7 小时前
Docker篇(Docker Compose)
运维·docker·容器
李启柱7 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
free8 小时前
netstat中sendq/recvq用于排查发送端发送数据的问题
服务器
力姆泰克8 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节