ubuntu2204配置zabbix6.4高可用

news/2024/7/27 12:20:01/文章来源:https://blog.csdn.net/m0_56363537/article/details/137056835

zabbix6.4-HA

    • 配置keepalived
    • 配置haproxy
    • 数据库高可用
    • 配置zabbix-server
    • 配置proxy
    • 配置客户端agent

本实验VMware搭建zabbix6.4高可用集群,搭配haproxy+keepalived。

master,node节点搭建haproxy+keepalibed主备并配置vip地址

三台控制节点搭建数据库高可用

三台zabbix节点搭建zaabix-server高可用

节点IP配置
master192.168.200.1522C_4V_100G
node192.168.200.1532C_4V_100G
VIP192.168.200.154虚拟ip
controller01192.168.200.1552C_4V_100G
controller02192.168.200.1562C_4V_100G
controller03192.168.200.1572C_4V_100G
zabbix01192.168.200.1582C_4V_100G
zabbix02192.168.200.1592C_4V_100G
zabbix03192.168.200.1602C_4V_100G

Zabbix 是一个企业级开源分布式监控解决方案,可以监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的运行状况和完整性。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。

Zabbix 支持轮询和捕获。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于网络的前端确保可以从任何位置评估您的网络状态和服务器的运行状况。如果配置正确,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。对于拥有少量服务器的小型组织和拥有大量服务器的大公司来说同样如此。

所有系统环境初始化(全部节点执行)

#!/bin/bash# 定义节点信息
NODES=("192.168.200.152 master root" "192.168.200.153 node root" "192.168.200.155 controller01 root" "192.168.200.156 controller02 root" "192.168.200.157 controller03 root" "192.168.200.158 zabbix01 root" "192.168.200.159 zabbix02 root" "192.168.200.160 zabbix03 root")# 定义当前节点的密码(默认集群统一密码)
HOST_PASS="000000"# 时间同步的目标节点
TIME_SERVER=zabbix01# 时间同步的地址段
TIME_SERVER_IP=192.160.200.0/24# 欢迎界面
cat > /etc/motd <<EOF#################################    Welcome  to  zabbix       #################################
EOF# 修改主机名
for node in "${NODES[@]}"; doip=$(echo "$node" | awk '{print $1}')hostname=$(echo "$node" | awk '{print $2}')# 获取当前节点的主机名和 IPcurrent_ip=$(hostname -I | awk '{print $1}')current_hostname=$(hostname)# 检查当前节点与要修改的节点信息是否匹配if [[ "$current_ip" == "$ip" && "$current_hostname" != "$hostname" ]]; thenecho "Updating hostname to $hostname on $current_ip..."hostnamectl set-hostname "$hostname"if [ $? -eq 0 ]; thenecho "Hostname updated successfully."elseecho "Failed to update hostname."fibreakfi
done# 遍历节点信息并添加到 hosts 文件
for node in "${NODES[@]}"; doip=$(echo "$node" | awk '{print $1}')hostname=$(echo "$node" | awk '{print $2}')# 检查 hosts 文件中是否已存在相应的解析if grep -q "$ip $hostname" /etc/hosts; thenecho "Host entry for $hostname already exists in /etc/hosts."else# 添加节点的解析条目到 hosts 文件sudo sh -c "echo '$ip $hostname' >> /etc/hosts"echo "Added host entry for $hostname in /etc/hosts."fi
doneif [[ ! -s ~/.ssh/id_rsa.pub ]]; thenssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa -q -b 2048
fi# 检查并安装 sshpass 工具
if ! which sshpass &> /dev/null; thenecho "sshpass 工具未安装,正在安装 sshpass..."sudo apt-get install -y sshpass
fi# 遍历所有节点进行免密操作
for node in "${NODES[@]}"; doip=$(echo "$node" | awk '{print $1}')hostname=$(echo "$node" | awk '{print $2}')user=$(echo "$node" | awk '{print $3}')# 使用 sshpass 提供密码,并自动确认密钥sshpass -p "$HOST_PASS" ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub "$user@$hostname"
done# 时间同步
apt install -y chrony
if [[ $TIME_SERVER_IP == *$(hostname -I)* ]]; then# 配置当前节点为时间同步源sed -i '20,23s/^/#/g' /etc/chrony/chrony.confecho "server $TIME_SERVER iburst maxsources 2" >> /etc/chrony/chrony.confecho "allow $TIME_SERVER_IP" >> /etc/chrony/chrony.confecho "local stratum 10" >> /etc/chrony/chrony.conf
else# 配置当前节点同步到目标节点sed -i '20,23s/^/#/g' /etc/chrony/chrony.confecho "pool $TIME_SERVER iburst maxsources 2" >> /etc/chrony/chrony.conf
fi# 重启并启用 chrony 服务
systemctl restart chronyd
systemctl enable chronydecho "###############################################################"
echo "#################      集群初始化成功     #####################"
echo "###############################################################"

任一节点查看

root@master:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 huhy# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.200.152 master
192.168.200.153 node
192.168.200.154 VIP
192.168.200.155 controller01
192.168.200.156 controller02
192.168.200.157 controller03
192.168.200.158 zabbix01
192.168.200.159 zabbix02
192.168.200.160 zabbix03

配置keepalived

Keepalived 是一个功能强大且易于使用的工具,可用于构建高可用性和可靠性的网络架构,保障服务的连续性和稳定性。它被广泛应用于各种网络环境中,特别是用于提供网络服务的关键应用场景。
mastere,node双节点安装,这里双节点使用抢占模式(如果需要快速故障转移和服务恢复,则可以选择抢占模式;如果希望减少不必要的 IP 地址切换和服务中断,则可以选择非抢占模式。

apt install keepalived -y

配置抢占模式,master节点

 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.154/24}
}

backup节点

 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.154/24}
}

双节点重启

systemctl restart keepalived

验证查看虚拟ip应在master节点上

root@master:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/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 foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:d1:04:39 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.200.152/24 brd 192.168.200.255 scope global ens33valid_lft forever preferred_lft foreverinet 192.168.200.154/24 scope global secondary ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fed1:439/64 scope linkvalid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:d1:04:43 brd ff:ff:ff:ff:ff:ffaltname enp2s2inet6 fe80::20c:29ff:fed1:443/64 scope linkvalid_lft forever preferred_lft forever
root@master:~#

配置haproxy

HAProxy 是一个功能强大且灵活的负载均衡器,可以帮助构建高性能、高可用性的应用架构,并提供了丰富的功能来应对不同的网络场景和需求。感兴趣可去官网

master,node双节点配置haproxy,只要保持双节点的haproxy配置相同,两台节点的haproxy就能负载均衡

apt install haproxy -y
vim /etc/sysctl.d/haproxy.confnet.ipv4.ip_nonlocal_bind=1
sysctl --system
systemctl restart haproxy

数据库高可用

采用galera方式,三台controller节点安装

apt install -y mariadb-server

三节点停止数据库

systemctl stop mariadb

三台节点修改配置文件

vim /etc/mysql/mariadb.conf.d/99-zabbix.cnf
[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_address = "gcomm://controller01,controller02,controller03"
default_storage_engine = InnoDB
binlog_format = row
innodb_autoinc_lock_mode = 2

在一个节点上启动Galera(默认01)

 galera_new_cluster

其它两个节点重启数据库

systemctl restart mariadb

设置密码并查看验证

mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '000000';"
root@controller01:~# mysql -uroot -p000000 -e "show status like 'wsrep_cluster_size';"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
root@controller01:~#

任一节点配置zabbix数据库和用户

mysql -uroot -p000000 -e "create database zabbix character set utf8mb4 collate utf8mb4_bin;"
mysql -uroot -p000000 -e "create user zabbix@localhost identified by '000000';"
mysql -uroot -p000000 -e "CREATE USER 'zabbix'@'%' IDENTIFIED BY '000000';"
mysql -uroot -p000000 -e "grant all privileges on zabbix.* to zabbix@localhost;"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%';"
mysql -uroot -p000000 -e "set global log_bin_trust_function_creators = 1;"
#设置为 1 时,MySQL 将信任函数的创建者,允许任何用户创建函数,而不受 SUPER 权限或 CREATE ROUTINE 
#权限的限制。这样可以方便一些用户在没有超级用户权限的情况下创建和使用函数。

配置haproxy,master,node节点文件追加以下内容

cat >> /etc/haproxy/haproxy.cfg << eof
listen openstack_mariadb_galera_clusterbind 192.168.200.154:3306balance  sourcemode    tcpserver controller01 192.168.200.155:3306 check inter 2000 rise 2 fall 5server controller02 192.168.200.156:3306 check inter 2000 rise 2 fall 5server controller03 192.168.200.157:3306 check inter 2000 rise 2 fall 5
eof

双节点重启haproxy

systemctl restart haproxy

配置zabbix-server

安装zabbix仓库,三台zabbix节点执行

wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update

三台节点安装Zabbix server,Web前端,agent

apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2 zabbix-agent2-plugin-* -y

任一zabbix节点测试访问远程zabbix用户,注意此时使用vip地址访问数据库集群

root@zabbix01:~# mysql -h vip -uzabbix -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 29677
Server version: 5.5.5-10.11.6-MariaDB-0ubuntu0.23.10.2 Ubuntu 23.10Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

任一zabbix节点导入初始架构和数据,系统将提示输入新创建的密码(默认000000)

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix -h vip

使用01节点初始化

root@zabbix01:~# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix -h vip
Enter password:
root@zabbix01:~#

zabbix-serverHA配置,启动原生HA模式,官网介绍

服务器配置中需要两个参数才能将 Zabbix 服务器作为集群节点启动:
必须为将成为 HA 集群节点的每个 Zabbix 服务器指定HANodeName参数。
zabbix-node-01这是服务器将在代理和代理配置中引用的唯一节点标识符(例如)。如果不指定HANodeName,则服务器将以独立模式启动。
必须为每个节点指定NodeAddress参数。
Zabbix 前端将使用 NodeAddress 参数(地址:端口)连接到活动服务器节点。 NodeAddress 必须与相应 Zabbix 服务器的 IP 或 FQDN 名称匹配。
更改配置文件后重新启动所有 Zabbix 服务器。它们现在将作为集群节点启动。服务器的新状态可以在报告→系统信息中查看,也可以通过运行:

Zabbix server 支持高可用性(HA)集群是一个可选择的解决方案。本地HA解决方案被设计为易于使用,它可以跨站点工作,并且对Zabbix识别的数据库没有特定的要求。用户可以自由地使用本地Zabbix HA解决方案或第三方HA解决方案,这取决于什么最适合其环境中的高可用性需求。
该解决方案由多个zabbix_server实例或节点组成。
每一个节点: - 单独配置 - 使用相同的数据库 - 可能有几种模式: active, standby, unavailable, stopped
一次只能有一个节点处于活动状态(工作)。 备节点只运行一个进程——HA管理器。备用节点不进行数据收集、处理或其他常规server活动; 它不监听端口; 它们拥有最少的数据库连接。
主节点和备节点每5秒更新一次上次访问时间。每个备节点监控主节点的最后一次访问时间。如果主节点的最后一次访问时间超过了“故障转移延迟”秒,备用节点将自己切换为主节点,并将“不可用”状态分配给先前的主节点。
主节点监视自己的数据库连接—如果丢失超过“故障转移延迟-5”秒,它必须停止所有处理并切换到备用模式。主节点还监视备用节点的状态——如果备用节点的最后访问时间超过了“故障转移延迟”秒,备用节点将被分配为“不可用”状态。

zabbix三台节点配置server.conf文件参数官网详解:

vim /etc/zabbix/zabbix_server.conf
#默认localhost,此处填写为远程的数据库集群,使用vip地址
DBHost=192.168.200.154
#使用自己设置的密码
DBPassword=000000#注意修改每个节点对应的主机名和ip,文件末尾就是高可用介绍
HANodeName=zabbix01
NodeAddress=192.168.200.158:10051

三台节点启动Zabbix server和agent进程

systemctl enable zabbix-server zabbix-agent2 apache2
systemctl restart zabbix-server zabbix-agent2 apache2

每个节点查看集群状态

root@zabbix01:~# zabbix_server -R ha_status
Runtime commands can be executed only in active mode
root@zabbix01:~#
root@zabbix02:~# zabbix_server -R ha_status
Runtime commands can be executed only in active mode

活跃节点自动调度在03,01和02成为备用节点

root@zabbix03:~# zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:#  ID                        Name                      Address                        Status      Last Access1. cluazsrgj0001oylpu1wq6lg9 zabbix01                  192.168.200.158:10051          standby     3s2. cluazssxi0001yklqemtz54ji zabbix02                  192.168.200.159:10051          standby     0s3. cluazsurh0001dplr22qvt91j zabbix03                  192.168.200.160:10051          active      2s
root@zabbix03:~#

此时如果停掉或重启03节点,则自动调度在01或者03,测试如下

root@zabbix03:~# systemctl restart zabbix-server
root@zabbix02:~# zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:#  ID                        Name                      Address                        Status      Last Access1. cluazsrgj0001oylpu1wq6lg9 zabbix01                  192.168.200.158:10051          standby     2s2. cluazssxi0001yklqemtz54ji zabbix02                  192.168.200.159:10051          active      4s3. cluazsurh0001dplr22qvt91j zabbix03                  192.168.200.160:10051          standby     9s
root@zabbix02:~#

master,node配置haproxy文件

cat >> /etc/haproxy/haproxy.cfg << eoflisten zabbix_clusterbind 192.168.200.154:81balance sourcemode tcpserver zabbix01 192.168.200.158:80 check inter 2000 rise 2 fall 5server zabbix02 192.168.200.159:80 check inter 2000 rise 2 fall 5server zabbix03 192.168.200.160:80 check inter 2000 rise 2 fall 5
eof
systemctl restart haproxy.service

vip界面访问:http://192.168.200.154:81/zabbix

在这里插入图片描述

设置数据库密码(000000)和连接数据库集群vip地址

在这里插入图片描述

设置用户名huhy,时区和主题默认

在这里插入图片描述

登录(Admin/zabbix)

在这里插入图片描述

设置中文,三台节点安装软件包并重启

apt-get install language-pack-zh* -y
systemctl restart zabbix-server zabbix-agent2 apache2

选择并更新

在这里插入图片描述

web界面查看高可用信息

在这里插入图片描述

配置proxy

Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存,然后传输到 proxy 所属的 Zabbix server。
部署Zabbix proxy 是可选的,但可能非常有利于分担单个 Zabbix server 的负载。 如果只有代理采集数据,则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。
Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。
Zabbix proxy 需要使用独立的数据库。

在zabbix01节点上安装proxy,资源有限这里使用一台机器作为演示

apt install zabbix-proxy-mysql  zabbix-sql-scripts -y

controller01节点创建初始数据库

mysql -uroot -p000000 -e "create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix'@'localhost' IDENTIFIED BY '000000' ;"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY '000000' ;"
mysql -uroot -p000000 -e "GRANT SUPER ON *.* TO 'zabbix'@'localhost';"
mysql -uroot -p000000 -e "GRANT SUPER ON *.* TO 'zabbix'@'%';"

master节点导入初始架构和数据,系统将提示您输入连接的密码。

cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy -h vip

主动代理 (Active Proxy):

在主动代理模式下,Zabbix Proxy 主动连接到 Zabbix 服务器,并定期发送监控数据。
Zabbix 服务器不需要为代理的连接做出响应,因为代理会自行建立连接并发送数据。
这种模式通常用于网络环境中的代理,其中代理可以连接到 Zabbix 服务器,但是 Zabbix 服务器不能直接连接到代理。
被动代理 (Passive Proxy):

在被动代理模式下,Zabbix Proxy 不会主动连接到 Zabbix 服务器,而是等待 Zabbix 服务器发送请求并获取数据。
Zabbix 服务器会定期轮询被动代理,并从代理处获取监控数据。
这种模式通常用于部署在受限网络中的代理,其中代理无法直接连接到 Zabbix 服务器,但是 Zabbix 服务器可以访问代理。
总的来说,主动代理适用于代理可以直接连接到 Zabbix 服务器的场景,而被动代理适用于代理无法直接连接到 Zabbix 服务器的场景,需要 Zabbix 服务器主动获取数据的情况。(默认主动式配置参数ProxyMode=0)

节点编辑配置文件 /etc/zabbix/zabbix_proxy.conf

vim /etc/zabbix/zabbix_proxy.conf
#数据库集群使用vip代理地址
DBHost=192.168.200.154#界面创建的proxy要与这里统一
Hostname=zabbix-proxy01DBPassword=000000Server=192.168.200.158;192.168.200.159;192.168.200.160

重启并开机自启

systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

在这里插入图片描述

等待一会

在这里插入图片描述

配置客户端agent

使用master节点配置为客户端进行监控

apt install -y zabbix-agent2

配置文件

vim /etc/zabbix/zabbix_agent2.conf
ServerActive=192.168.200.158,192.168.200.159,192.168.200.160Hostname=agent01-masterServer=192.168.200.158,192.168.200.159,192.168.200.160
systemctl restart zabbix-agent2
systemctl enable --now zabbix-agent2

使用proxy作为中间代理转发给server

在这里插入图片描述

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

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

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

相关文章

部署项目遇到的各种问题总结

文章目录 前言一、后端问题 jar包运行出现错误宝塔面板使用jdk17二、数据库问题 版本问题三、前端问题 连不上后端总结 前言 在做完项目之后&#xff0c;为了让别人访问到自己的网站&#xff0c;就需要部署前端后端以及数据库&#xff0c;但是在部署的过程中出现了各种问题和困…

【BlossomRPC】接入注册中心

文章目录 NacosZookeeper自研配置中心 RPC项目 配置中心项目 网关项目 这是BlossomRPC项目的最后一篇文章了&#xff0c;接入完毕注册中心&#xff0c;一个完整的RPC框架就设计完成了。 对于项目对注册中心的整合&#xff0c;其实我们只需要再服务启动的时候将ip/port/servic…

安全测试重点思考(上)--AWVS使用/XSS漏洞复现

AWVS使用/XSS漏洞复现 AWVS功能使用Dashboard功能Targets功能Vulnerabilities功能Scans功能Reports功能Discovery功能Users功能Scan ProfilesNetwork Scanner功能Issue Trackers功能WAFs功能Proxy Settings功能 漏洞测试实操DVWA介绍XSS分类反射型xss解决存储型xss解决 安全测试…

手搓 Docker Image Creator(DIC)工具(02):预备知识

此节主要简单介绍一下 Docker、Dockerfile 的基本概念&#xff0c;Dockerfile 对的基本语法&#xff0c;Windows 和 macOS 下 Docker 桌面的安装&#xff0c;Docker 镜像的创建和运行测试等。 1 关于 Docker Docker 是一个开源的应用容器引擎&#xff0c;它允许开发者打包应用…

从“量子”到分子:探索计算的无限可能 | 综述荐读

在2023年年末&#xff0c;两篇划时代的研究报告在《科学》&#xff08;Science&#xff09;杂志上引发了广泛关注。这两篇论文分别来自两个研究小组&#xff0c;它们共同揭示了单氟化钙分子间相互作用的研究成果&#xff0c;成功地在这些分子间创造出了分子量子比特。这一成就不…

C++的字节对齐

什么是字节对齐 参考什么是字节对齐&#xff0c;为什么要对齐? 现代计算机中&#xff0c;内存空间按照字节划分&#xff0c;理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问&#xff0c;这就需要各种类型数据按照一定的规…

基于SpringBoot的在线答疑系统的研究与实现

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大师生的喜爱&#xff0c;也逐渐进入了每个学生的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自…

【数字图像处理】二值图和灰度图的形态学处理

文章目录 形态学处理二值图形态学处理二值图形态学基本算子二值图连通分量提取、区域标记二值图细化算法 灰度图形态学处理灰度图形态学基本算子灰度图形态学梯度灰度图 tophat 算法 形态学处理 二值图形态学处理 二值图形态学基本算子 二值图形态学图像处理通常在目标图像中…

Spring Boot 学习(1)——环境搭建

一只老辣鸟的自我救赎 不科普&#xff0c;简单记录学习过程。 开发环境约束&#xff1a; jdk1.8 Spring Boot 1.5.9 Spring 4.3.13 Maven 3.3.3 Intellij IDEA 2017 【脑瓜灵光的开发环境随意&#xff0c;不灵光尽量按上述约束设置。看了好些教程总…

基于SSM+MySQL的校园在线点餐系统设计与实现(包运行调试)

介绍 SSM&#xff1a;采用主流的SpringMVC、Spring、Mybatis框架构建 layui&#xff1a;Layui是一套开源的 Web UI 解决方案&#xff0c;采用自身经典的模块化规范&#xff0c;并遵循原生 HTML/CSS/JS 的开发方式&#xff0c;常适合网页界面的快速开发 源码论文获取 文章链接…

Docker实例

华子目录 docker实例1.为Ubuntu镜像添加ssh服务2.Docker安装mysql docker实例 1.为Ubuntu镜像添加ssh服务 (1)访问https://hub.docker.com&#xff0c;寻找合适的Ubuntu镜像 (2)拉取Ubuntu镜像 [rootserver ~]# docker pull ubuntu:latest latest: Pulling from library/ub…

VMware虚拟机三种网络模式配置

vmware有三种网络工作模式&#xff1a;Bridged&#xff08;桥接模式&#xff09;、NAT&#xff08;网络地址转换模式&#xff09;、Host-Only&#xff08;仅主机模式&#xff09;。 1. 打开网络编辑器&#xff08;编辑 --> 虚拟网络编辑器&#xff09; 在主机上有VMware Ne…

pytest--python的一种测试框架--pytest初阶

前言 使用pytest去做测试时我们对文件名的命名其实是有规范的&#xff0c;要用test_开头&#xff01;&#xff01;&#xff01; 一、pytest初阶 def test_one():expect1actual1assert expectactual#测试专用语句&#xff1a;assert&#xff0c;识别期望与实际值是否相等这个…

【Node.js】大文件上传

概述 大文件上传通常采用分片上传。如果因为某些原因上传突然中断&#xff0c;解决问题之后可以接着之前的分片上传&#xff0c;而不需要从头开始上传&#xff0c;也就是断点续传。此外还可以利用多个网络连接并行上传多个分片&#xff0c;提高上传速度。 注&#xff1a;前端不…

Linux 著名的sudo、su是什么?怎么用?

一、su 什么是su&#xff1f; su命令&#xff08;简称是&#xff1a;substitute 或者 switch user &#xff09;用于切换到另一个用户&#xff0c;没有指定用户名&#xff0c;则默认情况下将以root用户登录。 为了向后兼容&#xff0c;su默认不改变当前目录&#xff0c;只设…

C++ 中的 vector 的模拟实现【代码纯享】

文章目录 C 中的 vector 模拟实现1. vector 的基本概念2. vector 的基本操作3. vector 的模拟实现4.代码纯享5. 总结 C 中的 vector 模拟实现 在 C 中&#xff0c;vector 是一个非常重要的容器&#xff0c;它提供了动态数组的功能。在本篇博客中&#xff0c;我们将尝试模拟实现…

基于CycleGan开源项目实战图像合成

项目代码及数据链接见文末 没有配对图像能够进行图像生成吗&#xff1f;当然可以&#xff0c;CycleGan不需要配对的数据&#xff0c;例如&#xff0c;只要我们知道马的样子和斑马的样子&#xff0c;我们就能够很轻松的将马转化为斑马。 1.网络结构 传统GAN网络是&#xff0c;我…

src挖掘技巧总结分享

src挖洞技术分享 src推荐刚入门的新手首选公益src如漏洞盒子、补天src&#xff0c;因为漏洞盒子收录范围广&#xff0c;只要是国内的站点都收入&#xff0c;相比其它src平台挖掘难度非常适合新手。后续可以尝试先从一些小的src厂商入手。 首先是熟能生巧&#xff0c;我一开始挖…

java网络编程——网络编程概述及UDP/TCP通信编程的实现

前言&#xff1a; 学习到通信了&#xff0c;整理下相关知识点。打好基础&#xff0c;daydayup!!! 网络编程 网络编程指可以让设备中的程序与网络上其他设备中的程序进行数据交互。 基本的通信架构 基本的通信架构有两种形式&#xff1a;CS架构&#xff08;Client客户端/Server服…

Docker数据卷挂载

一、容器与数据耦合的问题: 数据卷是虚拟的&#xff0c;不真实存在的&#xff0c;它指向文件中的文件夹 &#xff0c;属主机文件系统通过数据卷和容器数据进行联系&#xff0c;你改变我也改变。 解决办法&#xff1a; 对宿主机文件系统内的文件进行修改&#xff0c;会立刻反应…