本文并非技术探讨,纯粹是为了记录一次部署过程,备忘。

本文以安装双节点为例讲述Openstack部署过程。

每台服务器至少需要两块网卡,第一块网卡的IP需要固定,所有服务器的网卡名称要一致。
服务器要开启虚拟化。

以下步骤,除了第1步之外,其他都只需要在执行部署的一个节点上操作。

1、安装两台服务器。

使用CentOS-ocata-x86_64.iso引导,选择install centos7.2 and kolla-ocata(默认),
使用Tab键,修改IP地址、子网掩码、默认网关和主机名,默认IP地址为,主机名分别为node01和node02。

2、配置主机名映射。

在/etc/hosts文件中加上主机配置。

10.5.11.117 node01
10.5.11.118 node02

3、配置SSH免密访问。

生成ssh-key

[root@node01 ~] ssh-keygen

拷贝ssh key到远程主机,ssh的时候就不需要输入密码了

[root@node01 ~] ssh-copy-id root@node01
[root@node01 ~] ssh-copy-id root@node02
[root@node01 ~] ssh-keyscan node01 >> ~/.ssh/known_hosts
[root@node01 ~] ssh-keyscan node02 >> ~/.ssh/known_hosts

4、编辑文件/etc/kolla/globals.yml。

编辑文件/etc/kolla/globals.yml,设置如下参数

kolla_install_type: "source"
openstack_release: "4.0.1"
#虚拟IP必须是一个ping不通的地址
kolla_internal_vip_address: "10.5.11.111"
docker_registry: "localhost:4000"
docker_namespace: "lokolla"
#第一块网卡的名称
network_interface: "eno16777728"
#第二块网卡的名称
neutron_external_interface: "eno33554952"


#如果使用ceph存储,配置以下项
enable_ceph: "yes"
enable_ceph_rgw: "yes"


#如果使用lvm存储,配置以下项
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"


enable_cinder: "yes"
cinder_backend_ceph: "{{ enable_ceph }}"
ceph_pool_type: "replicated"
enable_ceph_rgw_keystone: "no"
glance_backend_ceph: "{{ enable_ceph }}"


enable_neutron_lbaas: "yes"
enable_neutron_fwaas: "yes"
enable_neutron_qos: "yes"


nova_console: "novnc"
nova_backend_ceph: "{{ enable_ceph }}"


glance_backend_ceph: "{{ enable_ceph }}"


enable_freezer: "yes"
enable_horizon_freezer: "{{ enable_freezer | bool }}"


#kibana 开关
enable_central_logging: “yes”


enable_ceilometer: "yes"
ceilometer_database_type: "mongodb"
ceilometer_event_type: "mongodb"
enable_mongodb: "yes"

5、如果使用ceph存储。

启用ceph存储还需要对将要做成osd的磁盘进行初始化准备。例如,在node01上有3块硬盘,其中sda作为系统盘,sdb,sdc未使用,想使用sdb和sdc作为osd,则在node01节点执行以下命令,将磁盘进行初始化:
parted /dev/sdb -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
parted /dev/sdc -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
在multnode配置文件中,确定storage组配置的节点均已完成磁盘的初始化,如:
[storage]
Node01
Node02
Node03
Node01,Node02和Node03已完成磁盘初始化的配置。

6、生成密码。

接下来

[root@node01 ~] kolla-genpwd

编辑 /etc/kolla/passwords.yml ,可修改horizon登陆密码(可选)

keystone_admin_password: admin

7、虚拟化检查。

执行命令:

[root@node01 ~] egrep -c '(vmx|svm)' /proc/cpuinfo

如果返回结果为0则需要配置libvirt 类型为qemu,
修改文件/etc/kolla/config/nova/nova-compute.conf(文件若不存在则创建):

[libvirt]
virt_type = qemu
cpu_mode = none

8、其他准备工作:

如果是单节点部署,需要修改文件/usr/share/kolla-ansible/ansible/group_vars/all.yml,enable_haproxy: “yes”改为“no”。

如果是多节点部署,需要规划节点,修改文件/usr/share/kolla-ansible/ansible/inventory/multinode,内容如下

[control]
node01
node02

[network]
node01
node02

[compute]
node01
node02

[monitoring]
node01
node02

[storage]
node01
node02

9、部署前检查端口占用情况

单节点

[root@node01 ~] kolla-ansible prechecks

多节点

[root@node01 ~] kolla-ansible prechecks -i /usr/share/kolla-ansible/ansible/inventory/multinode

10、开始部署:

单节点

[root@node01 ~] kolla-ansible deploy

多节点

[root@node01 ~] kolla-ansible deploy -i /usr/share/kolla-ansible/ansible/inventory/multinode

11、部署失败之后怎么办

如果部署失败,可以清除然后重新部署,清除的命令是

[root@node01 ~] kolla-ansible destroy -i /usr/share/kolla-ansible/ansible/inventory/all-in-one --yes-i-really-really-mean-it

或者可以清除docker容器重新部署

[root@node01 ~] cd /root/kolla-ansible-4.0.1.dev40/tools/
[root@node01 tools] ./cleanup-containers

12、部署后

生成 admin-openrc.sh 到 /etc/kolla 目录下
单节点

[root@node01 ~] kolla-ansible post-deploy

多节点

[root@node01 ~] kolla-ansible post-deploy -i /usr/share/kolla-ansible/ansible/inventory/multinode

13、部署完成后如果需要重新配置

如果修改了/etc/config/[server]/[server].conf

单节点:

[root@node01 ~] kolla-ansible reconfigure

多节点:

[root@node01 ~] kolla-ansible reconfigure -i /usr/share/kolla-ansible/ansible/inventory/multinode

如果修改了全局配置 /etc/kolla/globals.yml

单节点:

[root@node01 ~] kolla-ansible upgrade
[root@node01 ~] kolla-ansible post-deploy

多节点:

[root@node01 ~] kolla-ansible upgrade -i /usr/share/kolla-ansible/ansible/inventory/multinode
[root@node01 ~] kolla-ansible post-deploy -i /usr/share/kolla-ansible/ansible/inventory/multinode