IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> HAProxy实现负载均衡及高可用集群(corosync+pacemaker) -> 正文阅读

[系统运维]HAProxy实现负载均衡及高可用集群(corosync+pacemaker)


haproxy和nginx在功能上比较相似,但是又各有不同,接下来我先跟大家阐述这两个方法的区别:

nginx是master-workers多进程,每个进程单线程,多核CPU能充分利用;
haproxy是多线程,单进程就能实现超高性能,虽然haproxy也能多进程,但是网上资料多认为开了多进程也不能提升性能,不建议多进程跑。

即使做反向代理nginx性能略低于haproxy。

各自特点如下:

nginx:

使用花括号,层级化的配置文件结构
除了自带的map、if语句可以实现简单逻辑,原生支持js/perl脚本,非官方支持lua
除了做负载均衡还可以做静态web服务器,缓存服务器(Haproxy不行)
模块化,按需编译,因为模块化,所以可选很多第三方扩展模块
开源版本只有基础功能,更多的功能要折腾第三方模块,或者花钱买官方扩展版的nginx plus

haproxy:

定义和引用,命令式的配置结构
支持acl,但不支持其他脚本语言(评论里有人说现在可以支持了)
做负载均衡性能比nginx好
有一个状态统计页面官方支持会话保持、健康检查等(nginx开源版不带)
基础功能覆盖要比nginx开源版好,但是不易扩展,缺乏第三方资源。

Nginx的优点:
1、优点工作在OSI第7层,可以针对http应用做一些分流的策略
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能
3、Nginx安装和配置比较简单
4、可以承担高的负载压力且稳定
5、Nginx可以通过端口检测到服务器内部的故障
6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器
Nginx的缺点:
1、Nginx不支持url来检测。
2、Nginx仅能支持http和Email,这个它的弱势。
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。
HAProxy的优点:
1、HAProxy是支持虚拟主机的
2、支持url检测后端的服务器
3、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
4、HAProxy可以对Mysql读进行负载均衡,节点检测
5、HAProxy的算法较多

一. HAProxy的基本配置

在这里插入图片描述
下载好之后就有了haproxy用户,在以下文件添加该用户
在这里插入图片描述
在这里插入图片描述

更改haproxy的配置文件:
在这里插入图片描述

添加status,以方便一会查看
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

更改两个server的ip以及其httpd服务端口:
在这里插入图片描述

开启haproxy服务:
查看日志,以确定haproxy是否开启成功:
在这里插入图片描述
在这里插入图片描述

在网页上查看服务状态:

在这里插入图片描述

红色标注就是服务未开启

开启httpd服务之后,先是黄色填充:
在这里插入图片描述

在这里插入图片描述

等待一下就变成绿色:
在这里插入图片描述

查看负载均衡的结果:

在这里插入图片描述
在这里插入图片描述

二. haproxy的优化策略

Haproxy的8种负载均衡算法:

roundrobin,表示简单的轮询
static-rr,表示根据权重,
leastconn,表示最少连接者先处理,
source,表示根据请求源IP,
uri,表示根据请求的URI;
url_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name
hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

测试:balance source
<一>

先更改配置文件:
在这里插入图片描述

开启acl权限以及静态访问:
在这里插入图片描述

将server服务器只保留一个:
在这里插入图片描述

访问haproxy服务页面:

在这里插入图片描述

在静态访问的ip里上传一张图片以便观察结果:

在这里插入图片描述

当我们访问172.25.2.5的images/vim.jpg时,虽然我们并没有配置server5上的httpd服务,但是会默认访问172.25.2.7上的文件:
在这里插入图片描述

<二>

更改配置文件:
在这里插入图片描述

在这里插入图片描述

balance roundrobin :haproxy把请求轮流的转发到每一个服务器上,依据每台服务器的权重,此权重会动态调整。最常见的默认配置。

balance source :haproxy按照客户端的IP地址进行负载均衡策略,即同一IP地址的所有请求都发送到同一服务器时,需要配置此选项。
在这里插入图片描述

停掉server6的httpd服务:
在这里插入图片描述

此时curl ip ,就只能定位到server7:
在这里插入图片描述

重新开启server6,因为同一IP地址的所有请求都发送到同一服务器,所以一旦检测到服务开启就会继续把之前的ip访问定位到之前的服务器:
在这里插入图片描述

在这里插入图片描述

更改权重:

在这里插入图片描述

在这里插入图片描述

这时curl就会发现,server6出现的次数比server7多:
在这里插入图片描述

将server5当作backup:

在这里插入图片描述
在这里插入图片描述

因为80端口开启服务已被占用,为了不冲突,更改端口为8080:

在这里插入图片描述
在这里插入图片描述

查看一下端口:
在这里插入图片描述

在这里插入图片描述

访问ip,最下栏显示已经配置成功:
在这里插入图片描述

查看实验结果:

停掉server6,7的服务:
在这里插入图片描述

在这里插入图片描述

curl ip,显示server5:
在这里插入图片描述
配置成功!!!

配置访问密码:
在这里插入图片描述

在这里插入图片描述

需要密码用户访问:
在这里插入图片描述

在这里插入图片描述

三. 读写分离

为了便于查找日志,排错,需要读写分离:

设置黑名单:
在这里插入图片描述

把真机ip配置到黑名单:
在这里插入图片描述

真机无法访问:
在这里插入图片描述

但是server6可以:

在这里插入图片描述

黑名单重定向:
在这里插入图片描述

让黑名单重定向403错误:
在这里插入图片描述

curl -I,配置成功:
在这里插入图片描述

黑名单重定向百度:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结合php服务:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在server5上添加php服务:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在server6上配置php上传文件的大小:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

server6,7配置相同,直接将server6的文件传过去:
在这里插入图片描述
在这里插入图片描述

在server5上重新启用roundrobin:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

访问网页:
在这里插入图片描述
在日志上查看现在是app1服务:

在这里插入图片描述
上传图片:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在server7查看upload目录,有上传记录:
在这里插入图片描述
server6上没有:
在这里插入图片描述

五. haproxy高可用

安装pacemaker:

在这里插入图片描述配置软件仓库:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

做免密协议:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在server4安装:

在这里插入图片描述

启用服务:
在这里插入图片描述
更改hacluster密码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看集群是否成功:
在这里插入图片描述
在这里插入图片描述显示success就成功:
在这里插入图片描述

在这里插入图片描述

开启server4,5的服务:
在这里插入图片描述
在这里插入图片描述

查看状态:
在这里插入图片描述
在这里插入图片描述

发现有warning:

在这里插入图片描述
设置stonish-enabled为false就好:
在这里插入图片描述

将配置文件传给server4:
在这里插入图片描述
在这里插入图片描述

访问server4,配置成功:
在这里插入图片描述

在这里插入图片描述列出资源和提供者:
在这里插入图片描述

配置vip以及监控:
在这里插入图片描述
ip addr配置成功:
在这里插入图片描述

停掉server5的服务:

在这里插入图片描述

再列出就只有server4online:
在这里插入图片描述

开启server5:
在这里插入图片描述

停掉server4,5的haproxy:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

再再server’4上试着查看服务状态:
在这里插入图片描述

在这里插入图片描述

将vip加入服务:
在这里插入图片描述
在这里插入图片描述

此时vip在server4上:
在这里插入图片描述重新开启服务:
在这里插入图片描述
在这里插入图片描述

down掉server4:
在这里插入图片描述
server4会自动重启

server5上查看服务:

在这里插入图片描述

现在服务由server5接管,并且vip也飘到了server5上:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章           查看所有文章
加:2021-07-14 00:25:34  更:2021-07-14 00:26:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:30:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计