㈠ 如何升级Nginx到最新稳定版
nginx升级最新版本有两种方法:
如果流量不大,就可以先把老的nginx关闭,然后部署新的nginx二进制文件,最后重新启动nginx就可以。
如果流量较大,希望能够在升级过程中不影响服务,那么可以采用平滑的升级二进制文件的方式。具体的做法如下:
首先,备份老的nginx可执行文件:mv nginx nginx.bak;
然后把新的nginx的二进制文件拷贝到之前的nginx目录下;
看一下之前nginx的pid(cat nginx.pid),然后向master进程发送USR2信号,kill -USR2 pid;
关闭老的nginx进程,kill -QUIT pid
㈡ mongodb 能平滑升级吗。我之前用nginx实现过平滑升级。可以做到保证老用户的同时迁移到新版本上。
Replica Set(复制集)滚动升级步骤如下:
检查次节点是否没有访问,如有访问,需要先切换到主节点上
mongostat 查看qps等
关闭次节点数据库,替换mongod版本,重新启动
db.shutdownServer()
替换版本;
启动mongod进程
主节点进行降级,选举出新的主节点
rs.stepdown()
关闭原主节点,替换mongod版本,重新启动。
数据节点全部更新完毕后,替换arbiter节点mongod版本。
如方便进行操作,将主、次节点切换为原状态,并进行监控。
sharding(分片)升级
sharding 滚动升级操作较为繁琐,停止相应进程时一定要考虑清楚对整个MongoDB集群的影响,如果需要同时关闭一台服务器所有进程,一定要确保主节点正常服务或投票能产生新的主节点。参考步骤如下:
禁用balancer
sh.stopBalancer()
首先升级mongos(mongos,mongod之外的工具如mongo mongostat等可先替换)
停止一台mongos,用新版本mongs覆盖原来的版本后,启动mongs;再同样升级其他mongos版本。
升级config server,至少保留一个 config server始终正常状态,依次升级。
停止一台config server,通常同一台服务器上还有mongod数据节点,需要停止该服务器所有
mongod节点,确认停止后能不影响主节点的投票产生(优先升级对应secondary节点)。替换
config server 对应的mongod文件。同样升级其他config server节点。
升级每个分片的复制集,操作同升级Replica Set,若复制集mongod和config server在同一台,则和config server一起升级。
启用balancer
sh.startBalancer()