你是学会了还是学废了:Elasticsearch 7 集群拷贝到其它环境如何重置密码

欢迎您关注我的公众号【尚雷的驿站】


公众号:尚雷的驿站
CSDN :https://blog.csdn.net/shlei5580
墨天轮:https://www.modb.pro/u/2436
PGFans:https://www.pgfans.cn/user/home?userId=4159


image.png

前言

本文描述了将生产ES集群打包拷贝到测试环境,原密码失效重置密码的操作过程。

背景描述

目前运维的一套ES集群近期频频产生告警,如经常出现集群节点掉,节点重新加入集群后,节点间分片重新平衡导致ES服务器负载高,另外也经常出现某个索引由于主分片未分配到任何节点,导致该索引状态为red,长时间难以自动回复,导致应用难以写入ES。

收集了ES日志及JDK GC日志信息,通过长时间多方排查,分析认为当前ES这一问题应该和ES集群所使用的JDK版本有关。当前ES版本为7.12.1,未采用ES自带的OpenJDK版本,因为这套ES服务器上也部署了其它JAVA应用程序,为了方便兼容和方便管理,ES和这些服务器上的JAVA应用使用了相同的 jdk1.8.0_202版本。

JDK 1.8是2015年发布的,已经过去好多年了,目前JDK 都已经发布21版本了,而且根据网上建议,在服务器内存较大的情况,使用G1垃圾回收效率要高于CMS垃圾回收,而当前JDK JVM配置的是CMS垃圾回收方式,ES生产服务器内存是128G。ES 7.12.1默认采用的JDK版本是 AdoptOpenJDK (build 16+36)。

计划对ES JDK版本进行升级,为保险起见,决定使用ES自带的JDK,并将GC垃圾回收方式调整为G1。

Java 8是于2014年3月14号发布。从Java 8开始开发代号已经弃用了,所以从Java 8之后已经没有官方的开发代号了。
Java 8u201/202 是最后一个免费的 Oracle JDK 8 版本,Oracle于 2019-01-15 停止免费商用更新

验证测试

为方便验证验证测试,决定搭建ES集群测试环境,在测试环境仿照生产搭建同版本ES和JDK。将生产ES、JDK、Kibana都打包拷贝到测试环境解压,测试环境目录都和生产相同,并参照生产配置了环境变量。

以上准备完毕,启动了测试环境ES服务器各节点ES应用。 然后在启动Kibana时,却出现了报错,无法正常启动,报错信息如下:

[esuser@xsky-node1 bin]$ ./kibana log   [16:11:56.252] [info][plugins-service] Plugin "osquery" is disabled.log   [16:11:56.351] [warning][config][deprecation] Setting [elasticsearch.username] to "elastic" is deprecated. You should use the "kibana_system" user instead.log   [16:11:56.352] [warning][config][deprecation] Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0."log   [16:11:56.352] [warning][config][deprecation] Setting [monitoring.username] to "elastic" is deprecated. You should use the "kibana_system" user instead.log   [16:11:56.680] [info][plugins-system] Setting up [100] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,banners,code,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,share,newsfeed,mapsLegacy,kibanaLegacy,translations,legacyExport,embeddable,uiActionsEnhanced,expressions,charts,esUiShared,bfetch,data,home,observability,console,consoleExtensions,apmOss,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,visualizations,visTypeVislib,visTypeVega,visTypeTimelion,features,licenseManagement,watcher,canvas,visTypeTagcloud,visTypeTable,visTypeMetric,visTypeMarkdown,tileMap,regionMap,visTypeXy,graph,timelion,dashboard,dashboardEnhanced,visualize,visTypeTimeseries,inputControlVis,discover,discoverEnhanced,savedObjectsManagement,spaces,security,savedObjectsTagging,maps,lens,reporting,lists,encryptedSavedObjects,dataEnhanced,dashboardMode,cloud,upgradeAssistant,snapshotRestore,fleet,indexManagement,rollup,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,beatsManagement,transform,ingestPipelines,eventLog,actions,alerts,triggersActionsUi,stackAlerts,ml,securitySolution,case,infra,monitoring,logstash,apm,uptime]log   [16:11:56.682] [info][plugins][taskManager] TaskManager is identified by the Kibana UUID: 4227be37-8c2a-4580-be72-233bafd4d332log   [16:11:56.909] [warning][config][plugins][security] Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.log   [16:11:56.909] [warning][config][plugins][security] Session cookies will be transmitted over insecure connections. This is not recommended.log   [16:11:56.958] [warning][config][plugins][reporting] 为 xpack.reporting.encryptionKey 生成随机密钥。为防止会话在重启时失效,请在 kibana.yml 中设置 xpack.reporting.encryptionKey 或使用 bin/kibana-encryption-keys 命令。log   [16:11:56.965] [warning][config][plugins][reporting] Chromium 沙盒提供附加保护层,但不受 Linux CentOS 7.9.2009 OS 支持。自动设置“xpack.reporting.capture.browser.chromium.disableSandbox: true”。log   [16:11:56.966] [warning][encryptedSavedObjects][plugins] Saved objects encryption key is not set. This will severely limit Kibana functionality. Please set xpack.encryptedSavedObjects.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.log   [16:11:56.986] [warning][fleet][plugins] Fleet APIs are disabled because the Encrypted Saved Objects plugin is missing encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.log   [16:11:57.054] [warning][actions][actions][plugins] APIs are disabled because the Encrypted Saved Objects plugin is missing encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.log   [16:11:57.066] [warning][alerting][alerts][plugins][plugins] APIs are disabled because the Encrypted Saved Objects plugin is missing encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.log   [16:11:57.177] [info][monitoring][monitoring][plugins] config sourced from: production clusterlog   [16:11:57.398] [info][savedobjects-service] Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations...log   [16:11:57.550] [warning][licensing][plugins] License information could not be obtained from Elasticsearch due to [security_exception] unable to authenticate user [elastic] for REST request [/_xpack?accept_enterprise=true], with { header={ WWW-Authenticate="Basic realm=\"security\" charset=\"UTF-8\"" } } :: {"path":"/_xpack?accept_enterprise=true","statusCode":401,"response":"{\"error\":{\"root_cause\":[{\"type\":\"security_exception\",\"reason\":\"unable to authenticate user [elastic] for REST request [/_xpack?accept_enterprise=true]\",\"header\":{\"WWW-Authenticate\":\"Basic realm=\\\"security\\\" charset=\\\"UTF-8\\\"\"}}],\"type\":\"security_exception\",\"reason\":\"unable to authenticate user [elastic] for REST request [/_xpack?accept_enterprise=true]\",\"header\":{\"WWW-Authenticate\":\"Basic realm=\\\"security\\\" charset=\\\"UTF-8\\\"\"}},\"status\":401}","wwwAuthenticateDirective":"Basic realm=\"security\" charset=\"UTF-8\""} errorlog   [16:11:57.554] [warning][monitoring][monitoring][plugins] X-Pack Monitoring Cluster Alerts will not be available: [security_exception] unable to authenticate user [elastic] for REST request [/_xpack?accept_enterprise=true], with { header={ WWW-Authenticate="Basic realm=\"security\" charset=\"UTF-8\"" } }

尝试通过浏览器访问其中一个ES,使用原来的用户名和密码,发现无法登陆,界面如下所示:

重置密码

根据以上信息,应该是我拷贝ES环境没有拷贝data等相关目录,密码已经发生了改变,而当前生产data和logs目录空间过大,我无法拷贝,决定对当前测试环境ES密码进行重置。于是采用如下方式对ES密码进行重置。

[esuser@xsky-node1 ~]$ cd deploy/elasticsearch-7.12.1-9300/bin/
[esuser@xsky-node1 bin]$ ./elasticsearch-setup-passwords interactive
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_221/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.Failed to determine the health of the cluster running at http://10.110.7.39:9200
Unexpected response code [503] from calling GET http://10.110.7.39:9200/_cluster/health?pretty
Cause: master_not_discovered_exceptionIt is recommended that you resolve the issues with your cluster before running elasticsearch-setup-passwords.
It is very likely that the password changes will fail when run against an unhealthy cluster.Do you want to continue with the password setup process [y/N]ERROR: User cancelled operation[esuser@xsky-node1 bin]$ ./elasticsearch-setup-passwords interactive
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_221/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.Failed to determine the health of the cluster running at http://10.110.7.39:9200
Unexpected response code [503] from calling GET http://10.110.7.39:9200/_cluster/health?pretty
Cause: master_not_discovered_exceptionIt is recommended that you resolve the issues with your cluster before running elasticsearch-setup-passwords.
It is very likely that the password changes will fail when run against an unhealthy cluster.Do you want to continue with the password setup process [y/N]yInitiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]yEnter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana_system]: 
Reenter password for [kibana_system]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: Unexpected response code [503] from calling PUT http://10.110.7.39:9200/_security/user/apm_system/_password?pretty
Cause: Cluster state has not been recovered yet, cannot write to the [null] indexPossible next steps:
* Try running this tool again.
* Try running with the --verbose parameter for additional messages.
* Check the elasticsearch logs for additional error details.
* Use the change password API manually. ERROR: Failed to set password for user [apm_system].

执行上述命令后,发现最后修改命令失败。通过综合分析是因为我虽然将生产ES集群打包拷贝到了测试环境,但ES在初始化集群后无法投票选出主节点,当前ES集群并不是一个真正意义上的集群。 可通过如下办法进行修改,停止所有节点ES进程,然后在其中一个节点elasticsearch.yml里设置 cluster.initial_master_nodes. cluster.initial_master_nodes:后跟的是其中一个node节点名称,参照如下设置:

discovery.zen.ping.unicast.hosts: ["10.110.7.39:9300","10.110.7.39:9301","10.110.7.40:9300","10.110.7.40:9301","10.110.7.41:9300","10.110.7.41:9301","10.110.7.42:9300","10.110.7.42:9301"]
cluster.initial_master_nodes: ["node-7.39-9300"]

然后逐次重启节点,节点重启信息如下所示

- 节点一
[esuser@xsky-node1 config]$ ../bin/elasticsearch
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_221/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
... 省略部分代码
[2024-05-06T17:16:23,283][INFO ][o.e.x.s.s.SecurityIndexManager] [node-7.39-9300] security index does not exist, creating [.security-7] with alias [.security]
[2024-05-06T17:16:23,373][INFO ][o.e.c.m.MetadataCreateIndexService] [node-7.39-9300] [.security-7] creating index, cause [api], templates [], shards [1]/[0]
[2024-05-06T17:16:23,391][INFO ][o.e.c.r.a.AllocationService] [node-7.39-9300] updating number_of_replicas to [1] for indices [.security-7]
[2024-05-06T17:16:24,408][INFO ][o.e.c.r.a.AllocationService] [node-7.39-9300] Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.security-7][0]]]).
[2024-05-06T17:17:52,114][WARN ][o.e.x.s.a.AuthenticationService] [node-7.39-9300] No authentication credential could be extracted using realms [reserved/reserved,native/native11]. Realms [ldap/ldap1] were skipped because they are not permitted on the current license--节点三
[esuser@xsky-node3 bin]$ ./elasticsearch 
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_221/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_221/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
[2024-05-06T17:13:55,404][INFO ][o.e.n.Node               ] [node-7.40-9300] version[7.12.1], pid[609], build[default/tar/3186837139b9c6b6d23c3200870651f10d3343b7/2021-04-20T20:56:39.040728659Z], OS[Linux/3.10.0-1160.83.1.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_211/25.211-b12]
... 省略部分代码
[2024-05-06T17:14:22,605][INFO ][o.e.x.s.a.TokenService   ] [node-7.41-9300] refresh keys
[2024-05-06T17:14:22,935][INFO ][o.e.x.s.a.TokenService   ] [node-7.41-9300] refreshed keys
[2024-05-06T17:14:22,999][INFO ][o.e.l.LicenseService     ] [node-7.41-9300] license [839c87b6-4eea-4e98-908b-a1595ac6561d] mode [basic] - valid
[2024-05-06T17:14:23,001][INFO ][o.e.x.s.s.SecurityStatusChangeListener] [node-7.41-9300] Active license is now [BASIC]; Security is enabled
[2024-05-06T17:14:23,013][WARN ][o.e.x.s.a.AuditTrailService] [node-7.41-9300] Auditing logging is DISABLED because the currently active license [BASIC] does not permit it
[2024-05-06T17:14:23,022][INFO ][o.e.h.AbstractHttpServerTransport] [node-7.41-9300] publish_address {10.110.7.41:9200}, bound_addresses {10.110.7.41:9200}
[2024-05-06T17:14:23,022][INFO ][o.e.n.Node               ] [node-7.41-9300] started

通过以上操作后,重启了各ES节点应用,此时选出了主节点。 然后再次使用elasticsearch-setup-passwords interactive命令修改密码,结果如下所示:

[esuser@xsky-node1 bin]$ ./elasticsearch-setup-passwords interactive
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_221/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y   -- 输入yEnter password for [elastic]:     --设置 ealastic 密码,以下均设置相同密码
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana_system]: 
Reenter password for [kibana_system]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

结果验证

通过浏览器,输入其中一个节点ES信息,IP:端口号,使用ealastic 用户及新设置的密码登录,结果如下:

此时再启动kibana,没有再包上面错误,启动信息如下所示:

{"type":"log","@timestamp":"2024-05-15T16:17:39+08:00","tags":["info","plugins-service"],"pid":24059,"message":"Plugin \"osquery\" is disabled."}
{"type":"log","@timestamp":"2024-05-15T16:17:39+08:00","tags":["warning","config","deprecation"],"pid":24059,"message":"Setting [elasticsearch.username] to \"elastic\" is deprecated. You should use the \"kibana_system\" user instead."}
...... 省略部分代码
{"type":"log","@timestamp":"2024-05-15T16:17:39+08:00","tags":["info","plugins-system"],"pid":24059,"message":"Setting up [100] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,banners,code,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,share,newsfeed,mapsLegacy,kibanaLegacy,translations,legacyExport,embeddable,uiActionsEnhanced,esUiShared,expressions,charts,bfetch,data,home,observability,console,consoleExtensions,apmOss,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,visualizations,visTypeTimelion,features,licenseManagement,watcher,canvas,visTypeVega,visTypeVislib,visTypeTagcloud,visTypeTable,visTypeMetric,visTypeMarkdown,tileMap,regionMap,visTypeXy,graph,timelion,dashboard,dashboardEnhanced,visualize,visTypeTimeseries,inputControlVis,discover,discoverEnhanced,savedObjectsManagement,spaces,eventLog,security,savedObjectsTagging,maps,lens,encryptedSavedObjects,actions,alerts,triggersActionsUi,stackAlerts,reporting,lists,dataEnhanced,dashboardMode,cloud,upgradeAssistant,snapshotRestore,fleet,indexManagement,rollup,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,ml,securitySolution,case,infra,monitoring,logstash,apm,uptime,beatsManagement,transform,ingestPipelines]"}...... 省略部分代码{"type":"log","@timestamp":"2024-05-15T16:17:39+08:00","tags":["warning","plugins","reporting","config"],"pid":24059,"message":"为 xpack.reporting.encryptionKey 生成随机密钥。为防止会话在重启时失效,请在 kibana.yml 中设置 xpack.reporting.encryptionKey 或使用 bin/kibana-encryption-keys 命令。"}
{"type":"log","@timestamp":"2024-05-15T16:17:39+08:00","tags":["warning","plugins","reporting","config"],"pid":24059,"message":"Chromium 沙盒提供附加保护层,但不受 Linux CentOS 7.9.2009 OS 支持。自动设置“xpack.reporting.capture.browser.chromium.disableSandbox: true”。"}Migration completed after 580ms"}
{"type":"log","@timestamp":"2024-05-15T16:17:41+08:00","tags":["info","plugins-system"],"pid":24059,"message":"Starting [100] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,banners,code,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,share,newsfeed,mapsLegacy,kibanaLegacy,translations,legacyExport,embeddable,uiActionsEnhanced,esUiShared,expressions,charts,bfetch,data,home,observability,console,consoleExtensions,apmOss,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,visualizations,visTypeTimelion,features,licenseManagement,watcher,canvas,visTypeVega,visTypeVislib,visTypeTagcloud,visTypeTable,visTypeMetric,visTypeMarkdown,tileMap,regionMap,visTypeXy,graph,timelion,dashboard,dashboardEnhanced,visualize,visTypeTimeseries,inputControlVis,discover,discoverEnhanced,savedObjectsManagement,spaces,eventLog,security,savedObjectsTagging,maps,lens,encryptedSavedObjects,actions,alerts,triggersActionsUi,stackAlerts,reporting,lists,dataEnhanced,dashboardMode,cloud,upgradeAssistant,snapshotRestore,fleet,indexManagement,rollup,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,ml,securitySolution,case,infra,monitoring,logstash,apm,uptime,beatsManagement,transform,ingestPipelines]"}
{"type":"log","@timestamp":"2024-05-15T16:17:42+08:00","tags":["listening","info"],"pid":24059,"message":"Server running at http://10.110.7.39:5601/path/klog"}

总结

通过以上方法重置了ES账号密码,最后将 cluster.initial_master_nodes 注释。再重启ES集群,这样就以后可以灵活选主。 这种修改密码的方式也适合原ES集群密码丢失。我在网上查找ES重置密码时,看到有些博主设置的方式也不一样,所以还是要针对自己的环境灵活进行修改。

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

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

相关文章

知识图谱 | 语义网络写入图形数据库(含jdk和neo4j的安装过程)

Hi,大家好,我是半亩花海。本文主要介绍如何使用 Neo4j 图数据库呈现语义网络,并通过 Python 将语义网络的数据写入数据库。具体步骤包括识别知识中的节点和关系,将其转化为图数据库的节点和边,最后通过代码实现数据的写…

css案例 tab上下滚动,左右滚动

效果图&#xff1a; 完整代码&#xff1a; <template><view class"content"><view class"content-item"><view class"content-title"><h4>美食热搜</h4><ul><li>火鸡面</li><li>糖…

听劝!普通人千万别随意入门网络安全

一、什么是网络安全 网络安全是一种综合性的概念&#xff0c;涵盖了保护计算机系统、网络基础设施和数据免受未经授权的访问、攻击、损害或盗窃的一系列措施和技术。经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”…

图文教程 | 2024年IDEA安装使用、破解教程,JDK简易下载方法

前言 &#x1f4e2;博客主页&#xff1a;程序源⠀-CSDN博客 &#x1f4e2;欢迎点赞&#x1f44d;收藏⭐留言&#x1f4dd;如有错误敬请指正&#xff01; 目录 一、IDEA安装 二、激活 三、JDK安装 四、JDK环境配置 五、验证 一、IDEA安装 进入官网下载&#xff1a; Other…

命令行中,Python 想使用本地环境,但总是显示为Anaconda的虚拟环境

电脑环境 Python 本地环境&#xff08;Python3.9.5&#xff09;Anaconda 虚拟环境&#xff08;Python3.8.8&#xff09; 遇到的问题 在cmd 中&#xff0c;我想在本地环境使用 Python、pip &#xff0c;但它却是一直识别成Anaconda的虚拟环境。 解决方法 环境变量配置中&am…

Go Gin使用JWT实现认证机制

什么是JWT JWT是JSON Web Token的缩写,是一种跨域认证的解决方案。 使用JWT解决什么问题 传统的登录认证的实现,依赖客户端浏览器的cookie和服务器的session,这种实现登录的方式有很大的局限性。 对于部署在单台服务器的应用来说,使用cookie+session登录认证的方案尚…

✅什么是时间轮?

一、问题解析 时间轮算法&#xff08;Time Wheel Algorithm&#xff09;是一种用于处理定时任务和调度的常见算法。 时间轮算法主要需要定义一个时间轮盘&#xff0c;在一个时间轮盘中划分出多个槽位&#xff0c;每个槽位表示一个时间段&#xff0c;这个段可以是秒级、分钟级、…

数据结构(十五)----排序算法(2)

目录 一.选择排序 1.简单选择排序 2.堆排序 •建立大根堆 •基于大根堆进行排序 堆排序算法效率&#xff1a; 堆排序算法稳定性&#xff1a; 3.堆的插入和删除 •在堆中插入新元素 •在堆中删除元素 二.归并排序 归并排序算法效率&#xff1a; 归并排序算法的稳定…

Reverst:基于QUIC协议和HTTP3的反向隧道工具

关于Reverst Reverst是一款功能强大的反向隧道工具&#xff0c;Reverst由一个具备负载均衡功能的反向隧道服务器和一个服务器-客户端库组成&#xff0c;该工具使用Go语言开发&#xff0c;基于QUIC和HTTP/3实现其功能。 关于QUIC和HTTP/3 QUIC&#xff0c;即快速UDP互联网连接…

队列的实现与OJ题目解析

"不是你变优秀了, 那个人就会喜欢你." 文章索引 前言1. 什么是队列2. 队列的实现3. OJ题目解析4. 总结 前言 感情可以培养是个伪命题. 如果有足够多的时间和爱, 就可以让另一个人爱上你的话, 那谁和谁都可以相爱了. 爱情之所以会让人死去活来, 是因为, 答案都写在了…

photoshop(PS)有什么快速提升工作效率的功能?或者实用功能?这里告诉你7条!

1:文件太多&#xff0c;不方便马上找到需要插入元素&#xff08;元素放入PS会发现&#xff0c;位置不知道在哪里&#xff09;&#xff0c;点击需要选中或者搭配的元素&#xff0c;ctrlV就可以快速插入目标/图层元素的位置了&#xff01; 点击当前元素&#xff0c;选中&#xf…

Linux备份---异地

参考文档&#xff1a;Linux环境实现mysql所在服务器定时同步数据文件到备份服务器&#xff08;异地容灾备份场景&#xff09;_mysql异地备份-CSDN博客 通过SSH进行连接&#xff1a; 应用服务器&#xff1a; 通过ssh-keygen -t rsay建立ssh通信的密钥 密钥建立后&#xff0c;…

边缘计算安全有多重要

德迅云安全研究发现边缘安全是对存储或处理在网络边缘的数据的保护。边缘可以用不同的方式定义&#xff0c;但一般来说&#xff0c;它包括企业直接控制之外的任何设备或位置。这可能包括传感器、连接物联网的设备和移动设备。 边缘计算正在彻底改变商业运作方式。这引发了对边缘…

SpringBoot 使用logback(多环境配置)

Logback是由log4j创始人设计的又一个开源日志组件。可用于项目日志功能。官网地址 第1步&#xff1a;添加坐标依赖 <!--logback--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version…

Python 提取PDF表格数据并保存到TXT文本或Excel文件

目录 安装Python库 Python提取PDF表格数据并保存到文本文档 Python提取PDF表格数据并保存到Excel文档 PDF文件常用于存储和共享各种类型的文档&#xff0c;这些文档可能包括大量的数据表格。通过提取这些PDF表格数据&#xff0c;我们可以将其导入到Excel、数据库或统计软件等…

技术架构

一、单机架构 简介&#xff1a;应用服务和数据库服务共用一台服务器 出现原因:出现在互联网早期&#xff0c;访问量比较小&#xff0c;单机足以满足 架构工作原理&#xff1a;以电商为例&#xff0c;可以看到通过应用&#xff08;划分了多个模块&#xff09;和数据库在单个服…

视频智能检测AI智能分析网关V4告警消息推送:公众号消息推送的配置步骤介绍

TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;目前拥有3种型号&#xff08;8路/16路/32路&#xff09;&#xff0c;支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

继承,多态,封装以及对象的打印

前言&#xff1a; 我们都知道Java是一种面向对象的编程语言&#xff0c;面向对象语言的三大特性就是继承&#xff0c;多态&#xff0c;封装&#xff0c;而这些特性正好的Java基础的一个主体内容。在学到这之前&#xff0c;我们肯定已经学习过了类和对象&#xff0c;所以这部分…

光学镜片镀膜上下料设备

在现代化工业生产的浪潮中&#xff0c;智能化、自动化已成为提升生产效率、降低成本的关键所在。特别是在精密制造领域&#xff0c;对于设备的高精度、高效率要求更是严苛。今天向大家推荐一款引领行业潮流的智能设备——富唯智能镀膜上下料设备。 产品介绍 实现功能 单面镀膜…

NGINX SPRING HTTPS证书

服务器&#xff1a;xxx.xxx.xxx.56 客户端器&#xff1a;xxx.xxx.xxx.94##生成服务器证书和密钥容器 keytool -genkey -alias tas-server -keypass 250250 -keyalg RSA -keysize 2048 -validity 3650 -keystore D:\https证书\tas-server.jks -storepass 250250 -dname "C…