搭建jenkins主从集群
1. 检查服务器包配置[可选]
一般不需要apt的额外配置, 如果有删除配置或者移动到别处, 使其不生效:
sudo rm /etc/apt/apt.conf sudo apt-get update
2. 安装JDK
jenkins依赖java, 安装java8+版本,并且配置java_home:
sudo apt search openjdk sudo apt-get install openjdk-8-jdk sudo vim /etc/bash.bashrc export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
3. 安装jenkins
在ubuntu环境下安装:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
一些默认文件位置:
路径 | 描述 |
---|---|
/etc/default/jenkins | jenkins运行配置 |
jenkins | 默认文件用户 |
/var/log/jenkins/jenkins.log | 日志路径 |
/var/lib/jenkins/ | jenkins home |
4. 高级设置
- Crowd 2 Integration
- 配置slave
- 新建node
- 配置node启动方式: 通过Java Web启动代理, 注意只有在全局安全配置中设置了JNLP代理协议的TCP端口该选项才可选
- 查看salve页面下载agent.jar 和 slave-agent.jnlp 文件, 并且放到salve服务器的jenkins_home目录下
- 登录salve服务器切换到jenkins用户, 运行上一步salve页面执行命令, 如: java -jar agent.jar -jnlpUrl http://slave.server.ip:8080/computer/slave-01/slave-agent.jnlp -secret 2a99268dbfc5d5f4c517d237d48078b1163f -workDir "/var/lib/jenkins/"
- GitLab和Jenkins集成
- Jenkins选择一个pipeline任务, Build Triggers->高级->Secret token, 生成一个token
- Gitlab选择一个项目, Setting->Integrations, 新建一个webhook, 其中
- URL: Jenkins的任务位置: http://jenkins-in.devops.com/project/halo-kong
- Securet Token: 是上一步获取的Jenkins生成的token, 穿件完可以点击Test测试一下
5. 遇到问题
-
解决方式: sudo /etc/init.d/jenkins restart
-
配置agent的守护进程(否则java -jar agent.jar....命令中断后集群就垮了)
sudo easy_install supervisor echo_supervisord_conf > supervisord.conf sudo mv supervisord.conf /etc/supervisord.conf sudo vim /etc/supervisord.conf # 修改include为files = /etc/supervisor/*.conf sudo mkdir -p /etc/supervisor sudo vim /etc/supervisor/jenkins-slave-agent.conf
jenkins-slave-agent.conf:
[program:jsa] directory = /var/lib/jenkins/ command = java -jar agent.jar -jnlpUrl http://slave.server.ip:8080/computer/slave-01/slave-agent.jnlp -secret 2a99268dbfc5d5f4c517d237d48078b1163f -workDir "/var/lib/jenkins/" autostart = true autorestart = true user = jenkins redirect_stderr = true stdout_logfile = /var/lib/jenkins/jenkins-slave-agent.log
supervisorctl commond:
sudo supervisorctl reread # 读取新配置 sudo supervisorctl update # 启动更新 sudo supervisorctl status # 查看状态 sudo supervisorctl stop jsa # 停止一个子进程 sudo supervisorctl start jsa # 启动一个子进程 sudo supervisorctl restart jsa # 重启一个子进程
-
在agent node 运行docker-compose build报告无法连接到http+docker://localhost docker
原因: 权限
解决方法: sudo chown jenkins:docker /var/run/docker.sock
-
在agent node 运行docker push报告 no basic auth credentials
原因: load credential文件位置不对
解决方案: 指定加载权限文件位置如: docker --config /var/lib/jenins/ push xxxxx
-
原因: 默认配置了固定的分支, 如果需要动态配置分支就不可以了
解决方案: 使用gitlab插件内置的一些变量, 比如使用gitlabSourceBranch变量结合checkout进行切换, 如
checkout([$class: 'GitSCM', branches: [[name: '${gitlabSourceBranch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab-user', url: 'http://git.devops.com/devops/devops.git']]])
![](/img/my/wx.png)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Dubbo 源码分析 - 服务引用
1. 简介 在上一篇文章中,我详细的分析了服务导出的原理。本篇文章我们趁热打铁,继续分析服务引用的原理。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直联的方式引用服务,第二种方式是基于注册中心进行引用。服务直联的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除此之外,服务消费者还需要经历 Invoker 创建、代理类创建等步骤。这些步骤,我将在后续章节中一一进行分析。在此我向大家推荐一个架构学习交流裙。交流学习裙号:821169538 2.服务引用原理 Dubbo 服务引用的时机有两个,第一个是在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务,第二个是在 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒汉式的。默认情况下,Dubbo 使用懒汉式引用服务。如果需要使用饿汉式,可通过配置 <dubbo:ref...
- 下一篇
用Redis轻松实现秒杀系统
导论 曾经被问过好多次怎样实现秒杀系统的问题。昨天又在CSDN架构师微信群被问到了。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。 秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题。对这类问题,有三种优化性能的思路: 写入内存而不是写入硬盘 异步处理而不是同步处理 分布式处理 用上这三招,不论秒杀时负载多大,都能轻松应对。更好的是,Redis能够满足上述三点。因此,用Redis就能轻松实现秒杀系统。 用我这个方案,无论是电商平台特价秒杀,12306火车票秒杀,都不是事:) 下面介绍一下为什么上述三种性能优化思路能够解决秒杀系统的性能问题: 写入内存而不是写入硬盘 传统硬盘的读写性能是相当差的。SSD硬盘比传统硬盘快100倍。而内存又比SSD硬盘快10倍以上。因此,写入内存而不是写入硬盘,就能使系统的能力提升上千倍。也就是说,原来你的秒杀系统可能需要1000台服务器支撑,现在1台服务器就可以扛住了。 你可能会有这样的疑问:写入内存而不是持久化,那么如果此时计算机宕机了,那么写入的数据不就全部丢失了吗?如果你就这么倒霉碰到服务器宕机,那你就没秒到了,有什么大不了...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题