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
相关推荐
GodGump7 分钟前
dbgpt7.0 docker部署
运维·docker·容器
Wnq100724 小时前
智能巡检机器人在化工企业的应用研究
运维·计算机视觉·机器人·智能硬件·deepseek
tf的测试笔记7 小时前
测试团队UI自动化实施方案
运维·自动化
TDD_06287 小时前
【运维】Centos硬盘满导致开机时处于加载状态无法开机解决办法
linux·运维·经验分享·centos
头孢头孢7 小时前
k8s常用总结
运维·后端·k8s
遇码7 小时前
单机快速部署开源、免费的分布式任务调度系统——DolphinScheduler
大数据·运维·分布式·开源·定时任务·dolphin·scheduler
爱编程的王小美8 小时前
Docker基础详解
运维·docker·容器
学习至死qaq8 小时前
windows字体在linux访问异常
linux·运维·服务器
IEVEl9 小时前
Centos7 安装 TDengine
运维·centos·时序数据库·tdengine
在野靡生.9 小时前
Ansible(4)—— Playbook
linux·运维·ansible