OpenStack是一个云操作系统,它控制整个数据中心的大型计算、存储和网络资源池,所有这些资源都通过一个仪表板进行管理,该仪表板赋予管理员控制权,同时允许用户通过web界面提供资源。
它为私有云和公有云提供可扩展的弹性的云计算服务,提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。
Kolla旨在为运行OpenStack提供生产就绪的容器和部署工具。
Kolla-Ansible是Kolla的子项目,该项目使用Ansible部署Kolla容器映像。
Kolla-Ansible是开箱即用的工具,即使你是个新手也可以快速部署OpenStack,也允许你根据需求定制化的部署。
在容器中部署OpenStack最大的特点就是升级,用户基本是无感知的状态下完成。同时可以实现本地与云端一致,一次开发随处运行,通过迁移到不同的设备,快速的完成部署和升级操作。
本文将以详细操作指导的方式,给出一种在Docker容器环境中部署OpenStack的指导方法。
两台server,一台作为controller,另一台作为compute节点,操作系统CentOS 7.6.1810 镜像CentOS-7-x86_64-DVD-1810.iso。服务器具体配置要求如下:
SELinux不关闭的情况下无法实现,会限制ssh免密码登录
[root@localhost ~]#setenforce 0 [root@localhost ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux |
防止安装时出现各个组件的端口不能访问的问题
[root@localhost ~]#systemctl stop firewalld && systemctl disable firewalld |
大多数操作系统会默认启动 Libvirt,但使用 Kolla 来部署 OpenStack 的话,Libvirt 应该在容器中运行并管理虚拟机。所以宿主机的 Libvirt 需要被关闭,以免造成冲突。
[root@localhost ~]#systemctl stop libvirtd.service |
控制节点
[root@localhost ~]#hostname controller |
计算节点根据节点名称修改
[root@localhost ~]#vim /etc/hosts |
说明:网卡名字不是必须改,保持各服务器使用的网卡名称一样。
网卡1:
[root@localhost ~]#cd /etc/sysconfig/network-scripts |
网卡2:
[root@localhost ~]#cd /etc/sysconfig/network-scripts |
修改网卡文件名称:
[root@localhost ~]#mv ifcfg-enp6s0f0 ifcfg-eno1 |
修改net配置文件
[root@localhost ~]#vi /etc/udev/rules.d/70-persistent-net.rules |
ATTR和服务器两网口MAC地址保持一致
重启服务器
[root@localhost ~]#reboot |
重启网络服务
[root@localhost ~]#systemctl restart network |
[root@localhost ~]#yum install -y epel-release |
[root@controller ~]#yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python |
[root@controller ~]#pip install -U ansible |
[root@localhost ~]#tee /etc/yum.repos.d/docker.repo <<-‘EOF’ |
解决方法如下:
[root@compute1 ~]#rpm -qa |grep container-selinux-2.107-3.el7.noarch |
[root@localhost ~]#mkdir /etc/systemd/system/docker.service.d |
[root@localhost ~]#systemctl daemon-reload |
[root@localhost ~]#pip install docker |
[root@controller ~]#yum install git |
[root@controller ~]#pip install kolla-ansible |
如果报如下错误
Cannot uninstall ‘PyYAML’. It is a distutils installed project and thus we
cannot accurately determine which files belong to it which would lead to only a
partial uninstall.
[root@controller ~]#rm -rf /usr/lib64/python2.7/site-packages/PyYAML* |
[root@controller ~]#cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/ [root@controller ~]#cp /usr/share/kolla-ansible/ansible/inventory/* /home/ |
[root@controller ~]#ssh-keygen #一路回车 |
(演示版本可以跳过此步骤)
[root@computer1 ~]#pvcreate /dev/sdb |
解决方法如下:
[root@compute1 ~]#pvcreate devsdb |
解决:
[root@compute1 ~]#dd if=/dev/urandom of=/dev/sdb bs=512 count=64 |
[root@compute1 ~]#systemctl restart lvm2-lvmetad.service |
[root@controller ~]#vim /home/multinode |
[root@localhost ~]#vim /etc/kolla/globals.yml |
[root@controller ~]#kolla-ansible pull -i /home/multinode |
管理网口eno1,外网网口eno2
如果采用cinder磁盘存储
kolla_base_distro: “centos” kolla_install_type: “binary”openstack_release: “stein” kolla_internal_vip_address: “192.168.4.2” # Valid options are [ qemu, kvm, vmware, xenapi ] nova_compute_virt_type: “kvm” network_interface: “eno1” api_interface: “{{ network_interface }}” neutron_external_interface: “eno2” neutron_plugin_agent: “openvswitch” enable_cinder: “yes” enable_cinder_backend_iscsi: “no” enable_cinder_backend_lvm: “yes” enable_haproxy: “yes” enable_heat: “yes” glance_enable_rolling_upgrade: “no” ironic_dnsmasq_dhcp_range: tempest_image_id: tempest_flavor_ref_id: tempest_public_network_id: tempest_floating_network_name: |
如果采用外部ceph存储:
kolla_base_distro: “centos” kolla_install_type: “binary” openstack_release: “stein” kolla_internal_vip_address: “192.168.4.2” # Valid options are [ qemu, kvm, vmware, xenapi ] nova_compute_virt_type: “qemu” nova_backend_ceph: “yes” network_interface: “eno1” api_interface: “{{ network_interface }}” neutron_external_interface: “eno2” neutron_plugin_agent: “openvswitch” enable_ceph: “no” enable_cinder_backup: “yes” cinder_backup_driver: “ceph” enable_cinder: “yes” enable_cinder_backend_iscsi: “no” enable_cinder_backend_lvm: “no” enable_haproxy: “yes” enable_heat: “yes” enable_sahara: “yes” enable_trove: “yes” cinder_backend_ceph: “yes” glance_backend_ceph: “yes” glance_enable_rolling_upgrade: “no” ironic_dnsmasq_dhcp_range: tempest_image_id: tempest_flavor_ref_id: tempest_public_network_id: tempest_floating_network_name: |
这个密码文件可以使用工具自动生成,也可以手动输入但是手动输入需要注意格式,在:后需要空一格
再输入;而且ssh_key也比较麻烦所以推荐使用工具自动生成但是直接输入
[root@controller ~]#kolla-genpwd |
修改dashboard登录密码
[root@controller ~]#vi /etc/kolla/passwords.yml keystone_admin_password: admin |
[root@controller ~]#vim /home/multinode |
[root@controller ~]#kolla-ansible prechecks -i /home/multinode |
[root@controller ~]#kolla-ansible -i /home/multinode bootstrap-servers |
[root@controller ~]#kolla-ansible deploy -i /home/multinode |
[root@controller ~]#kolla-ansible post-deploy -i /home/multinode |
### 修改镜像版本(此处不用更新,以后想更新版本再更新)
[root@controller ~]# vim /etc/kolla/globals.yml |
[root@controller ~]#kolla-ansible -i /home/multinode reconfigure |
#如果安装有错误,想重新安装,可以选择如下操作
##将删除所有容器和卷
[root@controller ~]#kolla-ansible destroy –yes-i-really-really-mean-it -i /home/multinode |
[root@controller ~]#kolla-ansible post-deploy |
执行后会自动下载cirros镜像, 创建网络, 并创建一批测试虚拟机.
[root@controller ~]#/usr/share/kolla-ansible/init-runonce |
[root@controller ~]#grep admin /etc/kolla/passwords.yml |
[root@controller ~]#pip install python-openstackclient |
[root@controller ~]#openstack availability zone list |
[root@controller ~]#openstack host list |
[root@controller ~]#openstack hypervisor list |
[root@controller ~]#openstack network list |
[root@controller ~]#openstack security group list |
[root@controller ~]#openstack flavor create –id 0 –vcpus 1 –ram 64 –disk 1 m1.nano |
[root@controller ~]#openstack server create –flavor m1.nano \ |
–flavor 实例类型
–image 镜像
–nic 网络 net-id网络id 第4步查得
–availability-zone nova:compute1:compute1 前三步查得
compute1为指定计算节点。
从上面的安装过程我们发现Kolla-Ansible来完成OpenStack安装过程非常的简洁,不需要过多修改OpenStack的配置文件,从而可以很轻松的完成部署和升级等操作。
参考资料