version: "3.2"
services:
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: 'rabbitmq'
environment:
- RABBITMQ_DEFAULT_VHOST=/
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=Rabbitmq2022
- RABBITMQ_ERLANG_COOKIE=rabbitmq-localdev
ports:
- 5672:5672
- 15672:15672
volumes:
- ./data:/var/lib/rabbitmq
- ./log:/var/log/rabbitmq
networks:
- rabbitmq_go_net
networks:
rabbitmq_go_net:
driver: bridge
Reference:
https://x-team.com/blog/set-up-rabbitmq-with-docker-compose/
https://blog.yowko.com/docker-compose-rabbitmq-cluster/
* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
[root@xxx ~]# cat crontab.sh
#!/bin/bash
step=15
for (( i = 0; i < 60; i=(i+step) )); do
sh /tmp/test.sh
sleep $step
done
exit 0
实际要执行的脚本
[root@xxx ~]# cat test.sh
#!/bin/bash
cd /data/www && git pull >> /tmp/test.log
#cd /data/www && git pull > /dev/null 2>&1
[root@xxx ~]# crontab -l
* * * * * /tmp/crontab.sh
ansible prod-consul -m shell -a " echo '* */6 * * * /root/clear-ram.sh' >> /var/spool/cron/root"
./kafka-topics.sh --create --zookeeper 0.0.0.0:2181 --replication-factor 1 --partitions 1 --topic my-topic
./kafka-topics.sh --zookeeper 0.0.0.0:2181 --delete --topic my-topic
./kafka-topics.sh --list --zookeeper 0.0.0.0:2181
./kafka-consumer-groups.sh --bootstrap-server 0.0.0.0:9092 --list
./kafka-consumer-groups.sh --bootstrap-server 0.0.0.0:9092 --describe --group group1 --members
./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group group1
./kafka-consumer-groups.sh --bootstrap-server 0.0.0.0:9092 --describe
canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
基于日志增量订阅和消费的业务包括
(1)可以在命令下使用show table status \G命令查看:
(2)如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:
TABLE_SCHEMA : 数据库名
TABLE_NAME:表名
ENGINE:所使用的存储引擎
TABLES_ROWS:记录数
DATA_LENGTH:数据大小
INDEX_LENGTH:索引大小
其他字段请参考MySQL的手册,我们只需要了解这几个就足够了。所以要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。
select
table_schema as '数据库',
sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
from information_schema.tables
group by table_schema
order by sum(data_length) desc, sum(index_length) desc;
select
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from informa
NSCD(Name Service Cache Daemon)是服务缓存守护进程,它为NIS和LDAP等服务提供更快的验证。不管是什么系统,缓存是一项非常重要的技术[或机制],缓存的主旨就是提高客户端访问速度。
NSCD(name service cache daemon)是GLIBC关于网络库的一个组件,服务基于glibc开发的各类网络服务,基本上来讲我们能见到的一些编程语言和开发框架最终均会调用到glibc的网络解析的函数(如GETHOSTBYNAME or GETHOSTBYADDR等),因此绝大部分程序能够使用NSCD提供的缓存服务。当然如果是应用端自己用socker编写了一个网络client就无法使用NSCD提供的缓存服务,比如DNS领域常见的dig命令不会使用NSCD提供的缓存,相反ping得到的DNS解析结果将使用NSCD提供的缓存。
本质上NSCD不止为DNS提供缓存服务,同时可以为passwd/group/hosts等服务提供缓存,本文重点介绍的是DNS(hosts)范畴内的缓存,相关测试结果和代码的对象对应的是glibc-2.17版本。
$ yum -y install nscd
$ apt-get install nscd
$ nscd --help
用法: nscd [选项...]
Name Service Cache Daemon.
-d, --debug Do not fork and display messages on the current
tty
-f, --conf
sync
echo "3" > /proc/sys/vm/drop_caches
As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.
swapon -s
如果返回的信息概要是空的,则表示 Swap 文件不存在。
dd if=/dev/zero of=/var/swap/swapfile bs=4G count=8
dd if=/dev/zero of=/var/swap/swapfile bs=1M count=4096
【参数说明】
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节
count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。
mkswap /var/sw
Linux服务器是系统重要的业务运行平台,对服务器进行巡检能够及时发现服务 器的隐患,以便于改善和优化服务器的性能;观察服务器的运行状况,及时对
设备进行调整,保证服务器的24小时不间断的工作。
检查项 | 检查操作 |
---|---|
机器型号 | dmidecode 1 grep "Product Name" |
CPU | cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c |
内存 | free -m |
磁盘 | df -h |
网卡 | ifconfig -a |
操作系统 | uname -a |
检查项 | 检查操作 | 参考指标 |
---|---|---|
CPU占用率 | top | CPU每个线程占用率小于80% |
CPU负载 | uptime | CPU负载应小于10 |
内存占用率 | free -m | 内存使用率小于80% |
内存swap使用率 | free -m | swap使用率小于10% |
磁盘使用率 | df -ah | 磁盘使用率小于80% |
磁盘负载 | iostat -xkd 1 | uti 1应在10%以内 |
系统开放端口 | netstat -an Igrep LISTEN | 只显示出提供对于服务的端 口,无关的端口一律关闭 |
网卡流量 | iftop | 网卡流量小于带宽的50% |
进程检查 | ps aux | more | 关闭占用资源的无用进程 |
检查项 | 检查操作 | 参考指标 |
---|---|---|
进程检查 | ps -ef | grep mysqld | 检查port以及datadir |
数据库版本 | select version() | |
超大库检查 | du -sh | 每个数据库目录 |
官网下载最新的jenkins.war
下面是列表
https://updates.jenkins.io/download/war/
需要注意的是这里启动的java版本是
11.0.12
#!/bin/bash
export JAVA_HOME=/usr/local/java11/openjdk
export PATH=$PATH:$JAVA_HOME/bin
nohup java -Duser.home=/home/jenkins/master_data -Djenkins.model.Jenkins.slaveAgentPort=50000 -jar /home/jenkins/bin/master/jenkins.war >> /home/jenkins/data/all.log &
需要注意的是这里启动的java版本是
1.8.0_202
下面只是其中的一个agent,其他的只需要按需求将secret替换即可。
#!/bin/bash
export JAVA_HOME=/usr/local/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
nohup java -jar /home/jenkins/bin/slave/agent.jar -jnlpUrl http://jenkins.xxx.com/computer/agent1/jenkins-agent.jnlp -secret 9cf71dd0b91ecbc7203fafe0bfbbefd947898ecdca51ab7f0332cf90e93a4840 -workDir "/home/jenkins/slave_data/agent1" >> /home/jenkins/slave_data/agent1/a
系统:centos 7.x
基础安装:docker、docker-compose
jenkins架构:一主三从
jenkins主从中需要的命令均通过挂载宿主机上的实现,如java、python、node等,均通过编译或二进制安装方式。
# 注意 --enable-optimizations 可能会报错,如果有就去掉
$ ./configure --prefix=/usr/local/python3 --enable-optimizations
$ make
$ make install
version: '3.5'
services:
jenkins-master:
# image: jenkinsci/blueocean
image: reg.xxx.xxx/jenkins/jenkinsci-blueocean-1.25.0
container_name: jenkins-master
privileged: true
ports:
- 8080:8080
- 50000:50000
restart: always
volumes:
- /home/jenkins/data:/var/jenkins_home
- /usr/local/apache-maven-3.8.3:/usr/local/maven-3.8.3
- /usr/local/jdk1.8.0_202:/usr/local/jdk1.8.0_202
- /usr/local/python3:/usr/local/python3
- /usr/local/node-v16.6.0-linux-x64:/usr/local/node-v16.6.0-linux-x64