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
相关推荐
人类群星闪耀时7 分钟前
大模型技术优化负载均衡:AI驱动的智能化运维
运维·人工智能·负载均衡
新时代农民工--小明39 分钟前
前端自动化部署更新,自动化打包部署
运维·前端·自动化
一个不秃头的 程序员1 小时前
服务器上加入SFTP------(小白篇 1)
运维·服务器
fnd_LN1 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器
MorleyOlsen1 小时前
【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
运维·服务器·深度学习
周周的奇妙编程1 小时前
基于鲲鹏服务器的打砖块小游戏部署
运维·服务器
大熊程序猿2 小时前
airflow docker 安装
运维·docker·容器
从后端到QT2 小时前
boost asio 异步服务器
服务器·网络·tcp/ip
会飞的土拨鼠呀2 小时前
chart文件结构
运维·云原生·kubernetes
人类群星闪耀时2 小时前
基于AI的网络流量分析:构建智能化运维体系
运维·人工智能