ubuntu2204配置zabbix6.4高可用

news2024/11/26 15:26:28

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[@]}"; do
  ip=$(echo "$node" | awk '{print $1}')
  hostname=$(echo "$node" | awk '{print $2}')

  # 获取当前节点的主机名和 IP
  current_ip=$(hostname -I | awk '{print $1}')
  current_hostname=$(hostname)

  # 检查当前节点与要修改的节点信息是否匹配
  if [[ "$current_ip" == "$ip" && "$current_hostname" != "$hostname" ]]; then
    echo "Updating hostname to $hostname on $current_ip..."
    hostnamectl set-hostname "$hostname"

    if [ $? -eq 0 ]; then
      echo "Hostname updated successfully."
    else
      echo "Failed to update hostname."
    fi

    break
  fi
done

# 遍历节点信息并添加到 hosts 文件
for node in "${NODES[@]}"; do
  ip=$(echo "$node" | awk '{print $1}')
  hostname=$(echo "$node" | awk '{print $2}')

  # 检查 hosts 文件中是否已存在相应的解析
  if grep -q "$ip $hostname" /etc/hosts; then
    echo "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
done

if [[ ! -s ~/.ssh/id_rsa.pub ]]; then
    ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa -q -b 2048
fi

# 检查并安装 sshpass 工具
if ! which sshpass &> /dev/null; then
    echo "sshpass 工具未安装,正在安装 sshpass..."
    sudo apt-get install -y sshpass
fi

# 遍历所有节点进行免密操作
for node in "${NODES[@]}"; do
    ip=$(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.conf
    echo "server $TIME_SERVER iburst maxsources 2" >> /etc/chrony/chrony.conf
    echo "allow $TIME_SERVER_IP" >> /etc/chrony/chrony.conf
    echo "local stratum 10" >> /etc/chrony/chrony.conf
else
    # 配置当前节点同步到目标节点
    sed -i '20,23s/^/#/g' /etc/chrony/chrony.conf
    echo "pool $TIME_SERVER iburst maxsources 2" >> /etc/chrony/chrony.conf
fi

# 重启并启用 chrony 服务
systemctl restart chronyd
systemctl enable chronyd

echo "###############################################################"
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 keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.154/24
    }
}

backup节点

 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_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 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:d1:04:39 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.200.152/24 brd 192.168.200.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.200.154/24 scope global secondary ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fed1:439/64 scope link
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:d1:04:43 brd ff:ff:ff:ff:ff:ff
    altname enp2s2
    inet6 fe80::20c:29ff:fed1:443/64 scope link
       valid_lft forever preferred_lft forever
root@master:~#

配置haproxy

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

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

apt install haproxy -y
vim /etc/sysctl.d/haproxy.conf

net.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 = utf8

wsrep_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_cluster
  bind 192.168.200.154:3306
  balance  source
  mode    tcp
  server controller01 192.168.200.155:3306 check inter 2000 rise 2 fall 5
  server controller02 192.168.200.156:3306 check inter 2000 rise 2 fall 5
  server 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.10

Copyright (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 Access
   1. cluazsrgj0001oylpu1wq6lg9 zabbix01                  192.168.200.158:10051          standby     3s
   2. cluazssxi0001yklqemtz54ji zabbix02                  192.168.200.159:10051          standby     0s
   3. 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 Access
   1. cluazsrgj0001oylpu1wq6lg9 zabbix01                  192.168.200.158:10051          standby     2s
   2. cluazssxi0001yklqemtz54ji zabbix02                  192.168.200.159:10051          active      4s
   3. cluazsurh0001dplr22qvt91j zabbix03                  192.168.200.160:10051          standby     9s
root@zabbix02:~#

master,node配置haproxy文件

cat >> /etc/haproxy/haproxy.cfg << eof

listen zabbix_cluster
  bind 192.168.200.154:81
  balance source
  mode tcp
  server zabbix01 192.168.200.158:80 check inter 2000 rise 2 fall 5
  server zabbix02 192.168.200.159:80 check inter 2000 rise 2 fall 5
  server 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-proxy01

DBPassword=000000

Server=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.160

Hostname=agent01-master

Server=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.coloradmin.cn/o/1557215.html

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

相关文章

学生成绩管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 管理员功…

创建第一个51文件

1.找一个文件目录创建一个main.c 比如我的 F:\my_project\project_of_51\0.first_of_51 什么你不会&#xff1f; 先把这里的文件扩展名打开; 再创建一个文本文件&#xff0c;重新命名为main.c // 修改.c 后弹出一个确认修改的框&#xff0c;选确认即可 2.kei操作: 1&#xf…

腾讯云2核4G5M云服务器性能评测,不买后悔

腾讯云轻量应用服务器2核4G5M配置性能测评&#xff0c;腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;并发数10&#xff0c;支持每天5000IP人数访问&#xff0c;腾讯云百科txybk.com整理2核4G服务器支持多少人同时在线&#xff1f;并发数测试、CPU性能、内存性能、…

LATTICE进阶篇DDR2--(0)获取ddr2 IP核

前言 想要仿真lattice的DDR2由来已久&#xff0c;但苦于对其了解甚少&#xff0c;在查阅过很多资料后&#xff0c;终于对这个IP核的仿真有了一些了解。 现做一些总结&#xff0c;以备不时之需&#xff0c;也让有需要的朋友&#xff0c;少走一些弯路。 环境&#xff1a;win10…

appium 自动化测试之知乎Android客户端

接下来我们研究一下测试知乎Android客户端。自行下载 配置目录如下&#xff1a;把知乎客户端命名为zhihu.apk 编写基于java testng的测试用例&#xff1a; 由于本人是熟悉selenium webdriver&#xff0c;所以在Android对象识别时&#xff0c;采用的策略和selenium webdriver …

python基础——文件操作【文件编码、文件的打开与关闭操作、文件读写操作】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python中对于文件的基础操作&#xff1a; 1&#xff0c;文件编码 2&#xff0c;文件的打开与关闭操作 3&#xff0c;文件读写操作 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入…

JavaScript基础练习题之留言板

一、留言板代码实现&#xff1a; <!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head><met…

鸿蒙之路由跳转router

router的使用都是基于Entry修饰的组件。 都是基于resources/base/profile/main-page.json中的路由配置来跳转的 router提供下列的几个方法 1.pushUrl -压栈一层盖一层(在鸿蒙中页面栈支持最大数值是32) 2.replaceUrl会替换当前页面&#xff0c;不管是不是同一个页面&#xf…

如何注册Claude3?解决Claude3无海外手机号接收验证码的问题以及如何订阅Claude Pro

原文链接&#xff1a;如何注册 Claude3&#xff1f;解决 Claude3 无海外手机号接收验证码的问题以及如何订阅 Claude Pro 前言 Claude3已经出来有一段时间了&#xff0c;大家有没有体验过呢&#xff1f;不过从目前来看&#xff0c;Anthropic公司总共推出了3个模型&#xff1…

03---java面试八股文——mybatis-------8题

21、MyBatis实现一对一查询 MyBatis 有两种不同的方式加载关联&#xff1a; 嵌套 Select 查询&#xff1a;通过执行另外一个 SQL 映射语句来加载期望的复杂类型。嵌套结果映射&#xff1a;使用嵌套的结果映射来处理连接结果的重复子集。查看mybatis的关联 MyBatis是一种流行的J…

FME学习之旅---day16

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 【FME-HOW-TO系列】24 拓扑相交 本章还是学习SpatialFilter转换器得用法&#xff0c;主要用到的空间关系是相交&#xff0c;即Filter Intersect Candidate。 首先&#xff0c;添加读模块的相…

ssm框架笔记-maven

html是骨头 css使皮肤 js是你能做的动作 MAVEN 依赖管理&#xff1a;1.声明dependenciys标签 2.maven search3。 版本号提取 3.$引用 3.2依赖传递和冲突 依赖传递指的是当一个模块或库 A 依赖于另一个模块或库 B&#xff0c;而 B 又依赖于模块或库 C&#xff0c;那么 A 会间…

基于SSM的戒烟网站(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的戒烟网站&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMv…

算法打卡day21(开始回溯)

今日任务&#xff1a; 1&#xff09;77.组合 77.组合 题目链接&#xff1a;77. 组合 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;带你学透回溯算法-组合问题&#xff08;对应力扣题目&#xff1a;77…

第一次给开源项目做贡献,我给 Hutool 改了行注释

大家好&#xff0c;我是松柏。 前两天在修 bug 的时候&#xff0c;写了个indexOf的方法。 这个方法是用来获取一段文本中某个字符串第 n 次出现的索引&#xff0c; 由于第一次写这个方法的时候少考虑了一种边界条件&#xff0c;导致最后查出的数据有时候会不符合预期。 我处…

【跟着CHATGPT学习硬件外设 | 03】UART

本文根据博主设计的Prompt由CHATGPT生成&#xff0c;形成极简外设概念。 &#x1f680; 1. 概念揭秘 UART&#xff0c;全称为"Universal Asynchronous Receiver/Transmitter"&#xff08;通用异步收发器&#xff09;&#xff0c;是一种常用的串行通信协议。UART最早…

AI学习-Pandas数据处理分析

文章目录 1. Pandas概述2. Series用法2.1 Series的创建2.2 Series的取值2.3 Series的相关方法 3. DataFrame用法3.1 DataFrame创建3.2 DataFrame取值3.3 DataFrame相关方法 1. Pandas概述 ​ Pandas 是一个开源的数据分析处理库&#xff0c;它应用在数据科学、统计分析、机器学…

2006-2023年2月各地级市城投债详细数据

2006-2023.2各地级市城投债详细数据 1、时间&#xff1a;2006-2023.2 2、来源&#xff1a;深圳证券交易所和上海证券交易所官网、人民银行、证券监督管理委员会等金融监管机构等官网 3、指标&#xff1a;省份、城市、证券代码、证券简称、债券简称、证券全称、债券初始面值单…

应急响应靶机训练-Linux2题解

前言 接上文&#xff0c;应急响应靶机训练Linux2 靶机地址&#xff1a;应急响应靶机-Linux(2) 题解 登录虚拟机&#xff1a; 修改面板密码 提交攻击者IP 答案&#xff1a;192.168.20.1 查看宝塔日志即可 用的net直接是网关 提交攻击者修改的管理员密码(明文) 答案&…

QA:ubuntu22.04.4桌面版虚拟机鼠标丢失的解决方法

前言 在Windows11中的VMWare Workstation17.5.1 Pro上安装了Ubuntu22.04.4&#xff0c;在使用过程中发现&#xff0c;VM虚拟机的鼠标的光标会突然消失&#xff0c;但鼠标其他正常&#xff0c;就是光标不见了&#xff0c;下面是解决办法。 内容 如下图&#xff0c;输入mouse&a…