搭建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']]])

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
node上的redis调用优化示例
Node.js读写数据到influxDB,目前已经有一个库node-influx, 这个库功能非常强大,但是我个人使用这个库的时候,遇到无法解决的问题。 使用curl都可以写数据到influxDB,但是用node-influx总是报错,搞了半天也无法解决,就索性不用它了。 influxDB提供HTTP的API,也就是说Node.js中的axios或[request等HTTP客户端工具是可以直接和influx交互的。 需要注意的一点是,写到influxDB的数据格式必须是二进制流。 1. 字符串转二进制 const data = Buffer.from('mymeas,mytag=1 myfield=90') 2. 设置请求Content-Type为二进制 'Content-Type': 'application/octet-stream' 完整代码展示: \`const axios = require(\`\`'axios'``)` \`const data = Buffer.from(\`\`'mylog,name=wdd error\_count=2003,no\_send=0'`...
-
下一篇
用Redis轻松实现秒杀系统
导论 曾经被问过好多次怎样实现秒杀系统的问题。昨天又在CSDN架构师微信群被问到了。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。 秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题。对这类问题,有三种优化性能的思路: 写入内存而不是写入硬盘 异步处理而不是同步处理 分布式处理 用上这三招,不论秒杀时负载多大,都能轻松应对。更好的是,Redis能够满足上述三点。因此,用Redis就能轻松实现秒杀系统。 用我这个方案,无论是电商平台特价秒杀,12306火车票秒杀,都不是事:) 下面介绍一下为什么上述三种性能优化思路能够解决秒杀系统的性能问题: 写入内存而不是写入硬盘 传统硬盘的读写性能是相当差的。SSD硬盘比传统硬盘快100倍。而内存又比SSD硬盘快10倍以上。因此,写入内存而不是写入硬盘,就能使系统的能力提升上千倍。也就是说,原来你的秒杀系统可能需要1000台服务器支撑,现在1台服务器就可以扛住了。 你可能会有这样的疑问:写入内存而不是持久化,那么如果此时计算机宕机了,那么写入的数据不就全部丢失了吗?如果你就这么倒霉碰到服务器宕机,那你就没秒到了,有什么大不了...
相关文章
文章评论
共有0条评论来说两句吧...