Openstack mitaka升级ocata

Posted on 2017-05-10(Wed) in 私有云 • 2 min read

Openstack mitaka升级ocata

环境介绍

  • Openstack Controller: ubuntu 16.04
  • Openstack Compute: centos 7.3
  • 组件包括:Keystone,glance,neutron,nova,cinder

本次升级openstack不是在线热升级,升级期间某些服务不可用,没具体测试

预先准备

备份mitaka数据库和配置文件,还有apache2的wsgi配置文件

mkdir -p /tmp/openstack_mitaka_backup/config/

mysqldump --single-transaction --all-databases -uroot -p > \
    /tmp/openstack_mitaka_backup/openstack_db_mitaka_backup.sql

for i in "nova glance cinder neutron keystone openstack-dashboard apache2"; \
    do …

Continue reading

Ubuntu 14.04配置Windows域访问openvpn

Posted on 2017-05-09(Tue) in Linux技巧 • 2 min read

安装openvpn和openvpn ldap 插件

sudo apt-get install openvpn-auth-ldap easy-rsa -y
sudo cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/* /etc/openvpn/
cd /etc/openvpn
sudo gunzip server.conf.gz
sudo cp server.conf server.conf.bak

# 进入/etc/openvpn/easy-rsa目录配置服务器证书
source …

Continue reading

在Python中如何使用Linux的epoll

Posted on 2017-04-14(Fri) in 并发编程 • 3 min read

文档出自这里

从2.6开始,Python包含了访问Linux epoll库的API。这篇文章用几个简单的python 3例子来展示下这个API。欢迎大家质疑和反馈

阻塞socket编程示例

示例1

  • 用python3.0搭建了一个简单的服务:在8080端口监听HTTP请求,把它打印到控制台,并返回一个HTTP响应消息给客户端。

  • 第9行:创建服务器socket。

  • 第10行:允许在11行使用bind()来监听指定端口,即使这个端口最近被其他程序监听。没有这个设置的话,服务不能运行,直到一两分钟后,这个端口不再被之前的程序使用。

  • 第11行:监听这台机器所有可用的IPv4地址上面的8080端口。

  • 第12行:通知服务端socket开始接受来自客户端的连接。

  • 第14行:这行代码直到接收到一个客户端连接才会完成。这时,服务端socket会在服务端机器上面创建一个新的socket,用来和客户端通信。这个新的socket在代码里面就是accept()调用返回的clientconnection 对象。返回的address对象代表着客户端的IP和端口。

  • 第15-17行:组装从客户端传输过来的数据,直到HTTP请求完成。HTTP协议可以参考这里

  • 第18行:把请求打印到控制台,验证操作是否正确。

  • 第19行:发送响应回客户端 …


Continue reading

测试文档

Posted on 2016-11-25(Fri) in Linux技巧 • 1 min read

单独获取当前目录名

import os
def name():
    return os.path.split(os.getcwd())[-1]

WIN关闭一个进程

import ctypes
def kill(pid):
    """kill function for Win32"""
    kernel32 = ctypes.windll.kernel32
    handle = kernel32.OpenProcess(1, 0, pid)

    #使用termina函数结束进程
    return (0 != kernel32.TerminateProcess(handle, 0))

Continue reading

基于Centos6安装docker swarm集群

Posted on 2015-12-09(Wed) in 容器技术 • 2 min read

升级内核到3.8以上

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm

#安装3.10长期支持内核kernel-lt (lt=long-term)
yum --enablerepo=elrepo-kernel install kernel-lt -y

#或者安装主线kernel-ml (ml=mainline)
yum --enablerepo=elrepo-kernel install kernel-ml -y …

Continue reading

Docker常用命令

Posted on 2015-11-26(Thu) in 容器技术 • 1 min read

容器安装操作(Linux内核需大于3.10)

#原始安装
curl -sSL https://get.docker.com/ | sh
#国内安装,daocloud加速
curl -sSL https://get.daocloud.io/docker | sh
#检查安装结果
sudo service docker status

安装docker的更多内容请参见: Docker官方安装文档

容器运行操作

#列出正在运行的容器
docker ps

#列出所有的容器
docker ps -a

#下载一个镜像到本地,并不运行
docker pull ubuntu

#运行一个容器,如果镜像不存在会自动进行pull
docker run -i -t ubuntu /bin/bash …

Continue reading

Linux下SCSI磁盘热插拔

Posted on 2015-11-25(Wed) in Linux技巧 • 1 min read

ESXi5中对Linux热添加磁盘时发现不生效,下文为临时解决方案

转载:技术写真 » Linux下SCSI磁盘热插拔

维护服务器时,有可能需要热插拔硬盘,但是Linux好像并不买单,不会自动检测磁盘的装卸,为此热插拔后,我们需要通知Linux服务磁盘状态。

添加磁盘,其中 2 0 1 0 分别对应 HOST CHAN DEV LUN

echo "scsi add-single-device 2 0 1 0" > /proc/scsi/scsi

查看磁盘

> cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: NECVMWar Model …

Continue reading

Celery简介

Posted on 2015-01-03(Sat) in 任务调度 • 1 min read

Celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。

Celery用于生产系统每天处理数以百万计的任务。

Celery是用Python编写的,但该协议可以在任何语言实现。它也可以与其他语言通过webhooks实现。

由于Celery 3.0系列对以前的系列进行了大量重构优化,现在开始使用就没必要研究旧版本了,所以此介绍以3.0.24的文档为基础。

Celery的工作结构

在使用Celery的时候要明白它的大致结构,Celery的结构非常简单,大致分为3个部分:

  1. worker部分负责任务的处理,即工作线程,在我的理解中工作线程就是你写的python代码,当然还包括python调用系统工具功能
  2. broker部分负责任务消息的分发以及任务结果的存储,这部分任务主要由中间数据存储系统完成,比如消息队列服务器RabbitMQ、redis、 Amazon SQS、MongoDB、IronMQ等或者关系型数据库,使用关系型数据库依赖sqlalchemy或者django的ORM
  3. Celery主类,进行任务最开始的指派与执行控制,他可以是单独的python脚本,也可以和其他程序结合,应用到django或者flask等 web框架里面以及你能想到的任何应用

Celery的安装

Celery只是一个python包,所以可以通过pip或者easy_install安装,除此之外还需要安装broker的系统,我使用的是redis,除了安装redis以外还需要安装celery-with-redis

pip install celery
pip install celery-with-redis …

Continue reading