![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
运维
文章平均质量分 56
micromicrofat
Python | Go | Deep Learning
展开
-
【Docker】容器获取宿主机IP和MAC
【代码】容器获取宿主机IP和MAC。原创 2023-03-22 17:38:50 · 1533 阅读 · 0 评论 -
私有GitLab root账号重制
今天在登录GitLab的root账号时,发现密码忘了,而且邮箱也忘了,导致无法找回密码,通过一番搜索发现,如果你是私有部署的GitLab,并且能够登陆该服务器,是有办法通过命令完成密码重置的。原创 2023-01-28 11:32:43 · 282 阅读 · 0 评论 -
【Kafka】基于Docker的KRaft模式(无Zookeeper)集群安装及测试
最近项目中想使用kafka做消息系统,但安装好像很复杂,现在把安装过程记录一下。主流的安装方式是在服务器上直接安装,而我希望的是使用Docker。主流的Kafka使用Zookeeper,但最近Kafka将会逐步舍弃Zookeeper而使用自带的KRaft所以以下步骤是基于Docker安装无Zookeeper的Kafka。原创 2022-10-19 16:31:56 · 5282 阅读 · 0 评论 -
【Nginx】解决413错误
接收Excel文件。原创 2022-09-09 09:27:21 · 18872 阅读 · 3 评论 -
【运维】解决容器中supervisord无法获取宿主机环境变量的问题
dockerfile构建镜像docker-compose运行容器supervisor进程管理部署过程中,想通过在宿主机上设置环境变量,容器获取宿主机的环境变量,服务使用环境变量启动首先想到的是通过docker-compose.yml文件中的environment标签,将宿主机的环境变量传入容器中结果也确实传入容器中了,但supervisor启动的服务并没有获取到环境变量这是因为参考:https://supervisord.readthedocs.io/en/latest/subprocess.htm原创 2022-07-13 10:36:06 · 1270 阅读 · 0 评论 -
【Docker】解决docker-compose启动的容器一直处于restarting状态的问题
通过如下的文件启动容器后status一直处于Restarting且执行如下命令报错:改成如下后解决参考:https://stackoverflow.com/a/63990209原创 2022-07-12 11:55:58 · 8997 阅读 · 0 评论 -
【MongoDB运维】为副本集添加索引
服务器运维小伙伴说服务器CPU资源告警, 让我查一下问题原因mongo0容器长期占用过高CPU资源近期接口被调用频繁, TPH约7000, 而接口代码中使用{‘data_id’: data_id}为filter updateOne文档, 而data_id没有索引, 导致检索效率低为data_id创建索引我们知道mongoDB创建索引只需要执行但我这里是副本集, 需要在每个节点上创建索引, 而且接口要始终保持在线.undefinedDocker: 20.10.17一主一从一投票10.11.206.4 :原创 2022-06-16 15:35:58 · 335 阅读 · 0 评论 -
【Docker Swarm】删除worker节点
运行环境:Docker: 20.10.17OS: CentOS Linux release 7.9.2009 (Core)在manager节点上执行:在worker节点上执行:在manager节点上执行:原创 2022-06-16 08:29:22 · 821 阅读 · 0 评论 -
【Docker 运维】Docker迁移至新磁盘
将Docker整体迁移至新磁盘服务器运维小伙伴今天通知我说服务器磁盘快满了, 我上去df -h一下发现好嘛, 直接干到99了, 我问了运维小伙伴能不能扩容后, 对方直接说本来就有第二个磁盘, 是我没挂载…略把该磁盘挂载然后把Docker迁移上去就好了磁盘分区格式化为ext4将磁盘挂载到指定目录开机自动挂载目录迁移Docker暂停Docker迁移数据修改配置文件中的目录地址加载配置并重启Docker查看是否生效重启Docker参考:https://www原创 2022-06-13 12:29:44 · 3683 阅读 · 0 评论 -
【MongoDB】基于Docker的MongoDB replica set(副本集)升级
之前文章【MongoDB】基于Docker的MongoDB replica set(副本集)搭建介绍了如何基于Docker搭建MongoDB副本集,当时的MongoDB版本号为4.4.5最近MongoDB最新版本号已经来到了5.0.8原创 2022-05-11 17:16:56 · 836 阅读 · 0 评论 -
【MongoDB】MongoDB 5.0官方版本不再支持现有树莓派
之前在树莓派上成功部署了MongoDB 4.4.5,今天想升级大版本至5,发现报错Creating network "mongodb_replica_set" with the default driverCreating mongo0 ... doneAttaching to mongo0mongo0 exited with code 132mongo0 exited with code 132mongo0 exited with code 132查找后发现MongoDB 5更新了对软硬件原创 2022-05-11 16:39:45 · 1035 阅读 · 0 评论 -
【Jupyter】JupyterHub解决IOPub data rate exceeded
>>> vim /etc/jupyterhub/jupyterhub_config.pyc.Spawner.args = ['--NotebookApp.iopub_data_rate_limit=10000000000000']>>> service jupyterhub restart参考:https://github.com/jupyterhub/jupyterhub/issues/1152#issuecomment-306891792原创 2022-02-13 16:43:58 · 476 阅读 · 0 评论 -
【Linux】关于如何屏蔽IP对服务器的访问
前几天由于接口收到某些互联网爬虫的请求导致服务出现若干异常请求,就想到对服务器进行配置,以达到对某些IP的屏蔽。我想到的方法有如下几种:阿里云控制面板上配置黑名单;服务器上配置iptables、ufw、firewalld之类的防火墙;服务器上配置hosts.deny之类的配置文件;配置Nginx、Apache之类的服务器由于公司有统一的阿里云服务器安全策略,想针对某台服务器单独进行配置比较繁琐,故第1种方式被pass掉了。由于之前一直没有启用防火墙,担心启用防火墙后对现有服务产生不可预知的影响原创 2022-02-08 13:39:48 · 3061 阅读 · 0 评论 -
【Linux】lsof: no pwd entry for UID xx
今天在使用lsof查找那些进程使用libwrap的时候发现结果如下>>> lsof | grep libwrap...lsof: no pwd entry for UID 33lsof: no pwd entry for UID 33lsof: no pwd entry for UID 33lsof: no pwd entry for UID 33lsof: no pwd entry for UID 33lsof: no pwd entry for UID 33lsof原创 2022-02-08 10:59:40 · 11237 阅读 · 0 评论 -
【运维】互联网端口扫描导致的服务异常
开工第一天,在查看Sentry记录时发现接口出现错误,而且错误原因都是因为请求同一个不存在的地址导致的404。分析后发现请求的headers里的User-Agent都是Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)再一搜,发现censys是一个扫描全球公共IP及端口的安全工具,用来识别并统计常见漏洞。根据官方说明,这个扫描是人畜无害的,如果介意的话可以通过配置进行屏蔽Censys是一个帮助信息安全...原创 2022-02-07 10:46:12 · 4951 阅读 · 0 评论 -
【Sentry使用】自定义transaction
在使用Sentry时,你会发现有两种颜色的柱形图,一个是紫色的,在上面;一个是灰色的,在下面。这两类柱形图分别代表error和transaction,而在Python脚本环境下,不会自动进行transaction的记录,也就是说只会在出现异常时进行记录,而正常情况不会。这时就要了解一下Sentry的transaction创建逻辑自动手动首先是自动在使用一些框架的情况下会自动创建,官方给出了这些框架的列表基于WSGI的web框架,比如Django、Flask、Pyramid、Falcon原创 2022-01-18 11:54:13 · 2223 阅读 · 0 评论 -
【Sentry运维】版本升级
今天发现sentry版本有点低,想对其进行版本升级,由于之前有升级的经历,所以就信心满满的开始操作了>>> git clone https://github.com/getsentry/self-hosted.git>>> git checkout 21.12.0>>> ./install.sh>>> docker-compose up -d切记不要对原来的进行’docker-compose --rmi all’操作,否则在原创 2022-01-13 16:31:06 · 2494 阅读 · 0 评论 -
Mac双网卡路由设置实现内外网同时访问
最近公司的无线网络升级了,将内网从无线网络中剥离,故通过无线网络智能访问外网了。无奈只能通过双网卡的方式同时连接内外网了,具体是:通过无线访问外网,有线访问ip地址以10开头的内网,且无线的优先级高。具体配置如下图:希望通过255.0.0.0子网掩码将10.x.x.x的所有ip地址识别为内网环境,并分流给路由10.8.15.1,从而实现内外网同时访问但奇怪的事情发生了,访问同一个网段的10.8.15.49没问题,但访问10.11.206.141则出现超时(ping ssh均不通)。通过route原创 2021-12-22 16:48:06 · 4954 阅读 · 1 评论 -
解决docker nginx无法查看日志的问题
我们知道,Nginx的日志默认存放在/var/log/nginx/access.log/var/log/nginx/error.log但在使用nginx镜像构建的容器时,出现无法查看日志的问题:用cat命令后无反应通过如下命令可以看到,文件被重定向到标准输出和标准错误>>> ls -la /var/log/nginx/lrwxrwxrwx 1 root root 11 Sep 9 18:26 access.log -> /dev/s原创 2021-09-14 11:59:23 · 8336 阅读 · 0 评论 -
爬坑Nginx limit_req
不知道什么时候开始,我对Nginx的limit_req印象是下面这样的:下面的配置通过rate参数,实现每秒300次请求的处理http { limit_req_zone $binary_remote_addr zone=perip:2m rate=300r/s; server { location ~ / { limit_req zone=perip; } }} 但如果你用ab进行测试,你会发现>>> ab -c 300 -n 300原创 2021-09-14 10:47:59 · 426 阅读 · 0 评论 -
Nginx实现乱序匹配路径中的多个query参数
最近项目想实现在反向代理层判断query参数,比如强制要求必须存在foo和bar参数,如果不满足条件就404最开始想通过正则来进行多字符串乱序匹配在网上搜了好久,唯一一个几乎能够满足要求的,发现在Nginx中无法使用。最终还是需要使用if进行条件判断https://stackoverflow.com/a/11310817/7151777但是Nginx语法竟然不支持if条件的逻辑与或非,而且没有else例如如下写法就会报错server { ... location ~原创 2021-09-08 11:46:15 · 941 阅读 · 0 评论 -
记一次因tcp_tw_recycle误设置为1导致服务器无法正常建立TCP连接的问题排查
背景为某SaaS平台的数据推送服务写的接口无法及时响应数据推送请求,导致频繁出现请求超时。接口部署在公司的阿里云上。2021-08-25而放在公司以外的服务器上时就一切正常了。2021-08-26原创 2021-08-30 10:04:38 · 1052 阅读 · 0 评论 -
ping/ssh一个网段内的所有ip
今天遇到一个问题,树莓派接上电源,但没有显示器,只能通过ssh连接,而使用之前的ip无法连接,估计是分配的ip变化了。所以目前已知的信息只有10.8.81.x网段,如果一个一个试太麻烦了,我们可以通过shell脚本自动帮我们一个一个ip尝试。ping一行代码for i in {1..254}; do ping -c 2 -W 1 10.8.81.$i; if [ $? -eq 0 ]; then continue >> pingall.log; else echo 'down'; fi;原创 2021-07-23 15:38:19 · 1387 阅读 · 0 评论 -
【Sentry使用】忽略logger以避免重复的两种方式
某些情况下我们希望sentry不要上报logger数据。比如错误已经上报,而通过logger.error写入日志的数据也会上报,导致重复。有两种方式:第一种from sentry_sdk.integrations.logging import ignore_loggerignore_logger("a.spammy.logger")logger = logging.getLogger("a.spammy.logger")logger.error("hi") # no error sent原创 2021-07-12 15:43:11 · 755 阅读 · 0 评论 -
记一次CentOS+Docker+Nginx+uWSGI+MongoDB的单机并发量提升过程
最近在做小程序后端开发,使用Docker+Nginx+uWSGI+MongoDB的架构最终部署图如下:最开始在对新增订单的接口进行压测时出现100并发就有大量失败的情况,日志显示"WriteConflict error: this operation conflicted with another operation.",分析后得出找出原因:新增订单压测时是对单一用户进行,即单一用户新增100个订单,而每个新增订单的业务逻辑需要在事务中读写该用户的单个document,从而导致大量请求获取该docu原创 2021-06-09 15:04:20 · 930 阅读 · 0 评论 -
docker-compose中加入已存在的网络并设置ip地址
今天六一儿童节,昨天新闻报道称要开放三胎,要逐步延迟退休…假设你已经有一个容器在运行nginx,而现在你有一个新的服务app要加入nginx所在的网络nginx-proxy中,并设置ip地址,以便进行反向代理,那么新服务的docker-compose文件可以这么写:version: '3'services: app: image: app container_name: app networks: nginx-proxy: ipv4_add.原创 2021-06-01 22:38:37 · 2809 阅读 · 0 评论 -
【Sentry运维】基于Docker安装的Sentry配置邮箱
sentry 版本:21.5.0sentry本来是支持邮箱的,但是由于sentry默认是通过25端口发送邮件,而阿里云服务器封禁25端口,而sentry的django版本不支持 SSL 加密的 SMTP 协议,所以思路就是更改端口安装django的SMTP SSL插件邮箱设置初次配置>>> vim sentry/config.yml...mail.host: 'smtp.qq.com'mail.port: 587mail.username: '123456@qq.原创 2021-05-17 14:32:06 · 3317 阅读 · 0 评论 -
【MongoDB】基于Docker的MongoDB replica set(副本集)搭建
最近项目中需要用到MongoDB,由于资源有限,手头上就只有两台云服务器和一些本地服务器,购买阿里云的MongoDB最低配的1C2G3节点的一年也要三四千块钱,索性自己搭一个吧。以下理论性质的内容是我用两天时间从各个博客汇总过来,再经过我个人的理解总结出来的,所以可能会有偏差,还望不吝赐教MongoDB集群分为三种:主从复制模式(Master Slave Replication)副本集模式分片模式##主从复制模式(Master Slave Replication)从官方文档中可以看到,原创 2021-04-26 21:36:50 · 2270 阅读 · 0 评论 -
基于Docker的MongoDB数据export和import
之前有命令如cloneCollection、cloneDatabase,随着版本更新,逐渐被废弃,目前官方推荐的导出导入方式为mongoexport和mongoimport两个命令以下方式适用于使用docker部署mongodb的方式mongoexport# 进入容器,注意是进入容器,而不启动mongo shell>>> docker exec -it mongo /bin/sh# 由于数据库使用了用户名密码验证,所以多了authenticationDatabase、userna原创 2021-04-25 11:09:39 · 816 阅读 · 0 评论 -
基于Docker的nginx配置ssl使https访问
今天要把用docker+nginx+flask搭的服务部署到服务器上,供小程序使用,小程序只能使用https方式访问接口,故需要进行一些配置。全过程只需要配置nginx即可,flask不需要动。容器必须把443端口打开将ssl证书.key和.pem两个文件放入容器中可以通过docker cp命令或者挂载目录的方式;将容器中的.key和.pem两个文件放在某目录下,比如/etc/nginx/ssl修改nginx配置文件server { listen 443 ssl; ss原创 2021-04-23 18:05:35 · 518 阅读 · 0 评论 -
【Sentry使用】使用local scope实现动态添加自定义tag
首先说一下心得:一定要看官方文档,绝大部分的案例及问题官方文档都会有说明之前用sentry+flask,把失败的响应都传到sentry上。但发现,信息中缺少两个至关重要的定位信息’appId’和’entryId’,我希望它能出现在tags中最开始是想通过before_send方法在send前对event进行一些处理,比如添加tag。import sentry_sdkdef before_send(event, hint): event['tag'] = {'appId':'xxxxx', '原创 2021-04-15 19:32:58 · 1338 阅读 · 0 评论 -
【Sentry运维】基于Docker部署的Sentry数据备份与导入以及问题修复
由于之前部署sentry的服务器资源有限,故需要将其迁移至新的服务器官方有说明文档,有两种数据备份方式快速备份使用sentry提供的export命令,备份只包括配置数据,而不包括历史event数据完整备份将’sentry-'开头的所有容器进行备份,这种备份方式能备份所有历史event数据由于历史数据没什么用了,我选择快速备份,但在用官方的快速备份命令时,导入过程一直报错>>> docker-compose run --rm -T web import /home/back原创 2021-04-14 09:14:42 · 2336 阅读 · 0 评论 -
解决阿里云已开放端口,但telnet仍然不通的问题
环境阿里云 CentOS 7.9问题描述:阿里云服务器需要开两个端口:9000和5732运维的同事告知我已经开开了服务器上的服务我也已经运行了但telnet那两个端口出现9000通,5732不通的问题问题分析:可能是服务器上防火墙设置的问题>>> systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/原创 2021-04-13 18:28:01 · 12496 阅读 · 0 评论 -
独立Docker部署的Portainer升级版本
大概一年前安装了Portainer 1.24.0,但中间没有进行过版本升级,今天相对其进行一次版本升级,发现遇到问题了。根据官方文档,Portainer版本大于等于1.24.1,升级只需要>>> docker stop portainer>>> docker rm portainer>>> docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always --pul原创 2021-04-13 17:37:31 · 1622 阅读 · 0 评论 -
【Sentry运维】Docker下Sentry安装及使用
安装>>> git clone https://github.com/getsentry/onpremise>>> cd onpremise安装前先检查一下9000端口是否被占用:>>> netstat -nltp|grep 9000tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 22202/docker-proxy看到了吧,原创 2021-03-23 14:33:38 · 2726 阅读 · 2 评论 -
GitLab安装及使用
背景:在纠结使用Jenkins还是GitLab作为CI/CD工具,最终决定使用gitlab,原因就是非常看好GitLab的未来。安装环境:CentOS 7.8.2003部署:允许http、https、ssh连接>>> sudo yum install -y curl policycoreutils-python openssh-server>>> sudo systemctl enable sshd>>> sudo system原创 2020-06-28 17:48:42 · 1762 阅读 · 0 评论 -
Portainer 1.24.0安装及使用
背景:随着工作的不断推进,部署的机器越来越多,逐渐形成多服务器的集群系统,而对这些服务器的容器运维管理目前都是通过命令行方式登录到该主机进行,对管理人员要求较高。Portainer是一个开源的跨平台docker可视化管理平台,采用B/S架构,通过docker方式部署portainer非常容易部署:服务器主机:# 修改docker配置# 方式一:>>> vim /usr/lib/systemd/system/docker.service# 在ExecStart参数后追加 -H原创 2020-06-16 10:03:25 · 1058 阅读 · 0 评论 -
Harbor 2.0.0安装及使用
背景:随着工作的不断推进,镜像越来越多,部署的机器越来越多,每次部署都需要build一次镜像非常耗时,尤其是在树莓派上build带有pip3 install pandas的镜像,往往耗时一个小时(虽然apt install python3-pandas快,但目前版本仅支持到0.25.3,1.0.0+的新接口并不支持,如pandas.json_normalize),因而就萌生了将镜像上传至镜像仓库中,而镜像仓库分为公共仓库和私有仓库,受限于隐私性,只能考虑私有仓库,目前的仓库部署方式:部署:服务器主机:原创 2020-06-08 16:18:58 · 4879 阅读 · 0 评论 -
解决snapd导致树莓派负载高的问题
今天在例行巡查树莓派集群的时候发现system load达到2.82,很诡异,上面并没有什么服务在唤醒期啊查了一下后台,发现snapd进程非常活跃,但这不是个包管理工具么?查了一下剩余几台树莓派,发现有的也存在snapd CPU占用高的问题考虑了一下,应该不会用到snapd来进行包管理,所以卸载它吧>>> sudo apt purge snapd>>> sudo apt autoremove之后一切就恢复正常了参考:http://fisherwor原创 2021-03-19 11:19:36 · 941 阅读 · 0 评论 -
记一次因为docker空间爆满导致的进入容器失败解决过程
>>> docker volume rm $(docker volume ls -q)>>> docker system df>>> docker system df -v原创 2021-03-17 09:03:17 · 771 阅读 · 0 评论