cnetos部署高可用以及七层负载均衡


文章目录

  • centos部署高可用以及七层负载均衡
    • 一、准备环境
    • 二、配置高可用
      • 第一台:
      • 第二台:
    • 三、配置负载均衡
      • 第一台的七层负载均衡器为haproxy
      • 第二台的七层负载均衡器为nginx
    • 四、配置后端服务器
    • 五、测试

centos部署高可用以及七层负载均衡

一、准备环境

准备两台服务器,作为前端服务器,第一台安装keepalived,haproxy,第二台安装keepalived,nginx

前提是做好epel镜像源

#第一台
yum install keepalived -y
yum install  haproxy -y第二台
yum install keepalived -y
yum install nginx -y

再准备四台服务器作为后端服务器,两台作为web服务器,两台作为php服务器,统一安装Apache或者是nginx都行

yum install nginx -y
或
yum install httpd -y

安装完成后,统一进行时间同步

ntpdate ntp.aliyun.com

在这里插入图片描述

二、配置高可用

配置两台前端服务器

第一台:

vim /etc/keepalived/keepalived.conf 替换内容

! Configuration File for keepalived
global_defs {router_id 1                            #设备在组中的标识,设置不一样即可}vrrp_script chk_haproxy {                        #健康检查script "/etc/keepalived/ck_ha.sh"     #检查脚本interval 2                            #检查频率.秒weight -5                             #priority减5fall 3                                        #失败三次}#高可用集群的组员设置
vrrp_instance VI_1 {               #VI_1。实例名两台路由器相同。同学们要注意区分。state MASTER                        #主或者从状态interface ens33                     #监控网卡mcast_src_ip 192.168.116.131         #心跳源IP,当前主机的ipvirtual_router_id 55                #虚拟路由编号,主备要一致。同学们注意区分priority 100                        #优先级 数值越大优先级越高advert_int 1                        #心跳间隔 单位是秒authentication {                    #秘钥认证(1-8位)auth_type PASSauth_pass 123456}virtual_ipaddress {                 #VIP 虚拟ip192.168.116.100/24}track_script {                       #引用脚本chk_haproxy}}

vim /etc/keepalived/ck_ha.sh

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C haproxy --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测systemctl start nginxsleep 5counter=$(ps -C haproxy --no-heading|wc -l)if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换systemctl stop keepalivedfi
fi

给上可执行权限

chmod +x /etc/keepalived/ck_ha.sh启动
systemctl start keepalived.service

第二台:

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {router_id 1                            #设备在组中的标识,设置不一样即可}vrrp_script chk_nginx {                        #健康检查script "/etc/keepalived/ck_ng.sh"     #检查脚本interval 2                            #检查频率.秒weight -5                             #priority减5fall 3                                        #失败三次}#高可用集群的组员设置
vrrp_instance VI_1 {               #VI_1。实例名两台路由器相同。同学们要注意区分。state MASTER                        #主或者从状态interface ens33                     #监控网卡mcast_src_ip 192.168.116.132        #心跳源IP,当前主机的ipvirtual_router_id 55                #虚拟路由编号,主备要一致。同学们注意区分priority 99                        #优先级 数值越大优先级越高低于第一台的优先级advert_int 1                        #心跳间隔 单位是秒authentication {                    #秘钥认证(1-8位)auth_type PASSauth_pass 123456}virtual_ipaddress {                 #VIP 虚拟ip192.168.116.100/24}track_script {                       #引用脚本chk_nginx}}

vim /etc/keepalived/ck_ng.sh

#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测systemctl start nginxsleep 5counter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then
#如果启动没成功,就杀掉keepalive触发主备切换systemctl stop keepalivedfi
fi

给上可执行权限

chmod +x /etc/keepalived/ck_ha.sh启动
systemctl start keepalived.service

查看第一台的IP,查看是否有虚拟ip

ip a

在这里插入图片描述
查看第二台的ip,查看是否有虚拟ip,这一台正常情况下没有,只有第一台的down了才有,第一台的优先级较高

ip a

在这里插入图片描述

三、配置负载均衡

第一台的七层负载均衡器为haproxy

vim /etc/haproxy/haproxy.cfg 替换内容

globallog 127.0.0.1 local3 infomaxconn 4096uid nobody
#       uid 99gid nobody
#       gid 99daemonnbproc 1pidfile /run/haproxy.pid
defaultslog		   globalmode	   httpmaxconn 2048retries 	3option	redispatchtimeout connect 5000timeout client 50000timeout server 50000option abortonclosestats uri /admin?stats			#这是实际的 URI 路径,显示有关负载均衡器的状态、流量和其他统计信息stats realm Private lands		stats auth admin:password		#户需要提供这个用户名和密码才能访问统计信息页面stats hide-version				#隐藏 HAProxy 的版本信息,这有助于增加安全性,防止潜在攻击者通过版本信息了解具体的 HAProxy 版本frontend http-in					#定义了一个前端,负责处理来自客户端的请求bind 0.0.0.0:80					#前端将监听所有 IP 地址上的 80 端口mode http						#将前端配置为 HTTP 模式,适用于处理 HTTP 请求log global						option httplog					#启用 HTTP 日志记录模式,这样可以记录更详细的 HTTP 请求和响应信息到日志中option httpclose				#在响应结束后关闭连接,启用 HTTP/1.0 兼容性,确保每个请求都使用独立的连接acl html url_reg  -i  \.html$	#定义了一个 ACL(访问控制列表),使用正则表达式来匹配 URL,不区分大小写地匹配以 .html 结尾的 URLacl php url_reg  -i  \.php$use_backend html-server if  html	#根据 ACL 条件将请求路由到特定的 backend,这是定义的 backend 名称,当请求符合 html ACL 条件时,将请求路由到这个 backenduse_backend php-server if  phpdefault_backend html-server	#指定默认的 backend,当请求没有匹配到任何 ACL 时,将请求路由到这个 backendbackend html-servermode httpbalance roundrobinoption httpchk GET /index.htmlcookie SERVERID insert indirect nocacheserver html-A 192.168.116.140:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5server html-B 192.168.116.141:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5#这个 backend 配置定义了一个 HTTP 后端服务,使用轮询算法来平衡负载,并配置了基于 Cookie 的会话保持。还启用了 HTTP 健康检查,确保请求只被发送到健康的服务器。配置了两个服务器 html-A 和 html-B,分别具有一定的权重和健康检查设置。通过这种配置,可以确保流量均匀地分配到多个服务器,并且能够处理服务器的故障或异常backend php-servermode httpbalance roundrobinoption httpchk GET /index.phpcookie SERVERID insert indirect nocacheserver php-A 192.168.116.143:80 weight 1 cookie 1 check inter 2000 rise 2 fall 5server php-B 192.168.116.144:80 weight 1 cookie 2 check inter 2000 rise 2 fall 5

启动haproxy服务

systemctl start haproxy.service

第二台的七层负载均衡器为nginx

vim /etc/nginx/nginx.conf

#在http大括号内添加upstream html {server 192.168.229.13:80;server 192.168.229.14:80;}upstream php {server 192.168.229.15:80;server 192.168.229.16:80;}#在server大括号内添加
location / {proxy_pass   http://html;}location ~ \.php$ {proxy_pass http://php;}

启动nginx

systemctl start nginx

四、配置后端服务器

这里使用的是nginx

#后四台的前两台作为web服务,添加网页内容#第一台echo web11111111 > /usr/share/nginx/html/index.html#第二台echo web22222222 > /usr/share/nginx/html/index.html#正常情况下两台的内容是一样的,这里为了测试,网页要有区别#后四台的后两台作为php服务,添加网页内容
cd /usr/share/nginx/html/
mv index.html index.php
#第一台
echo php111111111  > index.php
#第二台
echo php222222222  > index.php

后四台nginx全部启动

systemctl start nginx

五、测试

在任意一台服务器上安装elinks,因为使用浏览器会有缓存,测试结果不客观

yum install elinks -y

目前的虚拟IP地址在第一台高可用服务器上
在这里插入图片描述
使用elinks访问虚拟ip

elinks --dump http://192.168.116.100
elinks --dump http://192.168.116.100/index.php

可以看到是一替一次的访问不同服务器
在这里插入图片描述

然后我们将第一台的高可用给停掉,测试第二台的高可用和负载均衡

systemctl stop keepalived.service

这时第二台高可用服务器就有了虚拟IP,顶替了第一台高可用服务器的位置
在这里插入图片描述

再次使用elinks访问该虚拟IP

elinks --dump http://192.168.116.100
elinks --dump http://192.168.116.100/index.php

在这里插入图片描述
完结,注意配置并不完整,只是出现了基础效果,谨慎使用
回到顶层

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397165.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密码学基础:搞懂Hash函数SHA1、SHA-2、SHA3(1)

目录 1.消息摘要(Hash) 2.SHA-1 3.SHA-2 4.小结 1.消息摘要(Hash) Hash函数是一种单向密码体制,把任意长度的输入经过变换得到一个固定长度的输出,同时它还具备单向性,只能从明文到密文,不能逆向,正是由于Hash函数…

数据结构----队列和栈

小编会一直更新数据结构相关方面的知识,使用的语言是Java,但是其中的逻辑和思路并不影响,如果感兴趣可以关注合集。 希望大家看完之后可以自己去手敲实现一遍,同时在最后我也列出一些基本和经典的题目,可以尝试做一下。…

C# winform 三层架构 增删改查 修改数据(修改篇)

ss一.留言 本专栏三层架构已经更新了 添加 登录 显示&#xff0c;还差修改以及删除&#xff0c;本篇更新修改&#xff0c;主要操作为点击修改某一条数据&#xff0c;然后跳转页面进行修改。 二.展示 我们先看DAL代码 /// <summary>/// 修改/// </summary>/// &l…

算法基础知识——11种距离度量

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 前言&#xff1a;距离的作用 数据聚类&#xff1a;距离度量在聚类算法&#xff08;如K-means、层次聚类&#xff09;中用于衡量数据点之间的相似性或差异性&#xff0c;帮助确定聚类的中心和边界…

haproxy总结与实验

一、负载均衡 1.1 简述负载均衡 在高并发的业务场景下&#xff0c;解决单个节点压力过大&#xff0c;导致Web服务响应过慢&#xff0c;特别是严重的情况下导致服务瘫痪&#xff0c;无法正常提供服务的问题&#xff0c;而负载均衡的目的就是为了维护系统稳定可靠。负载均衡&…

Redis -LFU(Least Frequently Used,最少使用频率)缓存淘汰算法

在 Redis 的 LFU&#xff08;Least Frequently Used&#xff0c;最少使用频率&#xff09;缓存淘汰算法中&#xff0c;lru 字段被拆分成两部分&#xff1a;高 16 位存储 ldt&#xff08;Last Decrement Time&#xff09;&#xff0c;低 8 位存储 logc&#xff08;Logistic Coun…

Postgresql导入矢量数据

前期准备 工具&#xff1a;PgAdmin&#xff0c;postgis-bundle Postgres安装和postgis安装可以百度别的教程。 创建数据库添加扩展 如图&#xff0c;使用PgAdmin创建名为shp的数据库&#xff0c;并在扩展item中添加postgis扩展。 添加扩展方法可以用查询工具输入以下sql语句&…

LeetCode 热题 HOT 100 (024/100)【宇宙最简单版】

【哈希表】No. 0128 最长连续序列【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&am…

ES6模块化简明笔记

1、什么是模块化 详见看上一篇笔记CommonJs模块化简明笔记 2、为什么需要模块化 详见看上一篇笔记CommonJs模块化简明笔记 3、导入和导出的概念 详见看上一篇笔记CommonJs模块化简明笔记 4、模块导出&#xff08;暴露&#xff09; 4.1 导出&#xff08;暴露&#xff09;方式1&…

C++ list的基本使用

目录 1.list简要介绍 2. list的构造 3. list中迭代器的使用 (1). 双向迭代器与随机访问迭代器使用区别 4.判空、获取元素个数 5. list头、尾元素的访问 6. 插入与删除操作 (1). 头插头删&#xff0c;尾插尾删 (2). 插入&#xff0c;删除与清空 (3). 交换 7. list容器迭代…

前端面试常考的HTML标签知识!!!

语义标签 标签名语义描述header网页头部网页的主要头部区域nav网页导航网页的导航链接区域footer网页底部网页的底部区域aside网页侧边栏网页的侧边栏区域section网页区块网页的独立区块 | article | 网页文章 | 网页的独立文章区域 | 字符实体 作用&#xff1a;在网页中显…

DataWhale夏令营——AIGC技术

一、任务流程 第一步——开通阿里云PAI-DSW试用 1.进入阿里云社区 阿里云社区&#xff1a;阿里云免费试用 - 阿里云 (aliyun.com) 2. 登录或者注册自己的阿里云账号&#xff1a; 3. 点击立即试用 领取成功之后关闭页面即可。 第二步——进入魔搭社区授权 魔搭社区&#…

HTML标记与文档结构

1.1 HTML标记基础 内容标记包括闭合标签和非闭合标签。 1.1.1 文本用闭合标签 闭合标签基本格式和属性&#xff1a; <标签名 属性1"属性值" >文本内容</标签名> 闭标签比开标签多一个斜杠。 1.1.2 引用内容够用自闭和标签 <标签名 属性1"…

Android逆向题解 攻防世界难度5- APK逆向

jeb打开apk 一眼就能看出来&#xff0c;没啥难度&#xff0c;这个难度还不如上一个难度4的题。 直接还原即可 public static void main(String[] args) throws NoSuchAlgorithmException {String userName "Tenshine";MessageDigest messageDigest0 MessageDigest…

【C++】基于多态实现员工管理系统

代码 1、主程序&#xff1a; #include<iostream> using namespace std; #include"workerManager.h"#include"worker.h" #include"employee.h" #include"manager.h" #include"boss.h"int main() {WorkerManager wm;i…

Java语言程序设计——篇十三(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

C#语言基础速成Day07

“知止而后有定&#xff0c;定而后能静&#xff0c;静而后能安&#xff0c;安而后能虑&#xff0c;虑而后能得。” 目录 前言文章有误敬请斧正 不胜感恩&#xff01;||Day07 C#常见数据结构&#xff1a;1. 集合&#xff08;Collection&#xff09;1.1 **List<T>**1.2 **H…

前端(三):Ajax

一、Ajax Asynchronous JavaScript And XML&#xff0c;简称Ajax&#xff0c;是异步的JavaScript和XML。 作用&#xff1a;数据交换&#xff0c;通过Ajax可以给服务器发送请求&#xff0c;并获取服务器响应的数据。异步交互&#xff1a;可以在不重新加载整个页面的情况下&…

本地环境VMware使用代理解决 Docker 镜像拉取问题

引言 本文将分享我在 Windows 10 环境下&#xff0c;通过 VMware 运行的 CentOS 7.8 虚拟机中配置 Docker 代理&#xff0c;成功解决了镜像拉取问题的经验。 问题描述 在尝试启动一个依赖 Docker 的 GitHub 项目时&#xff0c;拉取 Docker 镜像的失败。尝试配置了几个国内源…

Spring Boot优缺点

Spring Boot 是一款用于简化Spring应用开发的框架&#xff0c;它集成了大量常用的框架和工具&#xff0c;大大简化了Spring项目的配置和部署。下面是Spring Boot的优缺点&#xff1a; 优点&#xff1a; 简化配置&#xff1a;Spring Boot自动配置功能可以根据应用的依赖自动配…