花生的园子


  • Home

  • Archives

kolla部署Openstack步骤

Posted on 2018-12-09

安装docker

每台节点机器都要安装 docker 并设置下列操作

1
curl -sSL https://get.docker.io | bash
  • docker daemon 设置为 shared 模式
1
2
3
4
5
6
7
mkdir -p /etc/systemd/system/docker.service.d/kolla.conf
cat > /etc/systemd/system/docker.service.d/kolla.conf << EOF
[Service]
MountFlags=shared
EOF
systemctl daemon-reload
systemctl restart docker
  • 加速 docker ,设置本地镜像仓库
1
2
3
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors": ["http://3b374b76.m.daocloud.io"], "insecure-registries": ["172.16.44.101:4000"]}
EOF
  • 设置本地 docker 镜像仓库
1
2
3
docker run -d -p 4000:5000 --restart=always -v /opt/data/registry:/var/lib/registry --name registry registry
# 验证
curl -i http://172.16.44.101:4000/v2/

安装基本工具

1
2
3
4
apt install python-dev libffi-dev gcc libssl-dev python-selinux python-setuptools python-pip
pip install docker kolla-ansible
# 拷贝配置文件至/etc/
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/

kolla-ansible配置

1
2
3
4
5
6
7
8
9
cat /etc/kolla/global.yml

在虚机上部署要设置为qemu

设置本地镜像服务器

双网卡环境,一块设置静态IP,一块设置自动获取

openstack_release版本号

部署openstack

mutlinode 部署时,必须先从官方 docker 仓库中 pull 必要 image,push 到本地镜像仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# pull镜像
kolla-ansible -i multinode pull

# 将镜像打标后push到本地镜像仓库
images=`docker images | awk '$1 !~ /172.16.44.101/ && $2=="queens" {print $1":"$2}'`
# taging
for image in $images
do
docker tag $image
done

tagedImages=`docker images | awk '$1 ~ /172.16.44.101/ && $2=="queens" {print $1":"$2}'`
# pull to local register
for image in $tagedImages
do
docker push $image
# remove tag
docker rmi $image
done
  • 部署
1
2
3
4
5
# 预检查,注意 prechecks 有`MountFlags`报错时,
# /usr/local/share/kolla-ansible/ansible/roles/neutron/tasks/precheck.yml中的
# result.stdout.find('MountFlags=shared')的值应该等于shared,而不是1048576
kolla-ansible -i multinode prechecks
kolla-ansible -i multinode deploy
  • 安装管理工具
1
pip install python-openstackclient python-glanceclient python-neutronclient
  • 生成管理配置
1
2
3
kolla-ansible post-deploy -i multinode
# 生成密码
kolla-genpwd
  • 初始化管理配置
1
source /etc/kolla/admin-openrc.sh
  • 编辑 init-runonce,初始化网络环境
1
2
cp /usr/local/share/kolla-ansible/init-runonce .
./init-runonce

简单的将函数变为多线程执行

Posted on 2018-09-02

在工作中需要ping大量主机检测状态,为了方便,采用python的multiprocess的进程池,方便的将现有函数改造成多进程运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# _*_coding:utf-8_*_

import subprocess
from multiprocessing import Pool


def getStatusList(ip_list):
status = {}
t_list = tuple()
pool = Pool(processes=len(ip_list))
for ip in ip_list:
p = pool.apply_async(ping, (ip,))
t_list += (p,)
pool.close()
pool.join()

for result in t_list:
status.update(result.get())

return status


def ping(ip):
status = subprocess.call(["ping", "-q", "-c 2", "-W 1", ip], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
return {ip: status}


if __name__ == '__main__':
print(getStatusList(['127.0.0.1', '192.168.0.1', '192.168.0.2', '192.168.0.3', '192.168.0.4', '192.168.0.5', '192.168.0.6']))

这里使用了Pool对象,异步调用了ping,可以方便的将现有函数进行改造。

另外,由于GIL的存在,python的多线程无法合理的使用cpu,如果是CPU密集型程序,还是使用多线程更为合理,multiprocess的调用也更加方便。

测试文章

Posted on 2018-07-27

这是一篇测试hexo文章…

luckwang

About program & network & life

3 posts
3 tags
© 2018 luckwang
Powered by Hexo
|
Theme — NexT.Muse v5.1.4