当前位置: 首页 > news >正文

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • git clone 大文件 eof 错误
  • uniapp——列表选择样式
  • 消息队列项目
  • 职业本科大数据实训室
  • 如何使用 AWS CLI 创建和运行 EMR 集群
  • Nginx + PHP 8.0支持视频上传
  • Golang | Leetcode Golang题解之第326题3的幂
  • SoildWorks练习清单
  • C++初学者指南-5.标准库(第二部分)--二叉堆操作
  • node 与 webhdfs 交互
  • IOC容器初始化流程
  • [大模型实战] DAMODEL云算力平台部署LLama3.1大语言模型
  • jmeter使用问题记录
  • 数据库篇--八股文学习第十九天| Redis的数据类型有哪些?;Redis是单线程的还是多线程的,为什么?;说一说Redis持久化机制有哪些
  • 2-61 基于matlab的光学干涉仿真系统
  • 【技术性】Search知识
  • KMP算法及优化
  • MySQL数据库运维之数据恢复
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 关于List、List?、ListObject的区别
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 力扣(LeetCode)357
  • 使用 5W1H 写出高可读的 Git Commit Message
  • -- 数据结构 顺序表 --Java
  • 线性表及其算法(java实现)
  • 新书推荐|Windows黑客编程技术详解
  • 一个项目push到多个远程Git仓库
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (6)添加vue-cookie
  • (70min)字节暑假实习二面(已挂)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (回溯) LeetCode 77. 组合
  • .net 7和core版 SignalR
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core 项目指定SDK版本
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework杂记
  • .net 无限分类
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET 中 GetProcess 相关方法的性能
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET开源快速、强大、免费的电子表格组件
  • .NET连接数据库方式
  • @Not - Empty-Null-Blank
  • @staticmethod和@classmethod的作用与区别
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [C++]: 模板进阶