ESXI虚拟机磁盘在线扩容

内网有一台ESXI上的虚拟机,用来做构建服务的,因为构建项目逐渐增加,磁盘空间渐渐不足,严重影响使用。
为解决问题,当务之急是将磁盘分区进行扩容,因为磁盘分区做的LVM,可以很方便的动态扩容,在物理机上可以通过加硬盘的方式来解决问题,而ESXI的虚拟机就更方便了,直接将虚拟机关机修改磁盘大小即可,但是修改完的硬盘空间并不会自动扩展到磁盘分区中,还需要我们做一些操作才可以使用,具体操作如下:

1. 创建新分区

ESXI修改完磁盘大小后,增加的磁盘空间表现为当前磁盘剩余未分配空间,需要使用剩余未分配空间新建分区

1
2
3
4
5
6
7
8
9
10
# fdisk /dev/sda
n (新建分区)
p (选择分区类型主分区或扩展分区)
3 (选择分区编号)
回车
回车
t (修改分区类型)
3 (选择分区)
8e (Changed type of partition 'Linux' to 'Linux LVM',修改成LVM类型)
w (写分区表退出)

阅读更多

配置Rsync+inotify实现文件实时同步

1. 项目背景

因为工作需要,需部署一套nginx负载均衡群集,群集须保证所有nginx节点配置文件完全一致;要解决不同服务器之间数据一致,一般采用NFS共享文件、DRBD镜像复制或rsync文件同步来实现,相对于rsync,前两者配置稍麻烦,此处我选择rsync文件同步来保证配置文件一致性。

rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。但是rsync仅仅是同步工具,并不能做到监控文件变化并实时同步,因此还需要配合inotify来实现文件实时同步。

inotify是一种强大的、细粒度的、异步的文件系统事件控制机制。linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。

在这里,我们使用inotify监控文件变化,同时通过脚本来触发rsync将发生变化的文件同步到目标服务器。

术语定义:
客户端–>源服务器(SRC)
服务端–>目标服务器(DEST)

阅读更多

Pyenv安装配置

pyenv是一个Python多版本管理工具,它可以改变全局的Python版本,安装多个版本的Python,设置目录级别的Python版本,还能创建和管理virtual python environments 。所有的设置都是用户级别的操作,不需要sudo 命令。
pyenv通过系统修改环境变量来实现Python不同版本的切换,它在PATH的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而使后方的系统路径失效。

1. 安装pyenv

1.1 git拉取pyenv代码

1
# git clone https://github.com/pyenv/pyenv.git ~/.pyenv

阅读更多

Centos7安装配置RabbitMQ

1. RabbitMQ介绍

RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

---以上内容我抄的

阅读更多

配置Docker使用国内镜像源及镜像加速器

因为众所周知的原因,在国内访问docker官方yum源经常会出现不可知状态,为了正常使用docker,我们需要将docker yum源修改为国内yum源来解决访问慢或者无法访问的问题。
目前国内大多数开放镜像站都提供了docker yum源,如:阿里云、USTC等,此处以阿里云为例。

1. 修改docker-ce.repo文件,配置国内镜像站地址

docker-ce.repo文件可从阿里云或USTC镜像站下载,阿里云下载地址:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

不知为何,阿里云与USTC镜像站上默认的docker-ce.repo文件内部地址均是指向docker官方站https://download-stage.docker.com 这样导致直接下载下来的repo文件无法正常使用,需要将baseurl修改为国内镜像站的地址。

1
2
3
# vim /etc/yum.repos.d/docker-ce.repo
# sed -i 's@https://download-stage.docker.com/linux/centos/7/@https://mirrors.aliyun.com/docker-ce/linux/centos/7/@g' /etc/yum.repos.d/docker-ce.repo
# sed -i 's@https://download-stage.docker.com/linux/centos/gpg@https://mirrors.aliyun.com/docker-ce/linux/centos/gpg@g' /etc/yum.repos.d/docker-ce.repo

修改完成后,yum安装docker就可以直接使用国内yum源了。

阅读更多

使用Nginx来配置服务端兼容APP接口多版本

移动互联网时代,讲究的是快速迭代,为了完善产品功能,一款APP需要不断的更新版本发布功能;而为了不影响用户体验,很多时候我们无法做到每个版本都强制用户更新;这样一来势必要保证APP多版本共存,作为APP与服务端交互的交互的api接口也将存在多个接口共存的情况,所以,我们必须考虑到如何实现APP接口多版本共存。

1. APP接口多版本共存的几种实现方式

1.1 URL请求中加入版本信息

例如:
www.xxx.com/api.xxx?version=v1
www.xxx.com/api.xxx?version=v2

1.2 使用不同子域名来区分不同版本的api接口

例如:
api1.xxx.com
api2.xxx.com

1.3 URL中加入不同版本路径来区分不同版本的api接口

例如:
www.xxx.com/v1/api
www.xxx.com/v2/api

1.4 在URL提交header中加入版本信息

例如:
header信息中直接添加一个字段:http_AppVersion = 1

阅读更多

如何添加Nginx开机启动

一、简述:

Nginx在编译安装完成后不会注册为系统服务,所以需要手工添加系统服务。
本文介绍在CentOS 6和CentOS 7 下添加nginx系统开机启动服务的方法。

阅读更多

修复nginx漏洞(CVE-2017-7529)

漏洞介绍:

2017-07-12 nginx 发布高危漏洞通报,并提供了修复方法及数据包。

漏洞信息:

漏洞编号:CVE-2017-7529
漏洞名称:Nginx敏感信息泄露
官方评级:高危
漏洞描述:当使用nginx标准模块时,允许攻击者如果从缓存返回响应,则获取缓存文件头,在某些配置中,缓存文件头可能包含IP地址的后端服务器或其他敏感信息,从而导致信息泄露。
漏洞利用条件和方式:远程利用
漏洞影响范围:Nginx 0.5.6 - 1.13.2
修复建议:升级到Nginx 1.13.3, 1.12.1。
漏洞详情查看:http://mailman.nginx.org/pipermail/nginx-announce/2017/000200.html

阅读更多

勒索病毒袭Petya预警

近日,代号为Petya的新一轮勒索病毒袭击了俄罗斯、英国、乌克兰等多个国家,机场、银行及大型企业被报告感染病毒,目前中国国内也已有用户中招。据报道,本轮病毒比之前的WannaCry勒索病毒更专业、更难对付。

病毒加密硬盘,勒索比特币

新勒索病毒Petya不仅对文件进行加密,而且直接将整个硬盘加密、锁死,在出现以下界面并瘫痪后,其会自动向局域网内部的其它服务器及终端进行传播。
Petya勒索病毒感染的电脑:

阅读更多

Git 入门及实践

一、文章说明

本文详细介绍git的基础操作及命令详解,并通过两个经典案例进行实践练习。

二、Git介绍:

GIT (分布式版本控制系统)是 Linus Torvalds为了帮助管理Linux内核开发而开发的一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,可以有效、高速的处理从很小到非常大的项目版本管理。

阅读更多