CHAPTER 2 Web HA集群部署 - Heartbeat

news2024/11/16 12:05:42

Web HA集群部署 - Heartbeat

    • 1. Heartbeat 概述
      • 1.1 Heartbeat主要组成部分
    • 2. 环境依赖
      • 2.1 环境及组件软件
      • 2.2 关闭firewalld & selinux
      • 2.3 配置双机互信,SSH密钥登录​​
      • 2.4 同步时间(以主节点时间为准)
      • 2.5 配置域名解析
    • 3 安装软件
      • 3.1 安装基础环境包
      • 3.2 创建用户和组
      • 3.3 组件软件下载
      • 3.4 安装gule
      • 3.5 安装Resource Agents
      • 3.6 安装HeartBeat
      • 3.7 配置网卡支持插件文件
    • 4 配置heartbeat
      • 4.1 配置ha.cf配置文件
      • 4.2 配置authkeys配置文件
      • 4.3 配置haresources配置文件
      • 4.4 从节点上准备配置文件
      • 4.5 安装httpd服务
      • 4.6 启动heartbeat服务
    • 5 验证
      • 5.1 关闭主节点
      • 5.2 使用自带的脚本切换主备节点
    • 6 总结

1. Heartbeat 概述

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。通过Heartbeat我们可以实现双机热备,以实现服务的持续性。

1.1 Heartbeat主要组成部分

Heartbeat最核心的功能是心跳监测部分和资源接管部分.心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务.Heartbea是基于主机名来切换节点,通过字符串加密来认证两台主机连接,与keepalived不同是它可以基于脚本资源切换,文件共享,是通过tcp协议对资源切换.

2. 环境依赖

2.1 环境及组件软件

  1. 服务器环境:
    node1:192.168.71.183
    node2:192.168.71.253
    漂移Vip:192.168.71.254(即我们访问服务的ip)
  2. 服务:apache
  3. 系统版本:CentOS Linux release 7.9.2009 (Core)

具体的实施工作在本章第三小节

2.2 关闭firewalld & selinux

关闭firewalld & selinux

[root@heartbeat-master ~]# systemctl stop firewalld
[root@heartbeat-master ~]# setenforce 0 #此为临时关闭
setenforce: SELinux is disabled
[root@heartbeat-master ~]# sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/sysconfig/selinux #此为永久关闭,下次重启机器后生效 

2.3 配置双机互信,SSH密钥登录​​

主从节点均要配置双机互信

[root@node2 ~]# ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa
[root@node2 ~]# ssh-copy-id root@192.168.71.183
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.71.183's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.71.183'"
and check to make sure that only the key(s) you wanted were added.

[root@node2 ~]# ssh root@192.168.71.183
Last login: Wed Mar  1 03:50:06 2023 from 192.168.20.252
[root@node1 ~]# exit

2.4 同步时间(以主节点时间为准)

所有节点安装ntp,可以选择任何一台机器当ntp时间服务器,其他的节点当时间服务器的客户端,同步服务器时间
这里我们选择node1作为时间服务器

① 所有节点安装ntp服务

[root@node1 ~]# yum install -y ntp

② node1服务器配置/etc/ntp.conf

#server 0.centos.pool.ntp.org iburst				#注释内容
#server 1.centos.pool.ntp.org iburst				#注释内容
#server 2.centos.pool.ntp.org iburst				#注释内容
#server 3.centos.pool.ntp.org iburst				#注释内容
server 127.127.1.0									#新增内容
fudge  127.127.1.0 stratum 10						#新增内容

③ node1服务器启动ntpd服务

[root@node1 ~]# systemctl start ntpd
[root@node1 ~]# systemctl status ntpd
[root@node1 ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

④ 其他节点

[root@node2 ~]# ntpdate 192.168.71.183
 1 Mar 04:08:35 ntpdate[16984]: step time server 192.168.71.183 offset -9.393691 sec
[root@node2 ~]# date
Wed Mar  1 04:08:40 EST 2023

2.5 配置域名解析

所有节点配置域名解析

[root@node2 ~]# tail -2 /etc/hosts
192.168.71.183 node1
192.168.71.253 node2
192.168.71.254 apache.org
[root@node2 ~]# ping node2
PING node2 (192.168.71.253) 56(84) bytes of data.
64 bytes from node2 (192.168.71.253): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from node2 (192.168.71.253): icmp_seq=2 ttl=64 time=0.031 ms

3 安装软件

本节的安装及配置的内容,在所有节点都需要操作

3.1 安装基础环境包

yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc -y

3.2 创建用户和组

[root@node2 ha]# groupadd haclient
[root@node2 ha]# useradd -g haclient hacluster
[root@node2 ha]# tail -1 /etc/passwd
hacluster:x:1017:1017::/home/hacluster:/bin/bash
[root@node2 ha]# tail -1 /etc/group
haclient:x:1017:

3.3 组件软件下载

官网下载地址 http://www.linux-ha.org/wiki/Downloads

Heartbeat 3.0.6
Cluster Glue 1.0.12
Resource Agents

[root@node2 ~]# wget -O Heartbeat_3.0.6.tar.bz2  http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
--2023-03-01 04:20:57--  http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
Resolving hg.linux-ha.org (hg.linux-ha.org)... 78.142.182.100
Connecting to hg.linux-ha.org (hg.linux-ha.org)|78.142.182.100|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 551953 (539K) [application/x-bzip2]
Saving to: ‘Heartbeat_3.0.6.tar.bz2’

100%[================================================================================================>] 551,953      233KB/s   in 2.3s

2023-03-01 04:21:04 (233 KB/s) - ‘Heartbeat_3.0.6.tar.bz2’ saved [551953/551953]


[root@node2 ~]# wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2   
[root@node2 ~]# wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz   
[root@node1 ha]# ll
total 2492
-rw-r--r--  1 root root 451432 Oct 22  2015 0a7add1d9996.tar.bz2
-rw-r--r--  1 root root 551953 Feb 28 10:54 Heartbeat_3.0.6.tar.bz2
-rw-r--r--  1 root root 617790 Mar  1 04:41 v3.9.6.tar.gz

3.4 安装gule

[root@node1 ~]# tar xf 0a7add1d9996.tar.bz2
[root@node1 ~]# cd Reusable-Cluster-Components-glue--0a7add1d9996/
[root@node1 Reusable-Cluster-Components-glue--0a7add1d9996]#./autogen.sh
[root@node1 Reusable-Cluster-Components-glue--0a7add1d9996]#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@node1 Reusable-Cluster-Components-glue--0a7add1d9996]# make && make install

3.5 安装Resource Agents

[root@node1 ~]# tar xf v3.9.6.tar.gz
[root@node1 ~]# cd resource-agents-3.9.6/
[root@node1 resource-agents-3.9.6]# ./autogen.sh
[root@node1 resource-agents-3.9.6]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@node1 resource-agents-3.9.6]# make && make install

3.6 安装HeartBeat

[root@node1 ~]# tar xf Heartbeat_3.0.6.tar.bz2
[root@node1 ~]# cd Heartbeat-3-0-958e11be8686/
[root@node1 Heartbeat-3-0-958e11be8686]# ./bootstrap
[root@node1 Heartbeat-3-0-958e11be8686]# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
[root@node1 Heartbeat-3-0-958e11be8686]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@node1 Heartbeat-3-0-958e11be8686]# make && make install

3.7 配置网卡支持插件文件

[root@node1 ha]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
mkdir: created directory ‘/usr/local/heartbeat/usr’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf/lib’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/’
[root@node1 ha]# cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

#注意:一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常

[root@node1 ha]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
‘/usr/local/heartbeat/lib/heartbeat/plugins/RAExec/*’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/*’
[root@node1 ha]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
‘/usr/local/heartbeat/lib/heartbeat/plugins/HBauth’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/HBauth’
‘/usr/local/heartbeat/lib/heartbeat/plugins/HBcomm’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/HBcomm’
‘/usr/local/heartbeat/lib/heartbeat/plugins/quorum’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/quorum’

4 配置heartbeat

主节点上配置

#拷贝三个模版配置文件到 /usr/local/heartbeat/etc/ha.d 目录下

[root@node1 ha]# cd Heartbeat-3-0-958e11be8686/
[root@node1 Heartbeat-3-0-958e11be8686]# cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/

4.1 配置ha.cf配置文件

该配置文件是心跳的核心配置

[root@heartbeat-master ~]# vim /usr/local/heartbeat/etc/ha.d/ha.cf

debugfile /var/log/ha-debug #表示调试的日志文件 一般测试建议开启
logfile /var/log/ha-log #表示系统的的日志文件路径
logfacility  local0 #表示使用系统日志与上面只能开启一个
keepalive 2 #主备之间的心跳间隔时间单位:s
deadtime 30 #表示如果连接对方30s还无法连接,表示节点死亡需要考虑vip转移
warntime 10 #表示10s时间未收到心跳时发出警告日志
initdead 120 #有时机器启动后需要一段时间网卡才能正常工作 需要预留一定的时间后,再开始判断心跳检测
udpport 694 #多播的udp端口
#baud 19200 #串行端口的波特率
#serial /dev/ttyS0   # Linux #串口的接口名
#serial /dev/cuaa0   # FreeBSD
#serial /dev/cuad0   # FreeBSD 6.x
#serial /dev/cua/a   # Solaris
#bcast eth0      # Linux #传播心跳的广播网卡信息
#bcast eth1 eth2   # Linux
#bcast le0      # Solaris
#bcast le1 le2    # Solaris
#mcast eth0 225.0.0.1 694 1 0 #多播传送心跳的网卡 多播组 端口 跃点数 是否回环内传送
ucast ens33 192.168.71.253 #设置单播心跳,设置对方的ip地址,此处使用单播
auto_failback on #表示如果主机停止后,从机接管设置为on当主机从新启动后,主机立即接管vip off从机不会释放vip给主机
node  node1 #配置主从的节点信息,要与uname -n保持一致
node  node2
#############################################
#使用ping模式 有时当主机挂掉或者heartbeat挂掉后vip才会转移 有时出现某个进程挂掉 切换需要使用脚本
#ping模式用于测试 如果网卡ping不同 某个主机 就认为当前断网 需要转移vip
#respawn root  /usr/local/heartbeat/libexec/heartbeat/ipfail 表示当ping不通时 自动调用 ipfail这个脚本
#apiauth ipfail gid=haclient uid=hacluster 表示有权限操作ipfail脚本的组和用户
############################################
ping 192.168.71.254
#ping组的所有主机
#ping_group group1 10.10.10.254 10.10.10.253
#respawn userid /path/name/to/run
#指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。
#respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster

4.2 配置authkeys配置文件

该文件表示发送心跳时 机器用于验证的key的hash算法,节点之间必须配置成一致的密码

[root@node1 ha]# cat /usr/local/heartbeat/etc/ha.d/authkeys
...
#
auth 2										#表示使用id为2的验证 下边需要定义一个2的验证算法
#1 crc
2 sha1 1a2b3c								#id为2的验证加密为sha1,并添加密码
#3 md5 Hello!
[root@node1 ha]# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys	#更改权限为600

4.3 配置haresources配置文件

该文件表示资源的管理,如果是主机,当主机启动后自动加载该文件中配置的所有启动资源,资源脚本默认在haresources同级目录下的resource.d目录下

指定节点主机名,和VIP地址,以双冒号分隔资源,此处以apache为例进行配置

[root@node1 ha]# tail -1 /usr/local/heartbeat/etc/ha.d/haresources
node1 192.168.71.254 apache::/etc/httpd/conf/httpd.conf

4.4 从节点上准备配置文件

拷贝三个配置好的文件到node2上,只需修改ha.cf配置文件中的单播地址为对方地址即可(ucast ens33 192.168.71.183)。

[root@node2 ha.d]# scp root@192.168.71.183:/usr/local/heartbeat/etc/ha.d/authkeys  .
authkeys                                                                                                100%  647   608.9KB/s   00:00
[root@node2 ha.d]# scp root@192.168.71.183:/usr/local/heartbeat/etc/ha.d/ha.cf  .
ha.cf                                                                                                   100%   10KB 787.7KB/s   00:00
[root@node2 ha.d]# scp root@192.168.71.183:/usr/local/heartbeat/etc/ha.d/haresources  .
haresources                                                                                             100% 5955     4.1MB/s   00:00
[root@node2 ha.d]# ll
total 40
-rw------- 1 root root   647 Mar  1 08:26 authkeys
-rw-r--r-- 1 root root 10496 Mar  1 08:27 ha.cf
-rwxr-xr-x 1 root root   745 Mar  1 05:29 harc
-rw-r--r-- 1 root root  5955 Mar  1 08:27 haresources
drwxr-xr-x 2 root root   101 Mar  1 05:29 rc.d
-rw-r--r-- 1 root root   692 Mar  1 05:29 README.config
drwxr-xr-x 2 root root  4096 Mar  1 05:29 resource.d
-rw-r--r-- 1 root root  2112 Mar  1 05:28 shellfuncs
[root@node2 ha.d]# grep ucast  ha.cf
#       of nodes listed {"node ...} one of {serial, bcast, mcast, or ucast},
#       What UDP port to use for bcast/ucast communication?
#       ucast [dev] [peer-ip-addr]
ucast ens33 192.168.71.183

4.5 安装httpd服务

在每个节点上安装httpd服务并测试,以主节点为例

[root@node1 ~]#  yum install httpd
[root@node1 ~]#  echo "Welcome to svr 183." >>/var/www/html/index.html
[root@node1 ~]#  systemctl start httpd
[root@node1 ~]#  curl 127.0.0.1:88
Welcome to svr 183.

此处笔者服务器由于端口冲突,修改为88

测试httpd服务正常后关闭httpd服务并关闭自启动

[root@node1 ~]#  systemctl stop httpd
[root@node1 ~]#  systemctl disable httpd

4.6 启动heartbeat服务

启动每个节点上heartbeat服务

[root@node2 ha.d]# systemctl enable heartbeat
Created symlink from /etc/systemd/system/multi-user.target.wants/heartbeat.service to /usr/lib/systemd/system/heartbeat.service.
[root@node2 ha.d]# systemctl start heartbeat
[root@node2 ha.d]# systemctl status heartbeat
● heartbeat.service - Heartbeat High Availability Cluster Communication and Membership
   Loaded: loaded (/usr/lib/systemd/system/heartbeat.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-03-01 08:51:29 EST; 11s ago
 Main PID: 39209 (heartbeat)
 ...

5 验证

我们访问192.168.71.254:88
在这里插入图片描述

5.1 关闭主节点

关闭主节点后,刷新网页,可以看到服务是由从节点提供的
在这里插入图片描述
当我们再次开启主节点服务器,服务又会回到主节点提供

对于我们访问的漂移ip,会因为主节点的上下线,在主从节点间自动切换

[root@node1 ~]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ff
    inet 192.168.71.183/24 brd 192.168.71.255 scope global noprefixroute dynamic ens33
       valid_lft 86347sec preferred_lft 86347sec
    inet 192.168.71.254/24 brd 192.168.71.255 scope global secondary ens33:1
       valid_lft forever preferred_lft forever
    inet6 fe80::3872:4f8b:dbfc:1aa2/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
...

5.2 使用自带的脚本切换主备节点

主节点

[root@node1 ~]# /usr/local/heartbeat/share/heartbeat/hb_standby
Going standby [all].
[root@node1 ~]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ff
    inet 192.168.71.183/24 brd 192.168.71.255 scope global noprefixroute dynamic ens33
       valid_lft 86137sec preferred_lft 86137sec
    inet6 fe80::3872:4f8b:dbfc:1aa2/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
...

从节点

[root@node2 ~]# ip a
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:0c:29:09:d2:72 brd ff:ff:ff:ff:ff:ff
    inet 192.168.71.253/24 brd 192.168.71.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.71.254/24 brd 192.168.71.255 scope global secondary ens33:1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe09:d272/64 scope link
       valid_lft forever preferred_lft forever
...

6 总结

整个集群通过vip提供对外服务,当主节点出现异常的时候,能够自动在从节点启动并提供服务,实现了高可用性。
我们可以部署zabbix进行监控服务器和服务的状况,并通过其他手段进行通知运维人员

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

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

相关文章

你有“ChatGPT综合征”吗:想搞钱,或是失业焦虑?

最近互联网圈里有一个“顶流”&#xff0c;ChatGPT上线仅5天&#xff0c;注册用户数就突破100万&#xff0c;今年2月的月活跃用户已经突破了1亿。ChatGPT的热度有增无减&#xff0c;过不了多久&#xff0c;ChatGPT这个词就会从一线城市的写字楼席卷到农村老家的饭桌上。 互联网…

自动化测试难点案例分析,其实自动化你用错方向还不如不用

随着国内企业软件开发及测试水平的提升&#xff0c;许多企业开始尝试开展自动化测试的应用&#xff0c;以提高测试效率和测试质量。虽然在国外自动化测试工具应用已经很普遍&#xff0c;但国内许多企业对于软件自动化测试的理解还停留在表面上&#xff0c;没有深入的理解到企业…

SpringMVC的常用组件和工作流程及部分注解解析

一丶SpringMVC常用的组件 1.前端控制器DispatcherServlet 作用&#xff1a;统一处理请求和响应。除此之外还是整个流程控制的中心&#xff0c;由 DispatcherServlet 来调用其他组件&#xff0c;处理用户的请求 接收请求&#xff0c;响应结果&#xff0c;相当于转发器&#xff…

参考 Promise/A+ 规范和测试用例手写 Promise

前言 这可能是手写promise较清晰的文章之一。 由浅至深逐步分析了原生测试用例&#xff0c;以及相关Promise/A规范。阅读上推荐以疑问章节为切入重点&#xff0c;对比Promise/A规范与ECMAScript规范的内在区别与联系&#xff0c;确定怎样构建异步任务和创建promise实例。然后开…

JavaSE18-面向对象-内部类

文章目录一、局部内部类二、成员内部类三、静态内部类四、匿名内部类一、局部内部类 把类定义在方法中。对象创建格式&#xff1a;直接在定义内部类的方法中创建。如果在该方法外就不能使用该局部内部类了。应用场景&#xff1a;如果需要定义一个在方法中临时使用的类可以使用…

SpringCloud(微服务)学习篇(一)

SpringCloud(微服务)学习篇(一) 1 nacos的下载和配置 1.1 进入官网 nacos官网 1.2 点击nacos➡点击最新稳定版本 1.3 往下翻并点击nacos-server-2.2.0.zip,此时就已经开始下载了 1.4 把下载好的压缩包解压到没有中文路径的目录里面 1.5 修改application.properties文件 1.…

Testlink相关功能使用部分总结

1.首页面&#xff08;普通用户&#xff0c;测试用例创建用户的权限&#xff09; 右上角切换具体的项目&#xff1b;页面上方包含主页、用例、测试执行、测试结果&#xff1b;左侧包含测试项目管理、关键字管理、编辑测试用例、搜索测试用例、每用户创建的测试用例&#xff1b;…

Element UI的基本使用

学习来源&#xff0c;传送门 目录创建vue项目Element UI主要的标签Vue router 来动态创建左侧导航栏为何会发生嵌套menu与router的绑定设置默认展开设置默认打开页面创建vue项目 以管理员身份&#xff0c;在选定目录下&#xff0c;使用vue ui 按照正常配置配好&#xff0c;可…

Linux(ubuntu)系统搭建docker下的LNMP环境

系统环境 系统&#xff1a;Ubuntu 18.04.4 LTS x86_64 管理面板&#xff1a;宝塔面板7.9.8 下载镜像 通过面板下载docker和docker-compose 下载完毕后通过docker->镜像->从仓库拉取拉取镜像ubuntu:20.04 或者通过docker pull ubuntu:20.04拉取镜像 通过docker->容…

代码随想录算法训练营第四十一天 | 01背包问题-二维数组滚动数组,416. 分割等和子集

一、参考资料01背包问题 二维 https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1cg411g7Y6 01背包问题 一维 https://programmercarl.com/%E8%83%8C%E5…

大功率分流电阻器产品阵容进一步扩大,助力大功率应用小型化

全球知名半导体制造商ROHM&#xff08;总部位于日本京都市&#xff09;面向车载、工业设备及白色家电等大功率应用&#xff0c;开发出大功率低阻值分流电阻器“GMR 系列”中额定功率最大的、10W 电阻器“GMR320”。近年来&#xff0c;在车载领域和工业设备领域中&#xff0c;应…

什么是敏捷测试

敏捷 反应快速灵敏。 在敏捷软件开发领域&#xff0c;更注重的以人为核心&#xff0c;迭代&#xff0c;循序渐进的开发方法。相比传统的开发方法&#xff0c;这种方法能更快速的开发&#xff0c;上线&#xff0c;反馈&#xff0c;调整、迭代。以敏捷的姿态去发展产品。 敏捷与…

基于java+swing+mysql员工工资管理系统

基于javaswingmysql员工工资管理系统一、系统介绍二、功能展示1.用户登陆2.员工主要功能3.管理员主要功能三、系统实现1.StudentFrame .java四、其它1.其他系统实现2.获取源码一、系统介绍 该项目功能相对完善&#xff0c;有管理员和普通用户两个角色&#xff0c;分别实现了一…

磷脂酰丝氨酸的作用;CAS:383907-32-2;磷脂酰丝氨酸(phosphatidylserine,PS)

磷脂酰丝氨酸&#xff08;phosphatidylserine&#xff0c;PS&#xff09;又称丝氨酸磷脂&#xff0c;二酰甘油酰磷酸丝氨酸&#xff0c;简称PS&#xff0c;是一类普遍存在的磷脂&#xff0c;通常位于细胞膜的内层&#xff0c;磷酯化合物中的磷酸甘油酯类&#xff0c;是细胞膜组…

数字化时代,企业如何通过技术改造传统客户服务模式

B端产品要从流量思维到客户思维上转变&#xff0c;良好的客户服务能够让B端企业走的越远走的越多&#xff0c;当然&#xff0c;对于所有产品或者企业来说&#xff0c;也唯有客户服务才是走的更远更久的保证&#xff0c;优秀的客户服务团队是企业的潜在优质财富。 搭建客服团队…

ATTO 647N-NHS ester,ATTO 647N SE,ATTO 647N NHS酯,适用于单分子检测应用

基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;N/A中文名&#xff1a;ATTO 647N-琥珀酰亚胺酯&#xff0c;ATTO 647N-活性酯&#xff0c;ATTO 647N NHS酯英文名&#xff1a;ATTO 647 N-NHS&#xff0c;ATTO647N-NHS&#xff0c;ATTO 64…

为什么转行IT行业都会选择学习Python?

现在学习Python的人越来越多了&#xff0c;很多人都疑惑为什么这么多人转行IT都会选择学Python?为什么学Python要参加Python培训班呢?接下来蛋糕为大家答疑解惑一下吧。 虽然Python已经非常普及&#xff0c;但是大部分的大学都还没有开设Python课程&#xff0c;如果想要学习…

XGBoost学习-应用案例

文章目录一、过拟合&#xff1a;剪枝参数与回归模型调参二、XGBoost模型的保存和调用使用Joblib保存和调用模型三、分类案例&#xff1a;XGB中的样本不均衡问题四、 XGBoost类中的其他参数和功能总结一、过拟合&#xff1a;剪枝参数与回归模型调参 class xgboost.XGBRegressor…

2023前端vue面试题(边面边更)

Vue中key的作用 vue 中 key 值的作用可以分为两种情况来考虑&#xff1a; 第一种情况是 v-if 中使用 key。由于 Vue 会尽可能高效地渲染元素&#xff0c;通常会复用已有元素而不是从头开始渲染。因此当使用 v-if 来实现元素切换的时候&#xff0c;如果切换前后含有相同类型的…

只用最适合的 | 主流 .NET 报表控件全面对比

随着 .NET 平台的出现&#xff0c;报表相关的开发控件随着而来&#xff0c;已经有若干成熟的产品可供开发人员使用&#xff0c;本文旨在通过从不同维度对比目前最流行的3款 .NET报表控件&#xff1a;FastReport、Stimulsoft、水晶报表&#xff0c;给所有报表开发人员在做产品选…