二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

    • 记一次关于tomcat的踩坑的经历
    • 解决VNC连接闪退的问题
    • 一次升级线上服务器内核的经历
      • 1, 首先通过另一服务器配置 nginx 流量分发。
      • 2, 然后创建一个 SLB 对两台 nginx 进行负载。
      • 3,添加对应域名解析
    • 记一次给笔记安装Windows系统遇到的一些坑
    • 解决一个新安装系统使用yum时报错的问题
    • 服务器存储不够了之直接挂载一块儿新磁盘的操作
    • 服务器存储不够了之在原逻辑卷上扩容的操作
    • 解决php-fpm启动之后没有9000端口的问题
    • 解决MySQL问题:Got error 28 from storage engine
    • 解决git clone报错Peer’s Certificate has expired的问题
    • Linux的普通用户bash突然报错bash fork retry No child processes的解决办法
    • 分析解决脚本执行时总是报出command not found
    • confluence数据目录满了
    • 利用prlimit动态修改应用进程的最大文件打开数
    • vim复制代码包含注释时格式会乱掉解决办法
    • python如何快速迁移依赖库
    • YUM安装提示--skip-broken-to-work-around-the-problem
    • 请求nginx返回413的错误
    • Linux系统环境变量被覆盖所有命令找不到怎么办
    • Centos7更改yum源为阿里云
    • node编译报错
    • git-commit错了如何更改
    • 关于执行journalctl时的一个报错
    • yum安装epel之后报错
    • umount卸载磁盘的时候提示busy
    • pip安装依赖时报ssl的问题
    • lavel框架缓存目录的问题
    • Debian系统中执行shell报错unexpected operator
    • Vuepress项目编译时报routines的错误
    • 一次因为Mac系统升级引发的ssh无法免密登陆的问题
  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • 迎刃而解
二丫讲梵
2018-04-03
目录

一次升级线上服务器内核的经历

文章发布较早,内容可能过时,阅读注意甄别。

服务器 kernel 版本过低,需要进行补丁升级,事实上升级的操作非常简单,也就那么一步两步搞定的问题,但是由于是对线上服务器进行的操作,因此不能鲁莽操作,要让其服务平稳过度才行。

于是,今天说起来是记录升级的,事实上却是要记录一下线上服务平稳过度的一些操作与注意事项的。

先来说明一下之前的情况是怎样的(事实上是有问题的,等下也会说明这个问题的原因)。

image

最最开始,这项服务事实上只有一个 serverA 的,这当然是非常有问题的,但是在没有出现问题以及没有强烈意识的情况下,有些问题始终也就不算问题。终于有一天,serverA 因为一些原因(这个原因又是非常不应该的,即因服务器上其他服务日志突然增大,爆满之后直接影响到这个服务 down 掉了,这可是线上业务,影响当然是不小的。但是以前就是这么过来的,有那么一种原生的野性与鲁莽吧,你可以说这是一种无知或者懒惰,但是,某些规范化的章程还不完善,或者说某些创伤还没有出现,总是感觉不到痛痒,也就无从痛而后勇的。),终于要一变二起来。

变二也是非常简单的,新开一台服务器,部署上一样的服务,每台服务器上都添加 nginx 的代理解析,然后再在前端通过 SLB 进行负载分发,但有一个问题阻碍了这种想法。

原来 serverA 服务在阿里云上,现在进增加的服务器是从公司托管的机房里边开出来的一台机器,于是乎,之前想的用 SLB 的方案就破裂了,最后只是把两台服务都部署起来,然后通过 nginx 的一个负载方案,做了一个流量的分发,而并没有所谓高可用。

现在,就是在这样的一个现实情况下,要对这台服务器进行升级重启,而不能够影响到线上服务。

方法可能有很多,我今天用的方法如下,方法也简单,问题是里边有一些细节需要注意到。

申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

Copyright 二丫讲梵 (opens new window) 版权所有

# 1, 首先通过另一服务器配置 nginx 流量分发。

将本服务器上的 nginx 配置复制到另外一台服务器的 nginx 上去,注意,要暂时将本机的解析中的 upstream 删除,即暂时把将要重启的本机从负载当中踢出,把所有流量先全部放到另外那台 serverB 上去。

# 2, 然后创建一个 SLB 对两台 nginx 进行负载。

a) 首先新建负载均衡。

b) 然后进入到负载均衡详情当中添加端口的监听(443)。

c) 然后将后端两台 nginx 服务器添加进来。

d) 注意要再去两台 nginx 服务器当中配置安全组(白名单)放开刚刚 SLB 的外网 ip 对本机的 443 端口的访问

e) 注意添加两台服务器的时候,暂时先将另一台 nginx 的权重设置为 0.

# 3,添加对应域名解析

去到解析配置界面,将刚刚服务器域名的解析资源记录更改成刚刚 SLB 的 ip。

那么,此时的架构应该是这样的。

image

正如图中所见,就像接的水管一样的,掐住一头,另外一头接着流,并不影响水流一样。

现在需要掐住 serverA 上 nginx 这根管子,今天的操作是直接掐了,这样有可能导致问题。

为了避免一些不确定因素出现,有必要首先在内网做一些测试检验:

1, 在阿里云服务器内网中找一台服务器,将服务对应的域名以及另一台服务器上的 nginx 的 ip 写入服务器的 hosts 当中,然后直接本地 curl -I 域名 进行访问验证,这一层是验证另一台的 nginx 到 serverB 上是否可用,毕竟等下是要干掉 serverA 的。看到返回 200,则说明正常。

2, 然后启动另一台上的 nginx。

3, 此时,服务器上监控 nginx 的日志输出,另一边 SLB 可以把这台服务器权重给调成 0,看是否有流量过来。如果有流量进来了,则说明这一条线是可用的。

4, 实操,关权重,重启。

既然可以使用了,那么来到 SLB,把 serverA 的权重调成 0.此时看到 serverA 上监控的日志已经渐渐不刷了,而新的 nginx 则忙碌起来。

此刻,迅速做一些操作:

yum update kernel -y
shutdown -r now
1
2

连接上以后,将对应的服务跑起来。

然后再重新把 SLB 权重调回来。

就不再动了,刚好把现在的做成一个高可用!

微信 支付宝
上次更新: 2024/07/04, 22:40:37
解决VNC连接闪退的问题
记一次给笔记安装Windows系统遇到的一些坑

← 解决VNC连接闪退的问题 记一次给笔记安装Windows系统遇到的一些坑→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式