ELK环境部署(已踩坑)

已踩的坑:
由于版本的不一致,安装marvel时会导致kibana界面报红,
还有启动kibana失败,提示端口在使用,(og [17:26:44.467] [fatal] Error: listen EADDRINUSE IP:5601)
然后
ps -ef|grep kibana

ps -ef|grep 5601
netstat -antp|grep 5601,
找到或者找到杀不掉,最后

尝试 使用 fuser -n tcp 5601

kill -9 端口
成功!!!

Logstash , Elasticsearch Kibana ,的下载地址统一为https://www.elastic.co/downloads/

本次使用的软件版本分别为:
1. elasticsearch2.4.4.tar.gz
2. kibana-4.6.4-linux-x86_64.tar.gz
3. logstash-2.0.0.tar.gz
4. ik1.10.4
一:Logstash安装

第一步.解压到指定目录,
使用tar xvzf *.tar.gz -C “path”
第二步:进入到解压后的根目录,使用bin/plugin install “插件名” 安装对应插件,
常用插件如下:

logstash-filter-date
logstash-filter-grok
logstash-input-file
logstash-input-stdin
logstash-output-elasticsearch
logstash-output-redis
logstash-output-stdout
安装失败可以多重试,(看人品..)

第三步:配置 *.conf 文件启动时使用,注意配置中的input的文件必须拥有足够的权限,不然就等着失败…

二:Elasticsearch的安装

第一步:同样解压,
第二步:进入解压后的根目录下的config文件中,修改配置elasticsearch.xml文件
主要修改一下几点:
cluster.name:必须保持集群内的各个节点此名称的一致性。
node.name: 每个节点起一个(类似 node-1,node-2…..)
network.host:(填写本机的ip即可,这样就可以在windows也可以访问)
discovery.zen.ping.unicast.hosts:(将里面的hosts换成对应的集群中所有节点的ip)
第三步:在$ES_HOME/下执行
bin/plugin install mobz/elasticsearch-head
(有了它,就可以访问对应的web界面)
网址类似:http://”Ip“:9200/_plugin/head/

第三步:安装Marvel
分别在elasticsearch和kibana下安装
Step 1: Install Marvel into Elasticsearch:

bin/plugin install license
bin/plugin install marvel-agent
Step 2: Install Marvel into Kibana
bin/kibana plugin –install elasticsearch/marvel/latest

Step 3: Start Elasticsearch and Kibana
bin/elasticsearch
bin/kibana

第四步:Kibana的安装
1.同样解压后,进入config目录,配置 kibana.yml文件
,其中只需要修改elastic.url属性即可。
改成本机的ip。
访问网址:http://”IP“:5601/

第五步:Ik分词器的安装:
https://github.com/medcl/elasticsearch-analysis-ik下载
我们的版本是 1.10.4。

  1. 下载后的压缩包解压后进去是pom工程
    分别执行如下命令:
    mvn clean
    mvn compile
    mvn package
    2.当然这里是用maven对此工程进行编译,前提要安装maven
    Maven安装也很简单,下载包以后解压缩,配置环境变量即可

3.前面编译了插件以后会在target/releases目录下出现一个zip包

4.然后在es的根目录下的plugins里面建一个ik目录,将上面的zip文件拷进去,并解压
5.重启es完成。

<think>我们正在处理用户关于Jenkins主从部署配置方法和最佳实践的询问。根据之前的对话历史,用户提到了Kubernetes架构下的Jenkins主从配置,以及Docker环境下的主从模式实现。我们的回答需要结合这些引用内容,同时提供详细的配置步骤和最佳实践。用户的需求是了解Jenkins主从部署的配置方法和最佳实践。我们将从以下几个方面进行回答:1.Jenkins主从架构的基本概念2.配置Jenkins主从部署的详细步骤(包括Kubernetes环境和Docker环境)3.最佳实践建议注意:引用中的内容可以作为参考,但需要整合到我们的回答中,并在适当位置标注引用标记[^1][^2][^3][^4]。我们首先概述Jenkins主从架构,然后分别介绍在Kubernetes和Docker环境下的配置方法,最后提供最佳实践。同时,为了满足用户的需求,我们会生成相关问题。由于用户之前的问题中出现了编码转换的问题,但当前问题已经转向Jenkins,因此我们只关注Jenkins主从部署。回答结构:一、Jenkins主从架构概述二、Kubernetes环境下的Jenkins主从配置三、Docker环境下的Jenkins主从配置四、最佳实践五、问题总结然后,生成相关问题。注意:我们引用的标记要对应到之前对话中用户提供的引用[^1]到[^4]。</think> ### Jenkins 主从部署配置方法与最佳实践 Jenkins 主从架构通过分布式任务执行提升构建效率和资源利用率[^1][^2][^3]。以下是配置流程和关键实践: --- #### 一、核心配置流程 1. **基础环境准备** - **主节点(Jenkins Master)** 支持基础环境:JDK 11+、Docker(容器化场景)、持久化存储(如NFS/云存储) ```bash # Docker部署Master示例[^4] docker run -d -p 8080:8080 -v jenkins_data:/var/jenkins_home --name jenkins-master jenkins/jenkins:lts ``` - **从节点(Jenkins Agent)** 需安装Java、SSH/Pod模板(k8s场景)、构建工具链(Maven/Gradle等) 2. **Kubernetes主从架构配置**[^1] ```yaml # Jenkinsfile配置k8s动态Agent podTemplate( containers: [ containerTemplate(name: 'maven', image: 'maven:3.8-jdk-11') ] ) { node(POD_LABEL) { stage('Build') { sh 'mvn package' } } } ``` 3. **传统SSH从节点绑定**[^3] ```mermaid graph LR A[Jenkins Master] -->|SSH密钥| B[Agent1: Ubuntu] A -->|SSH密钥| C[Agent2: Windows] ``` - 配置路径: `Manage Jenkins > Manage Nodes > New Node` - 关键参数: `Remote root directory`: `/home/jenkins` `Launch method`: `Launch agents via SSH` 4. **自动伸缩优化(k8s最佳实践)**[^1][^2] - **动态Pod分配**: 根据队列负载自动创建/销毁Agent Pod - **资源限制**: 设置CPU/Memory请求/上限 ```yaml resources: requests: cpu: "500m" memory: "1Gi" limits: memory: "2Gi" ``` --- #### 二、部署最佳实践 1. **安全强化** - 使用[Role-Based Access Control](https://plugins.jenkins.io/role-strategy/)限制Agent配置权限 - Agent连接启用`-noReconnect`参数防止劫持 - 定期轮换SSH密钥/JNLP端口 2. **稳定性优化** - **持久化存储**: Master的`JENKINS_HOME`挂载存储或PVC[^4] - **健康检查**: 配置Agent自动重连机制 - **日志收集**: 集成ELK或Fluentd集中管理日志 3. **容器化实践**[^3][^4] ```bash # Agent容器模板定义 agent { docker { image 'maven:3.8-jdk-11' args '-v $HOME/.m2:/root/.m2' } } ``` 4. **性能调优** | 参数 | 推荐值 | 作用 | |------|---------|------| | `-Xmx` | 主节点4G+/从节点2G+ | 堆内存限制 | | `java.io.tmpdir` | 独立SSD分区 | 减少I/O阻塞 | | `JENKINS_JAVA_OPTIONS` | `-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL=86400` | 降低心跳检测负载 | --- #### 三、经典解决方案 1. **Agent离线问题** - 检查防火墙规则(开放50000/JNLP端口) - 确认Master-Agent时间同步(NTP服务) - 升级Jenkins Remoting库到最新版 2. **资源竞争处理** ```groovy // Pipeline资源隔离示例 stage('Build') { lock(resource: 'database', inversePrecedence: true) { sh './run_db_tests.sh' } } ``` 3. **跨平台兼容性** - Windows Agent:使用`bat`替代`sh` - 路径转换:`${WORKSPACE.replace('\\', '/')}` > 关键原则:主节点仅做协调调度,构建任务必须隔离到从节点执行[^2][^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值