做一件代发的网站,网站非法篡改,烟台商机互联做网站吗,做同城信息类网站如何赚钱1. 为什么要在麒麟ARM上折腾这套组合#xff1f; 最近几年#xff0c;国产化替代的浪潮越来越猛#xff0c;很多朋友的公司或单位都开始把业务往国产的软硬件平台上迁移。我经手了好几个从x86环境迁移到麒麟操作系统加ARM架构服务器的项目#xff0c;其中日志分析系统的迁移…1. 为什么要在麒麟ARM上折腾这套组合最近几年国产化替代的浪潮越来越猛很多朋友的公司或单位都开始把业务往国产的软硬件平台上迁移。我经手了好几个从x86环境迁移到麒麟操作系统加ARM架构服务器的项目其中日志分析系统的迁移算是个高频需求。大家熟悉的ELKElasticsearch, Logstash, Kibana或者它的变体在国产化环境里部署第一步就会卡在Java环境上。你可能要问了不就是装个Java吗能有多难嘿这还真不是点几下鼠标的事儿。在麒麟ARM也就是aarch64架构上默认的软件源里的OpenJDK版本可能不对或者干脆没有。更头疼的是就算你费劲装好了OpenJDK11后面装Elasticsearch和Kibana的时候它们很可能会“找不到”或者“认错”Java导致启动失败报一堆你看不懂的错。我当初就踩过这个坑明明java -version命令显示得好好的一到启动Elasticsearch就给你摆个“无法找到Java运行时”的臭脸。所以这篇指南就是来解决这个核心痛点的。它不仅仅是一个“安装教程”而是一个“深度集成指南”。重点就在于“集成”二字——我们要确保OpenJDK 11被正确安装并且要被Elasticsearch和Kibana这两个“挑剔”的应用精准识别和使用。这涉及到系统环境变量、应用启动脚本、甚至系统服务配置等多个层面的强制路径指定。搞定这些你的Elasticsearch-Kibana技术栈才能在麒麟ARM上稳稳跑起来为你的业务提供一个可靠的日志搜索和可视化平台。这套组合特别适合那些正在或计划进行国产化替代的团队比如政务、金融、能源等对数据自主可控要求高的行业。如果你正在为如何在麒麟服务器上搭建一个高效的日志分析系统而发愁那接下来的内容就是为你准备的。我会把每一步的操作、背后的原理、以及我踩过的坑都掰开揉碎了讲清楚保证你跟着做就能成功。2. 稳扎稳打前期系统准备与OpenJDK 11安装工欲善其事必先利其器。在开始安装具体软件之前我们必须先把麒麟操作系统这个基础平台打理好。这一步做扎实了后面能避免一大堆稀奇古怪的问题。2.1 系统更新与基础工具安装首先咱们得确保系统是最新的并且装上一些必备的工具。打开你的终端用有sudo权限的账户执行下面的命令。这个过程就像给房子打地基虽然枯燥但必不可少。sudo apt update sudo apt upgrade -y sudo apt install -y wget curl tar vim第一行命令是更新软件源列表并升级所有已安装的包。-y参数是为了让过程自动进行不用每次都手动确认。第二行安装的几个工具wget和curl用于从网络下载文件tar用于解压我们后面要下载的压缩包vim是一个文本编辑器用来修改配置文件。我习惯用vim你用nano或者别的编辑器也行顺手就好。接下来为我们的“全家桶”创建一个专属的安装工作目录。把所有相关的东西放在一起以后管理和排查问题都方便。sudo mkdir -p /usr/local/src/elasticstack sudo chown -R $USER:$USER /usr/local/src/elasticstack cd /usr/local/src/elasticstack这里我们在/usr/local/src下创建了elasticstack目录并把它的所有权改成当前用户这样我们操作起来就不需要老是加sudo了。然后切换到这个目录后面的下载和解压操作都在这里进行。2.2 下载并安装ARM64专属的OpenJDK 11这是第一个关键点。千万不要直接用apt install openjdk-11-jdk因为麒麟的默认源里的OpenJDK包不一定能完美适配后续Elasticsearch的特定要求尤其是在ARM架构下。我们直接从Adoptium以前叫AdoptOpenJDK项目下载为ARM64架构预编译好的版本这样最靠谱。# 下载 OpenJDK 11 for ARM64 wget https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.20%2B8/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.20_8.tar.gz # 创建目标目录并解压 sudo mkdir -p /usr/lib/jvm sudo tar -zxvf OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.20_8.tar.gz -C /usr/lib/jvm/ # 确认解压后的目录名 JDK_DIR$(ls /usr/lib/jvm/ | grep jdk-11) echo JDK安装目录: /usr/lib/jvm/$JDK_DIR下载链接里的版本号jdk-11.0.208可能会更新你可以去Adoptium官网查看最新的ARM64版本。解压后我们用一个小技巧ls /usr/lib/jvm/ | grep jdk-11把解压出来的目录名找出来并赋值给变量JDK_DIR。因为不同版本的目录名可能略有差异比如可能是jdk-11.0.208用这个变量可以避免硬编码更灵活。执行echo命令后请务必记下这个完整的路径比如/usr/lib/jvm/jdk-11.0.208后面每一步都要用到它。2.3 配置系统级Java环境变量光把JDK文件解压到磁盘上还不够得让系统知道它在哪里。我们需要设置JAVA_HOME环境变量并把Java的可执行文件路径加到PATH里。我推荐在/etc/profile.d/目录下创建一个单独的配置文件这样对所有用户都生效而且干净不影响系统原有的配置。sudo vim /etc/profile.d/java.sh在这个新建的java.sh文件里写入以下内容。注意这里的路径要替换成你上一步用echo命令看到的实际路径# 设置JAVA_HOME环境变量 export JAVA_HOME/usr/lib/jvm/jdk-11.0.208 export PATH$JAVA_HOME/bin:$PATH保存退出后让这个配置立即在当前终端生效source /etc/profile现在我们来验证一下安装是否成功java -version javac -version echo $JAVA_HOME如果一切顺利java -version会输出类似“OpenJDK 11.0.20”的信息并且明确显示“64-Bit Server VM”等。echo $JAVA_HOME应该准确显示你设置的路径。这一步成功了只算完成了三分之一因为很多人在后面启动Elasticsearch时才发现它根本没认这个系统变量。3. 攻克核心难点Elasticsearch的安装与强制Java绑定好了基础打牢了现在进入最核心、最容易出错的环节——安装Elasticsearch。在ARM架构下Elasticsearch不会像在x86上那样“聪明”地自动找到系统Java。我们必须主动地、强制性地告诉它“喂你的Java在这儿”3.1 获取并部署Elasticsearch ARM64版本和JDK一样我们要下载专门为aarch64架构编译的Elasticsearch包。这里我们选择7.17.21这个经过长期考验的稳定版本。wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.21-linux-aarch64.tar.gz sudo tar -zxvf elasticsearch-7.17.21-linux-aarch64.tar.gz -C /usr/share/ sudo mv /usr/share/elasticsearch-7.17.21 /usr/share/elasticsearch解压后我们把它移动到/usr/share/elasticsearch这是一个比较标准的安装位置。接下来出于安全考虑Elasticsearch不允许用root用户直接运行我们需要创建一个专用的系统用户和用户组。sudo groupadd elasticsearch sudo useradd -g elasticsearch -M -s /bin/bash elasticsearch sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch-M表示不创建用户家目录-s /bin/bash指定shell。然后把Elasticsearch目录的所有权交给这个新用户。3.2 关键操作强制指定Java路径三种保险这是整个集成过程的灵魂所在。我总结了三种方法层层加码确保Elasticsearch一定能找到正确的JDK。我建议你全部用上就像给门上了三道锁。方法一修改Elasticsearch启动环境脚本 (elasticsearch-env)这个脚本是Elasticsearch启动时最早读取的配置文件之一在这里设置JAVA_HOME优先级很高。sudo vim /usr/share/elasticsearch/bin/elasticsearch-env在这个文件里找到开头部分判断Java路径的代码块大概在文件顶部。在这段代码之前插入下面两行# Force specific JAVA_HOME for Kylin ARM64 export JAVA_HOME/usr/lib/jvm/jdk-11.0.208 export PATH$JAVA_HOME/bin:$PATH原理elasticsearch-env脚本会在启动初期被调用。我们在这里强行导出JAVA_HOME和PATH变量会覆盖掉任何不明确的设置直接引导Elasticsearch使用我们指定的JDK。方法二配置Elasticsearch主配置文件 (elasticsearch.yml)这个文件主要配置集群、网络等但我们也需要确保数据路径等基础设置正确。sudo -u elasticsearch vim /usr/share/elasticsearch/config/elasticsearch.yml用sudo -u elasticsearch是为了以elasticsearch用户的身份编辑避免权限问题。文件里可能有很多注释找到对应的项修改或添加cluster.name: kylin-arm-cluster node.name: kylin-node-1 network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node xpack.security.enabled: false path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearchnetwork.host: 0.0.0.0允许所有IP访问生产环境请按需设置。discovery.type: single-node表示单节点模式适合学习和测试。xpack.security.enabled: false暂时关闭安全认证方便初次调试。最后两行指定了数据和日志的存放路径我们需要创建它们并授权sudo mkdir -p /var/lib/elasticsearch /var/log/elasticsearch sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch方法三在Systemd服务文件中指定环境变量这是最后一道也是最稳固的一道防线。通过Systemd服务控制Elasticsearch时可以直接在服务单元文件中注入环境变量。sudo vim /etc/systemd/system/elasticsearch.service写入以下内容特别注意EnvironmentJAVA_HOME这一行[Unit] DescriptionElasticsearch Documentationhttps://www.elastic.co Afternetwork.target [Service] Typesimple Userelasticsearch Groupelasticsearch # 关键显式指定JAVA_HOME EnvironmentJAVA_HOME/usr/lib/jvm/jdk-11.0.208 EnvironmentES_HOME/usr/share/elasticsearch EnvironmentES_PATH_CONF/usr/share/elasticsearch/config ExecStart/usr/share/elasticsearch/bin/elasticsearch LimitMEMLOCKinfinity LimitNOFILE65535 LimitNPROC4096 Restartalways RestartSec30s [Install] WantedBymulti-user.target3.3 系统优化与服务启动Elasticsearch对系统资源有些要求需要调整一些限制。# 调整用户资源限制 sudo vim /etc/security/limits.conf在文件末尾添加elasticsearch - nofile 65535 elasticsearch - memlock unlimited然后调整虚拟内存映射数量这对于Elasticsearch的稳定运行至关重要sudo sysctl -w vm.max_map_count262144 echo vm.max_map_count262144 | sudo tee -a /etc/sysctl.conf sudo sysctl -p现在激动人心的时刻到了——启动服务sudo systemctl daemon-reload sudo systemctl enable elasticsearch sudo systemctl start elasticsearch # 检查状态 sudo systemctl status elasticsearch # 用curl测试一下 curl -X GET http://localhost:9200/如果status显示active (running)并且curl命令返回一个包含you Know, for Search的JSON信息那么恭喜你Elasticsearch已经在你的麒麟ARM服务器上成功跑起来了这证明我们强制指定Java路径的策略生效了。4. 完美收尾Kibana的安装与联动配置Elasticsearch是存储和搜索引擎而Kibana则是它的“眼睛”负责数据的可视化。安装Kibana的思路和Elasticsearch类似核心同样是确保它使用我们指定的OpenJDK 11。4.1 安装Kibana并配置Java路径同样下载对应架构的版本wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.21-linux-aarch64.tar.gz sudo tar -zxvf kibana-7.17.21-linux-aarch64.tar.gz -C /usr/share/ sudo mv /usr/share/kibana-7.17.21-linux-aarch64 /usr/share/kibana sudo chown -R elasticsearch:elasticsearch /usr/share/kibanaKibana的Java路径配置方法也很直接。我推荐直接修改它的启动脚本一劳永逸。sudo vim /usr/share/kibana/bin/kibana在这个脚本文件的开头在#!/bin/bash这一行之后立刻添加我们的Java路径# Force JAVA_HOME for Kylin ARM64 export JAVA_HOME/usr/lib/jvm/jdk-11.0.208 export PATH$JAVA_HOME/bin:$PATH这样每次通过这个脚本启动Kibana它都会先加载正确的Java环境。4.2 配置Kibana连接Elasticsearch接下来配置Kibana让它知道我们的Elasticsearch在哪里。sudo -u elasticsearch vim /usr/share/kibana/config/kibana.yml主要修改或确认以下几项server.port: 5601 server.host: 0.0.0.0 server.name: kylin-kibana elasticsearch.hosts: [http://localhost:9200] i18n.locale: zh-CN path.data: /var/lib/kibana logging.dest: /var/log/kibana/kibana.logelasticsearch.hosts指向我们刚启动的Elasticsearch地址。i18n.locale: zh-CN可以将界面设置为中文看个人喜好。同样创建并授权数据日志目录sudo mkdir -p /var/lib/kibana /var/log/kibana sudo chown -R elasticsearch:elasticsearch /var/lib/kibana /var/log/kibana4.3 创建Systemd服务并启动为Kibana也创建一个系统服务并且再次在服务文件中指定JAVA_HOME做到双保险。sudo vim /etc/systemd/system/kibana.service写入以下配置[Unit] DescriptionKibana Documentationhttps://www.elastic.co Afternetwork.target elasticsearch.service [Service] Typesimple Userelasticsearch Groupelasticsearch # 关键显式指定JAVA_HOME EnvironmentJAVA_HOME/usr/lib/jvm/jdk-11.0.208 EnvironmentKIBANA_HOME/usr/share/kibana ExecStart/usr/share/kibana/bin/kibana Restartalways RestartSec30s [Install] WantedBymulti-user.target注意After... elasticsearch.service这一行它确保了Kibana会在Elasticsearch启动之后再启动避免连接失败。现在启动Kibanasudo systemctl daemon-reload sudo systemctl enable kibana sudo systemctl start kibana # 查看状态 sudo systemctl status kibana # 查看启动日志初期可能会有一些初始化信息 sudo tail -f /var/log/kibana/kibana.logKibana的启动比Elasticsearch慢一些可能需要等待一两分钟。当你在日志中看到http server running at http://0.0.0.0:5601这样的信息时就说明启动成功了。5. 验收成果与故障排查心法所有服务都跑起来了但这还不算完。我们需要做一次全面的验收确保整个技术栈是健康、稳固的。同时我也把几个常见的“坑”和排查思路分享给你万一遇到问题你可以自己动手解决。5.1 一站式验收检查打开终端执行下面这套“组合拳”来检查服务状态# 1. 检查两个核心服务的运行状态 sudo systemctl status elasticsearch sudo systemctl status kibana # 2. 测试Elasticsearch的HTTP API是否正常响应 curl -X GET http://localhost:9200/ # 3. 测试Kibana的Web服务是否就绪 curl -I http://localhost:5601 # 正常应返回HTTP 200状态码 # 4. 终极验证确认两个进程使用的确实是我们的OpenJDK 11 ps aux | grep elasticsearch | grep java ps aux | grep kibana | grep node重点看最后一条命令的输出。在ps aux的结果里grep java过滤出的Elasticsearch进程其命令路径应该包含我们设置的/usr/lib/jvm/jdk-11.0.208。而Kibana是基于Node.js的grep node可以找到它的进程同样可以观察其环境。这能最直接地证明我们的“强制路径指定”策略成功了。如果一切正常现在你就可以打开浏览器访问http://你的服务器IP:5601了。第一次访问可能会稍慢Kibana正在初始化。进入后你就能看到熟悉的Kibana界面可以在“Stack Management”里添加索引模式开始探索你的数据了。5.2 常见问题与排查锦囊即使按照步骤操作也可能因为系统环境的细微差异遇到问题。别慌按这个思路来查服务启动失败报“Java not found”或类似错误首先检查echo $JAVA_HOME和java -version在命令行下是否正常。如果不正常回顾2.3节确认/etc/profile.d/java.sh文件内容正确并重新source /etc/profile。然后检查我们设置的三道“保险锁”是否都生效了。分别检查/usr/share/elasticsearch/bin/elasticsearch-env文件开头是否添加了export语句。/etc/systemd/system/elasticsearch.service和/etc/systemd/system/kibana.service中的EnvironmentJAVA_HOME行路径是否正确。/usr/share/kibana/bin/kibana脚本开头是否添加了export语句。最后查看服务日志。sudo journalctl -u elasticsearch --since 5 minutes ago或sudo tail -f /var/log/elasticsearch/kylin-arm-cluster.log日志名可能不同可以获取详细的错误信息。Elasticsearch启动后很快退出日志显示内存不足麒麟ARM服务器特别是虚拟机或配置较低的机器可能内存不足。Elasticsearch 7.x默认堆内存是1GB。你可以编辑/usr/share/elasticsearch/config/jvm.options文件修改-Xms1g和-Xmx1g为更小的值比如-Xms512m和-Xmx512m。注意Xms和Xmx必须设置相同。Kibana无法连接到Elasticsearch检查kibana.yml中的elasticsearch.hosts地址和端口是否正确。检查Elasticsearch是否真的在运行systemctl status并且监听在0.0.0.0:9200用netstat -tlnp | grep 9200查看。如果Elasticsearch开启了安全认证xpack.security.enabled: true你需要在kibana.yml中配置对应的用户名密码。系统限制问题如果日志提到“max file descriptors [4096] too low”或“max virtual memory areas vm.max_map_count [65530] too low”说明3.3节的系统优化步骤没生效或需要重新登录会话。请确保已正确修改/etc/security/limits.conf并执行了sysctl -p然后重启服务器是最彻底的方法。这套组合拳打下来基本上能解决99%在麒麟ARM上部署ELK时遇到的问题。核心思想就是在ARM平台上不要指望自动发现一定要主动、明确、多维度地指定关键路径。把这份指南当作你的操作手册遇到问题回来对照检查相信你一定能搭建出一个稳定可靠的日志分析平台。