高可用集群KEEPALIVED

news2024/11/26 17:24:33

文章目录

  • 高可用集群KEEPALIVED
    • VRRP
    • keepalived 部署
      • 环境准备
    • 开启通信功能
    • 设置独立日志
    • 设置独立子配置文件
    • 抢占模式和非抢占模式
      • 延迟抢占
      • 非抢占模式
    • 单播模式
    • 邮箱
      • 邮件通知脚本
    • 双主架构
    • 实现ipvs的高可用性
      • lvs-dr
    • VRRP Script
    • 实现HAProxy高可用

文章相关连接如下:

  • 如果想深入了解keepalived配置语法详情的相关知识,请点击:高可用集群KEEPALIVED的配置语法说明

高可用集群KEEPALIVED

keep alived

集群类型:

  • LB:Load Balance负载均衡
    LVS/HAProxy/nginx (http/upstream,stream/upstream)
  • HA:High Availability高可用集群 数据库、Redis
  • SPoF:Single Point of Failure,解决单点故障
  • HPC:High Performance Computing高性能集群

实现高可用:
提升系统高用性的解决方案:降低MTTR-Mean Time To Repair(平均故障时间)
解决方案:建立冗余机制

  • active/passive主/备
  • active/active双主
  • active–>HEARTBEAT --passive
  • active <–HEARTBEAT <–active

VRRP

VRRP:Virtual Router Redundancy Protocol虚拟路由冗余协议,解决静态网关单点风险

VRRP相关技术
通告:心跳优先级等;周期性
工作方式:抢占式非抢占式
安全认证:

  • 无认证
  • 简单字符认证:预共享密钥
  • MD5

工作模式:

  • 主/备:单虚拟路由器
  • 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

keepalived 部署

解决VIP的问题

vrrp协议的软件实现,原生设计目的为了高可用ipvs服务
功能:

  • 基于vrrp协议完成地址流动
  • 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)—解决lvs策略
  • 为ipvs集群的各RS做健康状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

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

环境准备

使用企业7的版本来做:

  • server安装httpd
  • selinux与防火墙处于关闭状态
  • 各节点时间必须同步:ntp, chrony
[root@realserver1 ~]# yum install httpd -y
[root@realserver1 ~]# echo 172.25.254.110 > /var/www/html/index.html
[root@realserver1 ~]# systemctl enable --now httpd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@realserver1 ~]# curl 172.25.254.110
[root@realserver2 ~]# yum install httpd -y
[root@realserver2 ~]# echo 172.25.254.120 > /var/www/html/index.html
[root@realserver2 ~]# systemctl enable --now httpd.service
[root@realserver2 ~]# curl 172.25.254.120
172.25.254.120
# 安装软件
[root@ka1 ~]# yum install keepalived.x86_64 -y
[root@ka2 ~]# yum install keepalived.x86_64 -y

环境效果:
在这里插入图片描述
在这里插入图片描述

配置keepalived

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
[root@ka1 ~]# systemctl restart keepalived.service

全局配置:
在这里插入图片描述
VIP配置:
在这里插入图片描述

# 在10主机上把配置文件拷贝到20服务器上
[root@ka1 ~]# scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf

# 然后在20主机上修改配置
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
[root@ka2 ~]# systemctl restart keepalived.service

在这里插入图片描述
验证抓包:

[root@ka1 ~]# tcpdump -i eth0 -nn host 224.0.0.18

在这里插入图片描述
停止10服务后,20接替10进行服务

[root@ka1 ~]# systemctl stop keepalived.service

在这里插入图片描述
重新启动10后,因为10优先级更高,抢占模式而回到10主机上服务

[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# tcpdump -i eth0 -nn host 224.0.0.18

在这里插入图片描述

开启通信功能

怎么使VIP通信?
默认情况下VIPping不通,表现为一直等待,包被丢弃,原因是为了安全考虑,能通信容易遭受攻击

默认情况下测试:
在这里插入图片描述
查看默认策略
在这里插入图片描述

进行更该:

[root@ka1 ~]# vim /etc/rsyslog.conf 
[root@ka1 ~]# vim /etc/sysconfig/keepalived 
[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# iptables -nL
[root@ka1 ~]# ping 172.25.254.100

在这里插入图片描述
验证是否能ping通:能
在这里插入图片描述

查看更改后策略:策略消失
在这里插入图片描述

设置独立日志


[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
KEEPALIVED_OPTIONS="-D -S 6"
[root@ka1 ~]# vim /etc/sysconfig/keepalived 
[root@ka1 ~]# vim /etc/rsyslog.conf 
[root@ka1 ~]# systemctl restart rsyslog.service 
[root@ka1 ~]# systemctl restart keepalived.service 
[root@ka1 ~]# cat /var/log/keepalived.log

修该日志级别,日志修改范围0-7
在这里插入图片描述
修改采集的方法
在这里插入图片描述
重启两个服务,并查看
在这里插入图片描述

设置独立子配置文件

抢占模式和非抢占模式

延迟抢占

两台主机都要设置成backup模式

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka1 ~]# systemctl restart keepalived.service

在这里插入图片描述

测试:
默认配置下VIP在10
在这里插入图片描述
关闭10的keepalived服务,因此20接管VIP
[root@ka1 ~]# systemctl stop keepalived.service
在这里插入图片描述
当10服务上线,在设定的时间内因为10优先级更高,因此到点会抢占VIP

在这里插入图片描述
到了设定的抢占时间5s,因优先级更高,则抢占成功在这里插入图片描述

非抢占模式

两台主机都是backup,并且设置成非抢占模式

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]# ifconfig
[root@ka1 ~]# systemctl stop keepalived.service
[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
[root@ka2 ~]# systemctl restart keepalived.service
[root@ka2 ~]# ifconfig

在这里插入图片描述
20配置
在这里插入图片描述

验证:
当10挂了,VIP在20身上
在这里插入图片描述
在这里插入图片描述
因10优先级更高,但在非抢占模式下,即使10重新恢复服务,也不会抢占20的VIP,除非20服务挂了
在这里插入图片描述

单播模式

关闭非抢占模式
需要注释掉vrrp_strict,关闭VIP通信
有vip才有数据
两边都要设置单播,只设置一个主机单播无法通信,都认为对方挂了,各自启VIP

组播情况:

[root@ka1 ~]# tcpdump -i eth0 -nn host 224.0.0.18

在这里插入图片描述

修改成单播模式:

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka1 ~]# systemctl restart keepalived.service

[root@ka2 ~]# vim /etc/keepalived/keepalived.conf 
[root@ka2 ~]# systemctl restart keepalived.service

在这里插入图片描述
在这里插入图片描述
抓包验证:

[root@ka1 ~]# tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20

因为VIP在10 身上
在这里插入图片描述

关闭10的服务,因此VIP到20身上,用20验证

[root@ka1 ~]# systemctl stop keepalived.service

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

邮箱

单播情况下,一台主机出现问题,我们需要知道情况

获取邮箱授权码
在这里插入图片描述
启用邮箱配置:

[root@ka1 ~]# vim /etc/mail.rc
set bsdcompat
set from=3178535571@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=3178535571@qq.com
set smtp-auth-password=此为邮箱字段生成的授权码
set smtp-auth=login
set ssl-verify=ignore

[root@ka1 ~]# echo test massage | mail -s test 3178535571@qq.com

在这里插入图片描述
发送测试邮件:
在这里插入图片描述
在这里插入图片描述

邮件通知脚本

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
notify_master "/etc/keepalived/notify.sh master"
        notify_backup "/etc/keepalived/notify.sh backup"
        notify_fault "/etc/keepalived/notify.sh fault"

[root@ka1 ~]# vim /etc/keepalived/mail.sh
[root@ka1 ~]# chmod +x /etc/keepalived/mail.sh
[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]# bash /etc/keepalived/mail.sh master
sh代码
[root@ka1 ~]# vim /etc/keepalived/mail.sh
#!/bin/bash
mail_dst="3178535571@qq.com"
send_message()
{
        mail_sub="$HOSTNAME to be $1 vip move"
        mail_msg="`date +%F\ %T`: vrrp move $HOSTNAME chage $1"
        echo $mail_msg | mail -s "$mail_sub" $mail_dst
}

case $1 in
        master)
        send_message master
        ;;
        backup)
        send_message backup
        ;;
        fault)
        send_message fault
        ;;
        *)
        ;;
esac

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

邮件测试:
在这里插入图片描述

重启服务会有VIP上下限的通知
为什么停止一个服务,没有收到fault的邮件通知?难道是我们代码有误?NO!NO!NO!因为服务已经停了,没有流量能发送fault的邮件,只需关注VIP变化就知道有机器服务出问题了
在这里插入图片描述

双主架构

master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。

master/.master的双主架构:

  • 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高服务器资源利用率
  • 一个节点只能配一个MASTER,其他都是BACKUP

两个都要改
对10:

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf
[root@ka1 ~]# systemctl restart keepalived.service

[root@ka2 ~]# vim /etc/keepalived/keepalived.conf
[root@ka2 ~]# systemctl restart keepalived.service

在这里插入图片描述
20
在这里插入图片描述
验证:
10和20都有VIP
在这里插入图片描述
在这里插入图片描述
一个节点只能配一个MASTER,其他都是BACKUP
即使是三节点的三主架构,每个节点也只有一个master:

#粗略框架显示:
#第一个节点ka1配置:
Vrrp instance 1:MASTER,优先级100
Vrrp instance 2:BACKUP,优先级80
Vrrp instance 3:BACKUP,优先级60
#第二个节点ka2配置:
Vrrp instance 1:BACKUP,优先级60
Vrrp instance 2:MASTER,优先级100
Vrrp instance 3:BACKUP,优先级80
#第三个节点ka3配置:
Vrrp instance 1:BACKUP,优先级80
Vrrp instance 2:BACKUP,优先级60
Vrrp instance 3:MASTER,优先级100

实现ipvs的高可用性

用keepalived控制lvs
110和120主机配置了web服务

lvs-dr

服务器配置环回,此处为永久配置

[root@realserver2 ~]# cd /etc/sysconfig/network-scripts/
[root@realserver2 network-scripts]# vim ifcfg-lo
[root@realserver2 network-scripts]# systemctl restart network


[root@realserver1 ~]# cd /etc/sysconfig/network-scripts/
[root@realserver1 network-scripts]# vim ifcfg-lo
[root@realserver1 network-scripts]# systemctl restart network

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

内核路由永久配置
两台服务器关闭rip响应

[root@realserver1 ~]# vim /etc/sysctl.d/arp.conf
[root@realserver1 ~]# sysctl --system


[root@realserver2 ~]# vim /etc/sysctl.d/arp.conf
[root@realserver2 ~]# sysctl --system

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

安装软件包

[root@ka1 keepalived]# yum install ipvsadm -y
[root@ka1 keepalived]# vim /etc/keepalived/keepalived.conf


[root@ka2 keepalived]# yum install ipvsadm -y
[root@ka2 keepalived]# vim /etc/keepalived/keepalived.conf


修改配置文件:添加策略

[root@ka1 keepalived]# vim /etc/keepalived/keepalived.conf
[root@ka1 keepalived]# systemctl restart keepalived.service
[root@ka1 keepalived]# ipvsadm -Ln

[root@ka2 keepalived]# vim /etc/keepalived/keepalived.conf
[root@ka2 keepalived]# systemctl restart keepalived.service

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

验证:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

VRRP Script

以haproxy的状态选择VIP的迁移

keepalived 检测haproxy 的状态,并且出问题了后降低VIP

利用脚本实现主从角色切换

编写脚本


[root@ka1 keepalived]# vim /etc/keepalived/test.sh

[root@ka1 keepalived]# bash /etc/keepalived/test.sh 
[root@ka1 keepalived]# echo $?
0

[root@ka1 keepalived]# vim /etc/keepalived/keepalived.conf 
[root@ka1 keepalived]# systemctl restart keepalived.service

在这里插入图片描述
运行代码
在这里插入图片描述
此时VIP存在:
在这里插入图片描述

编写keepalived
在这里插入图片描述
创建脚本中的目录后,则检测结果会运行代码,减少自身优先级,主从角色切换

[root@ka1 keepalived]# touch /mnt/lee
[root@ka1 keepalived]# systemctl restart keepalived.service 
[root@ka1 keepalived]# ifconfig

在这里插入图片描述

实现HAProxy高可用

haproxy + keepalived

两台主机都要装haproxy

[root@ka1 ~]# yum install haproxy -y

[root@ka2 ~]# yum install haproxy -y

需要在两个ka1和ka2两个节点启用内核参数,目的是为了即使另一台主机没有100的VIP,也能进行远程解析,在原100的VIP下线的时候,保证服务能正常进行

[root@ka1 ~]# vim /etc/sysctl.conf 
[root@ka1 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1

[root@ka2 ~]# vim /etc/sysctl.conf 
[root@ka2 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1

编辑haproxy

[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg 
[root@ka1 ~]# systemctl enable --now haproxy.service

[root@ka2 ~]# vim /etc/haproxy/haproxy.cfg 
[root@ka2 ~]# systemctl enable --now haproxy.service

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

删除两台服务器的环回以及开启rip功能,步骤基本相同

[root@realserver2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo
[root@realserver2 ~]# systemctl restart network
[root@realserver2 ~]# ifconfig


[root@realserver1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo
[root@realserver1 ~]# systemctl restart network
[root@realserver1 ~]# ifconfig

在这里插入图片描述
在这里插入图片描述
恢复rip功能
在这里插入图片描述
在这里插入图片描述

配置keepalived

[root@rsa1 ~]# vim /etc/keepalived/test1.sh
[root@rsa1 ~]# chmod +x /etc/keepalived/test1.sh
[root@rsa1 ~]# vim /etc/keepalived/keepalived.conf 
[root@rsa1 ~]# systemctl restart keepalived.service

10主机配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
20主机配置



[root@rsa2 ~]# vim /etc/keepalived/test1.sh
[root@rsa2 ~]# chmod +x /etc/keepalived/test1.sh
[root@rsa2 ~]# vim /etc/keepalived/keepalived.conf 
[root@rsa2 ~]# systemctl restart keepalived.service

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

配置haproxy

[root@rsa1 haproxy]# vim /etc/haproxy/haproxy.cfg 
[root@rsa1 haproxy]# systemctl restart haproxy.service

10主机配置
在这里插入图片描述
20主机配置

```bash
[root@rsa2 haproxy]# vim /etc/haproxy/haproxy.cfg 
[root@rsa2 haproxy]# systemctl restart haproxy.service

在这里插入图片描述

测试:
在这里插入图片描述
当一个服务器的haproxy下线时:服务没影响

[root@rsa1 ~]# systemctl stop haproxy.service

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣 | 动态规划 | 在字符串的应用 | 最长回文子串、最长回文子序列、单词拆分、编辑距离

文章目录 1.最长回文子串2.最长回文子序列3.单词拆分4.编辑距离5. 共同点和思路6. 各个问题的思路和扩展1. 最长回文子串2. 最长回文子序列3. 单词拆分4. 编辑距离 在解答字符串动态规划的应用时&#xff0c;我们需要非常注意一个问题&#xff1a;   有时候我们定义 d p [ i …

MoonBit 周报 Vol.53:新增高级循环语法、引入字符串插值、MoonBit AI 支持代码解释!

weekly 2024-08-05 MoonBit更新 添加了基于 Iter 和 Iter2 类型的 for .. in 循环支持&#xff1a; fn main {for x in [ 1, 2, 3 ] {println(x)}for k, v in { "x": 1, "y": 2 } {println("\{k} > \{v}")} }for 与 in 之间可以使用 1&…

事务及事务的控制.特性

一.事务 1.事务定义 ​ 逻辑上多个DML操作形成的一个整体,多个DML操作要么全都执行成功,要么全都执行失败,如果是DDL的操作会自动提交事务. 2.事务的控制 命令 start transaction开启事务rollback 回滚commit提交事务 mysql默认自动提交事务,每个DML执行完毕后,直接提交事…

【Linux】编译器gcc/g++ 、程序翻译过程、动静态库

目录 1.gcc/g Linux编译器1.1. gcc与g的安装1.2. gcc与g用法1.2.1.gcc用法1.2.2. g用法 1.3. 程序翻译的过程1.3.1. 前提知识&#xff1a;1.3.2. 预处理&#xff08;语言种类不变&#xff09;条件编译用途&#xff1a; 1.3.3. 编译&#xff08;生成汇编语言&#xff09;1.3.4. …

性能测试工具之JMeter

JMeter Apache JMeter应用程序是开源软件,是一个100%纯Java应用程序,旨在负载测试功能行为和衡量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。 JMeter是一个免费、开源、跨平台的性能测试工具,于20世纪90年代后期面世。这是一个成熟、健全且具有…

‘Task‘ object is not callable ERROR

pycharm 调试异步的代码报错 TypeError: ‘Task‘ object is not callable ERROR: Exception in callback &#xff1c;Task 解决方法&#xff1a;点击菜单栏帮助-查找操作-注册表&#xff0c;在注册表中搜索python.debug.asyncio.repl禁用即可

卷大模型,还是卷应用?一次看明白

自从ChatGPT横空出世以来&#xff0c;中美之间围绕大模型的科技竞争愈演愈烈&#xff0c;也渐渐分化出两条差异化发展路线&#xff1a;一派侧重将AI能力投入应用场景&#xff0c;另一派则侧重让基础模型能力更强。于是&#xff0c;“卷应用”还是“卷大模型”成为中国许多新入场…

phpmailer如何配置SSL以发送安全电子邮件?

phpmailer支持哪些邮件附件类型&#xff1f;如何使用phpmailer&#xff1f; PHPMailer作为一个广泛使用的PHP邮件发送类库&#xff0c;支持通过SSL发送加密邮件&#xff0c;以确保信息在传输过程中的安全性。AokSend将探讨如何配置PHPMailer以使用SSL发送安全的电子邮件。 Ph…

M12防水分线盒双通道PNP型8路预铸线缆半导体制造设备

M12防水分线盒双通道PNP型8路预铸线缆&#xff0c;作为工业自动化设备中关键的组件之一&#xff0c;在提升系统稳定性与可靠性方面发挥着至关重要的作用。以钡铼技术DB系列为例&#xff0c;这款8路M12双通道预铸线缆分线盒在设计和材料选择上均体现了工业级的高标准&#xff0c…

解决方案:如何在虚拟机中扩展 Windows 11 C 盘,绕过恢复分区的限制!

第2章 背景 不管是虚拟化还是物理机&#xff0c;我们安装Windows 11 时候经常遇到无法直接扩容盘&#xff0c;我们简单介绍下Windows中C盘组成。 ### 恢复分区的目的 恢复分区是 Windows 操作系统安装过程中创建的一个特殊分区&#xff0c;主要用于以下目的&#xff1a; 1. …

如何修复 VLC 无法播放 MKV 问题

VLC 是一个媒体播放器&#xff0c;您可以用它来播放各种格式的音频或视频文件。但有时&#xff0c;您无法在 VLC 媒体播放器上运行 MKV 文件。问题可能是黑屏、没有声音、视频断断续续或错误消息&#xff08;例如“无法识别的编解码器&#xff1a;VLC 无法识别音频或视频编解码…

自助创建 1Panel 应用

自助创建 1Panel 应用 前言 1Panel 作为一款开源的 Linux 服务器运维管理面板&#xff0c;其优质的 应用商店 想必也是很多人喜爱它的原因&#xff0c;除了官方的 应用列表 &#xff0c;开源社区内也涌现出了许多优质的第三方应用商店资源&#xff0c;比如 okxlin/appstore 等…

【MySQL】什么是索引?了解索引的底层原理

索引的概念 索引是一种用于提高数据库查询效率的数据结构。它类似于书籍的目录&#xff0c;通过快速定位数据的方式&#xff0c;减少了数据检索的时间。索引在数据库表中可以被看作是一个指向数据的指针&#xff0c;它们存储了列的值及其对应行的位置&#xff0c;从而使得数据…

《老俞闲话|唯爱和热情不可辜负》读后感

《老俞闲话&#xff5c;唯爱和热情不可辜负》读后感 俞敏洪先生的这篇讲话充满了深情与智慧&#xff0c;他以自己丰富的人生经历和教育实践&#xff0c;向我们展现了一位教育家对于教育事业的热爱和对教师角色的深刻理解。 情感真挚&#xff0c;触动人心 俞敏洪先生的讲话中流…

嵌入式day25

进程线程 多任务编程 1、进程 2、线程 进程&#xff08;process&#xff09; 进行中的程序 --- 正在运行中的程序 进程 --- 程序的一次执行的过程 进程 是程序的一个实例 进程是跑起来的程序 一个程序可以对应多个进程 程序 静态 硬盘 进程 动态 内存 为什么需要进程…

ECharts 数据可视化 入门基本知识 下载安装常用的图表 【1】

ECharts一个基于 JavaScript 的开源可视化图表库&#xff0c;即将数据以图形或图像的方式展现成在屏幕上显示出来&#xff0c;这种方式称为数据可视化。数据可视化有助于我们分析数据&#xff0c;帮助我们更深入更直观的理解数据。今天回顾顺便总结一下echarts的基本知识&#…

基于SpringBoot和Vue框架的体育馆场地预约系统的设计与实现---附源码15155

摘要 本研究设计和开发了一款体育馆场地预约系统。该系统旨在提供一个方便、高效的方式&#xff0c;让用户能够轻松预约体育馆场地&#xff0c;并实现对预约信息的管理与统计。系统主要分为普通用户和管理员两个角色。普通用户可以浏览通知公告、体育资讯&#xff0c;查看各个体…

并发编程(第二天)

interrupt 方法详解 打断 sleep&#xff0c;wait&#xff0c;join 的线程 这几个方法都会让线程进入阻塞状态 打断 sleep 的线程, 会清空打断状态打断正常运行的线程 打断正常运行的线程, 不会清空打断状态打断 park 线程 打断 park 线程, 不会清空打断状态 如果打断标记已经…

Apache Tomcat服务器版本号隐藏

渗透测试时发现有一台服务器的404报错页面中&#xff0c;有Apache Tomcat的版本号信息显示&#xff0c;发生了信息泄露&#xff0c;可能导致服务器被攻击。如下所示&#xff1a; 解决步骤如下&#xff1a; 1. 隐藏HTTP响应头中的Server信息 Tomcat默认会在HTTP响应头中包含S…

Java面试八股之消息队列通常由哪些角色组成

消息队列通常由哪些角色组成 消息队列系统通常涉及几个核心角色&#xff0c;这些角色协同工作以实现消息的传递和处理。主要的角色包括&#xff1a; 生产者&#xff08;Producer&#xff09;&#xff1a; 生产者是消息的创建者&#xff0c;负责将消息发送到消息队列中。生产者…