七章——Keepalived双机热备(应用——linux防护与群集)

2023-12-14 01:20

本文主要是介绍七章——Keepalived双机热备(应用——linux防护与群集),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

三期总目录链接

目录

 一、Keepalived双机热备

(一)Keepalived概述

(二)Keepalived实现双机热备

1、主服务器配置

2、备用服务器

3、验证

二、LVS+Keepalived高可用群集

1、ip分配

2、在上次实验中进行修改(c-12主调度器)

3、c-13备用调度器

4、web1服务器

5、web2服务器同上面步骤

6、测试lvs+Keepalived高可用集群

问题:遇到漂移地址在slave上,但开启master服务器也没有回到master服务器

复习题


 一、Keepalived双机热备

       Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。

(一)Keepalived概述

Keepalived的热备方式

Keepalived:采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)以软件方式实现Linux服务器的多机热备功能

VRRP:是针对路由器的一种备份解决方案:一主 + 多备   共用同一个IP地址,但优先级不同(优先级决定接替顺序),其他路由器处于冗余状态;如使用多台备用服务器,state均设为BACKUP,但各自的优先级priority不要相同

     热备组内每台都有可能成为主路由,虚拟路由器的ip地址(VIP)可以在热备组内的路由器之间进行转移,也被称为:漂移ip地址,漂移地址不需要手动建立虚拟接口配置文件

(二)Keepalived实现双机热备

  VRRP的热备方式,Keepalived可以用做服务器故障切换,常用于双机热备,在双机热备的方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(如:web、ftp、fail、还是ssh、dns等)

案例:

服务器地址:192.168.1.12/24   网关地址192.168.1.12

用服务器地址:192.168.1.13/24  网关地址192.168.1.12

漂移集群vip地址:192.168.1.87/24

1、主服务器配置

网卡配置(略)防火墙关闭(略)selinux关闭(略)

Keepalived 服务的配置目录位于/etc/keepalived/
keepalived.conf:主配置文件
另外包括一个子目录samples/,提供了许多配置样例作为参考。
在配置文件中,使用  global_defs{...}  区段指定全局参数,使用  vrp_instancc 实例名称  区段指定VRRP热备参数

[root@C-12 ~]# yum -y install keepalived ipvsadm httpd   #安装
......
...
[root@C-12 ~]# systemctl enable keepalived          #设置为开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@C-12 ~]# vim /var/www/html/index.html<h1>192.168.1.12今天星期日休息<h1/>
[root@C-12 ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak   #修改配置文件名称进行备份
[root@C-12 ~]# vim /etc/keepalived/keepalived.conf     #新建配置文件global_defs {router_id HA_TEST_R1     #本路由器的名称
}vrrp_instance VI_1 {        #定义VRRP热备实例state MASTER            #MASTER表示主服务器interface ens33         #承载VIP地址的物理接口virtual_router_id 1     #虚拟路由器的ID号,每个热备组保持一致priority 100            #优先级,数值越大优先级越高advert_int 1            #通告间隔秒数(心跳频率)authentication {        #认证信息,每个热备组保持一致auth_type PASS      #认证类型auth_pass 123.com   #密码字串}virtual_ipaddress {192.168.1.87        #指定漂移地址(VIP)可以有多个}
}
[root@C-12 ~]# systemctl start keepalived    #启动
[root@C-12 ~]# systemctl start httpd         #启动
[root@C-12 ~]# ip addr show dev ens33        #使用ip命令进行查看
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:20:f8:34 brd ff:ff:ff:ff:ff:ffinet 192.168.1.12/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.1.87/32 scope global ens33    #自动设置的VIP地址

2、备用服务器

 在同一个Keepalived热备组内,所有配置文件基本相同,包括虚拟路由器的ID号、认证信息、漂移地址、心跳频率等。不同之处在于路由器名称,热备状态、优先级
路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称
热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为BACKUP
优先级(priority):数值越大则取得 VIP控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突

[root@C-13 ~]# yum -y install keepalived ipvasdm httpd
.......
...
[root@C-13 ~]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.[root@C-13 ~]# echo "<h1>192.168.1.13今天是阴天</h1>" >/var/www/html/index.html  #测试首页
[root@C-13 ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak      
[root@C-13 ~]# echo '                #编辑内容global_defs {router_id HA_TEST_R2    #修改本路由器名称}vrrp_instance VI_1 {state BACKUPinterface ens33       virtual_router_id 1   priority 90            #修改优先级advert_int 1          authentication {      auth_type PASS   auth_pass 123.com}virtual_ipaddress {   192.168.1.87}}' > /etc/keepalived/keepalived.conf[root@C-13 ~]# cat /etc/keepalived/keepalived.conf   #查看global_defs {router_id HA_TEST_R2 
}vrrp_instance VI_1 {state BACKUP          interface ens33       virtual_router_id 1priority 90     advert_int 1          authentication {      auth_type PASS   auth_pass 123.com}virtual_ipaddress {   192.168.1.87}
}[root@C-13 ~]# ip addr show dev ens33    #查看
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ef:19:34 brd ff:ff:ff:ff:ff:ffinet 192.168.1.13/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft forever

    配置没有错误后启动,这时候主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态因此备用服务器中不会为ens33接口添加VIP地址

3、验证

连通性测试  :停止  主服务器keepalived服务器,发现ping测试只中断1到2个包即恢复正常,说明已有其他服务器接替VIP地址及时响应客户机请求

C:\Users\wrzs0>ping -t 192.168.1.87正在 Ping 192.168.1.87 具有 32 字节的数据:
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间=1ms TTL=64
请求超时。
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间=1ms TTL=64
请求超时。
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.87 的回复: 字节=32 时间<1ms TTL=64

web访问测试:http://192.168.1.87 会看到主服务器192.168.1.12提供的网页

停止主服务器的keepalived服务器,再次访问web服务

systemctl stop keepalived

 停止主服务后可以看到由备用服务器192.168.1.13提供的网页,说明VIP地址已切换至备用服务器

 启动主服务

systemctl start keepalived

查看日志记录:/var/log/messages,可以看到MASTER,SLAVE状态的迁移记录

 主服务器:关闭服务器后,移除VIP地址,恢复后重新变为MASTER

[root@C-12 ~]# less /var/log/messages
.......
...
Sep  5 18:22:01 C-12 Keepalived_vrrp[15399]: VRRP_Instance(VI_1) Transition to MASTER STATE  #转换到主状态
Sep  5 18:22:02 C-12 Keepalived_vrrp[15399]: VRRP_Instance(VI_1) Entering MASTER STATE       #进入主状态
Sep  5 18:22:02 C-12 Keepalived_vrrp[15399]: VRRP_Instance(VI_1) setting protocol VIPs.      #设置VIP协议

 备用服务器:状态切换为MASTER,等主服务器恢复后再交回控制器

[root@C-13 ~]# less /var/log/messages
......
....
Sep  5 18:04:39 C-13 Keepalived_vrrp[1939]: VRRP_Instance(VI_1) Received advert with higher priority 100, ours 90    #收到优先级更高的通知100,本服务器优先级90
Sep  5 18:04:39 C-13 Keepalived_vrrp[1939]: VRRP_Instance(VI_1) Entering BACKUP STATE    #进入BACKUP STATE状态
Sep  5 18:04:39 C-13 Keepalived_vrrp[1939]: VRRP_Instance(VI_1) removing protocol VIPs.   #删除VIP协议
Sep  5 18:13:57 C-13 Keepalived_vrrp[1939]: VRRP_Instance(VI_1) Transition to MASTER STATE  #转换到主状态
Sep  5 18:13:58 C-13 Keepalived_vrrp[1939]: VRRP_Instance(VI_1) Entering MASTER STATE
Sep  5 18:13:58 C-13 Keepalived_vrrp[1939]: VRRP_Instance(VI_1) setting protocol VIPs.

二、LVS+Keepalived高可用群集

  Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。
  使用Keepalived构建LVS群集更加简便易用,主要优势:对LVS负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查自动移除失效节点,恢复后再重新加入

使用Keepalived来实现主、从调度器的热备,从而构建兼有负载均衡,高可用两种能力的LVS 网站群集平台

案例:

1、ip分配

ens33接口lo:0接口
c-12主192.168.1.12
c-13备192.168.1.13
web1192.168.1.9192.168.1.87
web2192.168.1.11192.168.1.87

2、在上次实验中进行修改(c-12主调度器)

[root@C-12 ~]# systemctl stop httpd
[root@C-12 ~]# systemctl disable httpd
[root@C-12 ~]# yum -y remove httpd   #卸载httpd
......
..
[root@C-12 ~]# netstat -anput | grep httpd
[root@C-12 ~]#[root@C-12 ~]# vim /etc/keepalived/keepalived.conf     #进入配置文件global_defs {router_id HA_TEST_R1
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 1priority 100advert_int 1authentication {auth_type PASSauth_pass 123.com}virtual_ipaddress {192.168.1.87}
}virtual_server 192.168.1.87 80 {                 #虚拟服务器地址VIP、端口delay_loop 15                            #健康检查间隔时间(秒)lb_algo rr                               #轮系(rr)调度算法lb_kind DR                               #直接路由(DR)群集工作模式protocol TCP                             #应用服务采用的TCP协议
real_server 192.168.1.9 80 {                     #第一个web服务节点ip地址、端口weight 1                                 #节点的权重TCP_CHECK {                              #健康检查方式connect_port 80                  #检查的目标端口connect_timeout 3                #连接超时(秒)nb_get_retry 3                   #重试次数delay_before_retry 4             #重试间隔(秒)}}
real_server 192.168.1.11 80 {                   #第二个web服务节点ip地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 4}}
}保存退出
[root@C-12 ~]# modprobe ip_vs      #加载系统内核的服务模块
[root@C-12 ~]# lsmod | grep ip_vs  #查看系统模块运行状态
ip_vs                 141092  0 
nf_conntrack          133387  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack[root@C-12 ~]# echo "modprobe ip_vs" >>/etc/rc.local   #开机启动时加载ip_vs模块
[root@C-12 ~]# systemctl restart keepalived     #重启服务

3、c-13备用调度器

[root@C-13 ~]# systemctl stop httpd
[root@C-13 ~]# systemctl disable httpd
[root@C-13 ~]# yum -y remove httpd
.......
....
[root@C-13 ~]# netstat -anput | grep httpd
[root@C-13 ~]#
[root@C-13 ~]# vim /etc/keepalived/keepalived.confglobal_defs {router_id HA_TEST_R2
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 1priority 90advert_int 1authentication {auth_type PASSauth_pass 123.com}virtual_ipaddress {192.168.1.87}
}virtual_server 192.168.1.87 80 {delay_loop 15lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.1.9 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 4}}real_server 192.168.1.11 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 4}}
}保存退出
[root@C-13 ~]# modprobe ip_vs
[root@C-13 ~]# lsmod | grep ip_vs
ip_vs                 141092  0 
nf_conntrack          133387  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack[root@C-13 ~]# echo "modprobe ip_vs" >>/etc/rc.local
[root@C-13 ~]# systemctl restart keepalived

4、web1服务器

[root@C-09 ~]# cd /etc/sysconfig/network-scripts/
[root@C-09 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@C-09 network-scripts]# vim ifcfg-lo:0DEVICE=lo:0
IPADDR=192.168.1.87
NETMASK=255.255.255.255
ONBOOT=yes保存退出[root@C-09 network-scripts]# systemctl restart network
[root@C-09 network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.1.87/32 brd 192.168.1.87 scope global lo:0valid_lft forever preferred_lft forever[root@C-09 ~]# echo "route add -host 192.168.1.87 dev lo:0" >>/etc/rc.local
[root@C-09 ~]# route add -host 192.168.1.87 dev lo:0
[root@C-09 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.20    0.0.0.0         UG    100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.1.87    0.0.0.0         255.255.255.255 UH    0      0        0 lo[root@C-09 ~]# vim /etc/sysctl.conf......
...
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2[root@C-09 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@C-09 ~]# yum -y install httpd
[root@C-09 ~]# echo "<h1>web1 192.168.1.9 999感冒灵</h1>" >/var/www/html/index.html
[root@C-09 ~]# systemctl start httpd
[root@C-09 ~]# netstat -anput | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      1459/httpd   

5、web2服务器同上面步骤

6、测试lvs+Keepalived高可用集群

没有关闭主调度器   使用命令 ipvsadm  -ln  查看负载分配情况

[root@C-12 ~]# ip a
........
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:20:f8:34 brd ff:ff:ff:ff:ff:ffinet 192.168.1.12/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.1.87/32 scope global ens33[root@C-13 ~]# ip a
......
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ef:19:34 brd ff:ff:ff:ff:ff:ffinet 192.168.1.13/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::30f8:ec67:f2c5:e4e4/64 scope link valid_lft forever preferred_lft forever

关闭主调度器,可以从调度器的/var/log/messages日志文件进行查看

[root@C-12 ~]# ip a
.......
..
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:20:f8:34 brd ff:ff:ff:ff:ff:ffinet 192.168.1.12/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::f14f:51db:5266:8ff8/64 scope link valid_lft forever preferred_lft forever[root@C-13 ~]# ip a
......
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ef:19:34 brd ff:ff:ff:ff:ff:ffinet 192.168.1.13/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.1.87/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::30f8:ec67:f2c5:e4e4/64 scope link valid_lft forever preferred_lft forever

 

问题:遇到漂移地址在slave上,但开启master服务器也没有回到master服务器

目录

 方法一:把两个服务器全部关闭,先开启master服务器,再开启slave服务器

如上述方法没有效果那么使用下面的方法试一下

方法二:把两个服务器上的Keepalived卸载,重新安装一下配置一下配置文件

yum -y remove keepalived

复习题

1. 简述Keepalived的主要功能、应用场合

主要功能:提供提高可用性,故障切换和健康检查功能

应用场合:双机热备、LVS群集

2. 简述虚拟路由冗余协议的工作原理

工作原理 :由一台或多台路由器组成一个热备组,通过共用虚拟IP地址对外提供服务;每个热备组同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务

3. 在Keepalived的配置文件中,”vrrp_instance 实例名称 {…}”区段的作用是什么?

 作用:指定VRRP热备参数

4. 使用Keepalived实现双机热备时,主、备服务器的配置存在哪些区别?

 所有配置文件基本相同

区别在于路由器名称,热备状态、优先级

5. 在Keepalived服务器上如何查看添加的VIP地址?

 使用 ip a 命令可以查看

6. 当存在多台从调度器时优先级(priority)的配置规则是什么?

 配置规则:数值越大取得VIP控制权的优先级越高

7. 在Keepalived的配置文件中,”virtual_server VIP 端口 { ... }”区段的作用是什么?

作用:配置虚拟服务器

8. 在Keepalived的配置文件中,通过什么配置项指定群集工作模式?

 使用 lb_kind 工作模式  配置项进行指定   如:lb_kind  DR

9. 在Keepalived的配置文件中real_server IP地址 {...}区段的作用是什么?

 作用:配置真实服务器地址等参数

例:real_server 192.168.1.1:80      说明:web节点的地址:端口

10. 在Linux系统中执行”ipvsadm –ln”、”ipvsadm –lnc”等操作命令的作用是什么?

 ipvsadm –ln:查看节点的状态负载分配情况

ipvsadm –lnc:查看当前ipvs模块中记录的连接

这篇关于七章——Keepalived双机热备(应用——linux防护与群集)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/490641

相关文章

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主