赞
踩
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dandanfengyun/article/details/112917279
收起
CentOS7系统配置
VMware虚拟机,内存8G,硬盘100G(swap分区4G,boot分区200M,剩下全给根目录/)+50G(系统安装完成后添加,作为cinder backup的 VG卷组),CPU开启虚拟化支持,双网卡桥接模式。
关闭防火墙
- systemctl disable firewalld
- systemctl stop firewalld
关闭selinux
vi /etc/selinux/config
SELINUX=disabled
需重启系统后生效
setenforce 0
命令可将当前selinux设置为permissive,重启系统后失效
设置dns服务器地址
- cat >> /etc/resolv.conf << EOF
- nameserver 8.8.8.8
- nameserver 8.8.4.4
- EOF
hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件
设置本机IP与域名
- cat >> /etc/hosts << EOF
- 192.168.199.90 ALLInOne-Kolla
- EOF
设置主机名
- cat >> /etc/hostname << EOF
- ALLInOne-Kolla
- EOF
hostnamectl set-hostname ALLInOne-Kolla
IP地址 | 网络类型 | 网卡 在OpenStack网络中的作用 |
---|---|---|
192.168.23.102 | bridge(桥接) | ens33 OpenStack内部管理网络(management network),Horizon web界面访问就是通过该网卡 |
无(不能配置IP地址) | bridge(桥接) | ens34 外部网络(external network),让neutron(OpenStack中的网络组件)的br-ex绑定使用,OpenStack中的虚拟机是通过该网卡与外网通信 |
vi /etc/sysconfig/network-scripts/ifcfg-ens33
//修改以下几行,如果不存在则添加
- BOOTPROTO=static //将dhcp改为static,使自动获取改为静态获取
- ONBOOT=yes //启动用该网卡
- IPADDR=192.168.23.102 //设置IPv4地址
- NETMASK=255.255.255.0 //设置子网掩码
- GATEWAY=192.168.23.2 //设置默认网关
vi /etc/sysconfig/network-scripts/ifcfg-ens34
//修改以下几行,如果不存在则添加。
- TYPE=Ethernet
- NAME=ens34
- DEVICE=ens34 //如果是开启虚拟机后添加网卡,需要手动编辑以上三行
- BOOTPROTO=none //将dhcp改为none,使自动获取改为静态获取
- ONBOOT=yes //启用该网卡
systemctl restart network
1.下载epel源
yum -y install epel-release
2.下载 vim 和 net-tools
yum -y install vim net-tools
3.安装基础包
yum -y install python-devel libffi-devel gcc openssl-devel git python-pip
设置pip的下载源 阿里云
mkdir .pip
- cat > .pip/pip.conf << EOF
- [global]
- index-url=http://mirrors.aliyun.com/pypi/simple/
- [install]
- trusted-host=mirrors.aliyun.com
- EOF
升级pip# 最好不要升级 升级之后使用会报语法错误
pip install --upgrade pip==20.3.4
或者找到对应版本的get-pip文件 手动升级。
wget https://bootstrap.pypa.io/2.7/get-pip.py
python get-pip.py
如果不指定版本号
pip install --upgrade pip
一般来说可以成功,但有时升级完后pip 使用时报错sys.stderr.write(f“ERROR: {exc}“)
莫名的错误。。。可能是21.0版本的问题,可以尝试安装20.3.4版本
ssh-keygen
生成ssh公钥,默认设置即可,按三次回车。
ssh-copy-id root@ALLInOne-Kolla
ssh-copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的账户下。
选择yes,输入root用户 密码
6.安装docker
curl -sSL https://get.docker.io | bash
设置docker 容器镜像加速,阿里云
- cat >> /etc/docker/daemon.json << EOF
- {
- "registry-mirrors": ["https://4606dfbh.mirror.aliyuncs.com"]
- }
- EOF
设置docker volume卷挂载方式 Share 方便增加磁盘,不用重启docker
mkdir -p /etc/systemd/system/docker.service.d
- cat >> /etc/systemd/system/docker.service.d/kolla.conf << EOF
- [Service]
- MountFlags=shared
- EOF
重启docker
- systemctl daemon-reload
- systemctl restart docker
Kolla是OpenStack下用于自动化部署的一个项目,它基于docker和ansible来实现,其中docker主要负责镜像制作和容器管理,ansible主要负责环境的部署和管理。
Kolla实际上分为两部分:
Kolla部分提供了生产环境级别的镜像,涵盖了OpenStack用到的各个服务;Kolla为操作OpenStack云提供可生产的容器和部署工具。
Kolla-ansible部分提供了自动化的部署。Kolla-Ansible在Docker容器中部署OpenStack服务和基础设施组件。
使用pip时可能有警告
- /usr/lib/python2.7/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.3) or chardet (2.2.1) doesn't match a supported version!
- RequestsDependencyWarning)
- pip uninstall -y urllib3
- pip uninstall -y chardet
- pip install requests
1.使用pip安装ansible,注意不要使用yum安装,否则会与kolla中的YAML包冲突。且ansible版本应为2.6-2.9
pip install ansible==2.9.0
2.pip安装kolla-ansible 同样需要指定版本,版本对应如下
https://releases.openstack.org/teams/kolla.html
pip install kolla-ansible==9.3.0
如果有报错 ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately
pip install kolla-ansible --ignore-installed PyYAML
未git clone kolla和kolla-ansible项目。
Kolla为操作OpenStack云提供可生产的容器和部署工具,也就是可以通过kolla的部署工具来构建镜像,docker hub中存在这些镜像。可以直接pull。
Kolla-Ansible在Docker容器中部署OpenStack服务和基础设施组件。已经通过pip 安装了,不必再通过git项目获取。
且通过pip 安装的kolla-ansible同时下载了配置文件。且可通过kolla-ansible的剧本完成 镜像的拉取,容器的创建等,不必通过kolla工具。
1.复制配置文件到/etc/kolla/
- cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
- cp /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/
文件说明:all-in-one是安装单节点OpenStack的ansible自动安装配置文件;multinode是安装多节点OpenStack的ansible自动安装配置文件;globals.yml是OpenStack部署的自定义配置文件;passwords.yml是OpenStack中各个服务的密码文件。
生成密码到passwords.yml 包括dashboard认证密码,grafana登录密码等
kolla-genpwd
这些密码是即将设置到OpenStack中的,安装部署OpenStack前可以修改,但是OpenStack安装完成后,不要再修改。
/etc/kolla/passwords.yml
2.添加一块新硬盘,设置为lvm vg卷组 作为cinder 卷
yum -y install lvm2
创建一个PV卷
pvcreate /dev/sdb
创建卷组 卷组名cinder-volumes
vgcreate cinder-volumes /dev/sdb
- [root@ALLInOne-Kolla ~]# vgdisplay
- --- Volume group ---
- VG Name cinder-volumes
- System ID
- Format lvm2
- Metadata Areas 1
- Metadata Sequence No 1
- VG Access read/write
- VG Status resizable
- MAX LV 0
- Cur LV 0
- Open LV 0
- Max PV 0
- Cur PV 1
- Act PV 1
- VG Size <20.00 GiB
- PE Size 4.00 MiB
- Total PE 5119
- Alloc PE / Size 0 / 0
- Free PE / Size 5119 / <20.00 GiB
- VG UUID H9H1Aa-gdbE-W0rV-SLBC-wMPL-baPQ-RLEJCe
-
- --- Volume group ---
- VG Name centos
- System ID
- Format lvm2
- Metadata Areas 1
- Metadata Sequence No 3
- VG Access read/write
- VG Status resizable
- MAX LV 0
- Cur LV 2
- Open LV 2
- Max PV 0
- Cur PV 1
- Act PV 1
- VG Size 99.80 GiB
- PE Size 4.00 MiB
- Total PE 25549
- Alloc PE / Size 25549 / 99.80 GiB
- Free PE / Size 0 / 0
- VG UUID PsaQNJ-QcF9-knVD-1KxF-tuAV-qSpc-NI7ERV
3.编辑golbals配置文件。(只设置安装基本的OpenStack组件。)
vim /etc/kolla/globals.yml
- # Valid options are ['centos', 'debian', 'rhel', 'ubuntu'] 系统类型
- kolla_base_distro: "centos"
-
- # Valid options are [ binary, source ] 安装方式
- kolla_install_type: "source"
-
- # Do not override this unless you know what you are doing. 安装版本
- openstack_release: "train"
-
- # Location of configuration overrides 自定义配置文件位置。(默认各组件配置文件路径是/etc/kolla/{服务名}/配置文件)
- 如果在/etc/kolla/config设置了相关服务的配置文件,会将该配置文件替换原配置文件(复制该文件替换原文件。。。)
- 使用前还是复制原配置文件到/etc/kolla/config再在基础上做修改更好。
- #node_custom_config: "/etc/kolla/config"
-
- # OpenStack内部管理网络地址。
- #如果设置了高可用haproxy,此处为VIP(虚拟漂移IP)。使用ALLinOne配置,直接将ens33IP 写入即可
- kolla_internal_vip_address: "192.168.199.90"
-
- # OpenStack内部管理网络地址的网卡接口
- network_interface: "ens33"
-
- # 网卡应该在没有IP地址的情况下处于活动状态。
- neutron_external_interface: "ens34"
-
- # 关闭高可用
- enable_haproxy: "no"
-
- # 设置块存储cinder。默认使用lvm时块存储名称cinder-volumes
- enable_cinder: "yes"
- enable_cinder_backup: "yes"
- enable_cinder_backend_lvm: "yes"
- #cinder_volume_group: "cinder-volumes"
-
- # Valid options are [ qemu, kvm, vmware, xenapi ]
- # 如果设置虚拟机开启了CPU虚拟化 或者 宿主机支持CPU虚拟化且开启。那么可以使用kvm。 如果未启用CPU虚拟机,选择qemu。
-
- nova_compute_virt_type: "qemu"
4.编辑 allinone 文件。
vim /etc/kolla/all-in-one
修改3到19行
- [control]
- ALLInOne-Kolla
-
- [network]
- ALLInOne-Kolla
-
- [compute]
- ALLInOne-Kolla
-
- [storage]
- ALLInOne-Kolla
-
- [monitoring]
- ALLInOne-Kolla
-
- [deployment]
- ALLInOne-Kolla
-
1.bootstrap-server安装OpenStack所需的依赖包。
kolla-ansible bootstrap-servers -i /etc/kolla/all-in-one
2.pull 拉取docker镜像。有时候出错停止,重新执行就好了。
kolla-ansible pull -i /etc/kolla/all-in-one
3.检测安装。
kolla-ansible prechecks -i /etc/kolla/all-in-one
4.部署安装 不进行pull操作,直接deploy也是可以的。deploy会先把镜像下载到本地,然后设置配置文件,再运行容器。
kolla-ansible deploy -i /etc/kolla/all-in-one
5.验证部署,并且生成/etc/kolla/admin-openrc.sh认证文件。
kolla-ansible post-deploy -i /etc/kolla/all-in-one
kolla安装OpenStack各个组件docker,容器使用的host网络模式,该模式下的Docker 容器会和host宿主机共享同一个网络namespace,故Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。换言之,Docker Container的IP地址即为宿主机 eth0的IP地址。
1.各个组件的日志文件.多个组件共用一个docker volume。
ls /var/log/kolla/
2.各个组件的配置文件
ls /etc/kolla/
可以修改配置文件,然后重启对应的docker 容器。
3.各个组件挂载的数据卷
docker volume ls
1.安装OpenStack命令行。
先安装版本不匹配的组件
pip install -I ipaddress
安装命令行工具
pip install python-openstackclient
2.初始化OpenStack 如网络 安全组 实例类型等。通过init-runonce文件完成。
编辑init-runonce文件 去除 cirros镜像下载相关(下载速度特别慢)
设置外部网络相关
vim /usr/share/kolla-ansible/init-runonce
- # This EXT_NET_CIDR is your public network,that you want to connect to the internet via.
- # 与外部连接网络 相关设置
- ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
- EXT_NET_CIDR=${EXT_NET_CIDR:-'192.168.199.0/24'}
- EXT_NET_RANGE=${EXT_NET_RANGE:-'start=192.168.199.20,end=192.168.199.79'}
- EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'192.168.199.1'}
-
- # 注释掉与镜像下载相关
- echo Checking for locally available cirros image.
- # Let's first try to see if the image is available locally
- # nodepool nodes caches them in $IMAGE_PATH
- #if ! [ -f "${IMAGE_PATH}/${IMAGE}" ]; then
- # IMAGE_PATH='./'
- # if ! [ -f "${IMAGE_PATH}/${IMAGE}" ]; then
- # echo None found, downloading cirros image.
- # curl -L -o ${IMAGE_PATH}/${IMAGE} ${IMAGE_URL}/${IMAGE}
- # fi
- #else
- # echo Using cached cirros image from the nodepool node.
- #fi
-
- #echo Creating glance image.
- #openstack image create --disk-format qcow2 --container-format bare --public \
- # --property os_type=${IMAGE_TYPE} --file ${IMAGE_PATH}/${IMAGE} ${IMAGE_NAME}
加载认证
source /etc/kolla/admin-openrc.sh
初始化OpenStack。(部署完成未操作过OpenStack,不然可能有奇怪的错误)(不进行这一步,自己手动创建网络也是可以的)
/usr/share/kolla-ansible/init-runonce
执行命令可能会报错ImportError: No module named queue
replace “import queue” with:
from multiprocessing import Queue as queue
将相应报错文件 将import queue
改为
- /usr/lib/python2.7/site-packages/openstack/utils.py
- /usr/lib/python2.7/site-packages/openstack/cloud/openstackcloud.py
from multiprocessing import Queue as queue
3.可以使用OpenStack命令行工具对openstack进行操作。如查看镜像,创建实例等
操作前也要先完成认证。
source /etc/kolla/admin-openrc.sh
openstack image list
4.登录dashboard。
如果创建的实例启动卡在Booting from Hard Disk。可尝试修改镜像文件元数据。修改硬盘属性为ide,网卡属性为e1000
openstack image set --property hw_disk_bus=ide --property hw_vif_model=e1000 92ddf5ae-0c96-4522-b77e-17afa517e386
- [root@ALLInOne-Kolla ~]# kolla-ansible -h
- Usage: /usr/bin/kolla-ansible COMMAND [options]
-
- Options:
- --inventory, -i <inventory_path> Specify path to ansible inventory file
- --playbook, -p <playbook_path> Specify path to ansible playbook file
- --configdir <config_path> Specify path to directory with globals.yml
- --key -k <key_path> Specify path to ansible vault keyfile
- --help, -h Show this usage information
- --tags, -t <tags> Only run plays and tasks tagged with these values
- --skip-tags <tags> Only run plays and tasks whose tags do not match these values
- --extra, -e <ansible variables> Set additional variables as key=value or YAML/JSON passed to ansible-playbook
- --passwords <passwords_path> Specify path to the passwords file
- --limit <host> Specify host to run plays
- --forks <forks> Number of forks to run Ansible with
- --vault-id <@prompt or path> Specify @prompt or password file (Ansible >= 2.4)
- --ask-vault-pass Ask for vault password
- --vault-password-file <path> Specify password file for vault decrypt
- --verbose, -v Increase verbosity of ansible-playbook
-
- Commands:
- prechecks Do pre-deployment checks for hosts
- check Do post-deployment smoke tests
- mariadb_recovery Recover a completely stopped mariadb cluster
- mariadb_backup Take a backup of MariaDB databases
- --full (default)
- --incremental
- bootstrap-servers Bootstrap servers with kolla deploy dependencies
- destroy Destroy Kolla containers, volumes and host configuration
- --include-images to also destroy Kolla images
- --include-dev to also destroy dev mode repos
- deploy Deploy and start all kolla containers
- deploy-bifrost Deploy and start bifrost container
- deploy-servers Enroll and deploy servers with bifrost
- deploy-containers Only deploy and start containers (no config updates or bootstrapping)
- post-deploy Do post deploy on deploy node
- pull Pull all images for containers (only pulls, no running container changes)
- reconfigure Reconfigure OpenStack service
- stop Stop Kolla containers
- certificates Generate self-signed certificate for TLS *For Development Only*
- upgrade Upgrades existing OpenStack Environment
- upgrade-bifrost Upgrades an existing bifrost container
- genconfig Generate configuration files for enabled OpenStack services
-
- genconfig 生成配置文件,deploy之前设置,生成后可进行相应修改再deploy
-
- reconfigure 看官方文档应该是加载新配置的意思
-
- destroy 删除OpenStack相关组件。
node_custom_config: "/etc/kolla/config"
/etc/kolla/config 就是自定义配置文件的目录(可能需要自己创建该目录)。可以设置的自定义配置文件路径如下。service name服务名,hostname主机名, config file配置文件。
/etc/kolla/config/<< config file >>,
/etc/kolla/config/<< service name >>/<< config file >>
/etc/kolla/config/<< service name >>/<< hostname >>/<< config file >>
注,自定义配置文件会替换原配置文件。。。也就是说reconfigure后原配置文件就不存在了。会复制自定义配置文件到原配置文件位置。修改尽量在原配置基础上修改(先复制再修改。。。)
kolla-ansible reconfigure
https://blog.csdn.net/avatar_2009/article/details/107859727
当设置nova_compute_virt_type: "kvm"
时,有可能有一些问题。
使用kvm时,镜像的元数据需要设为hw_disk_bus=ide hw_vif_model=e1000创建的虚拟实例才能成功启动,否则一直卡在Booting from Hard Disk
创建卷cinder 无法连接到实例上。虽然未报错。。。
如果设置hw_disk_bus=virtio/scsi。实例启动时卡在 Machine UUID。也是无法启动
且附加cinder 卷时 虽然未报错,但是一直无法成功。
(原因未知,可能是在VMware虚拟机部署OpenStack的缘故?) 真实服务器作为宿主机没这种问题?
设置为qemu时(既不用设置元数据实例即可正常启动,也可以成功挂载cinder卷)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。