简单架构示意

项目目标

  1. 1. 实现容器化部署docker+ Ansible+openstack-tarin
  2. 2. 使用keeplived监控nova服务实现在单台服务器宕机的情况下能迅速切断连接减轻平台负载
  3. 3. HAprox+Keepalived实现集群的负载均衡和高可用(部署)
  4. 4. 部署采用自动化部署工具kolla
  5. 5. 采用源码方式部署openstack(所有组件服务的源码均存放在对应容器的根下,方便二次开发)
  6. 6. Docker镜像托管至docker-regisiry私有仓库做docker备份以及镜像源
  7. 7. 系统采用centos-2009版本(禁止使用最小化版本CentOS-7-x86_64-Minimal-2009.iso)
  8. 8. 将控制节点资源加入计算服务,此处注意在nova配额时需保留612g的资源来保证controller节点的正常运行
  9. 9. Freezer备份服务无法引入,环境存储资源不足
  10. 10. 部署mariadb高可用(2主)
  11. 11. 双控制节点保证基础服务的高可用
  12. 12. Neutron服务高可用
  13. 13. Kolla支持节点扩展所以本手册适用于拥有2台及以上服务器的实际生产环境
  14. 14. 使用Grafana+prometheus对主机进行监控

前期准备

部署所需组件

部署

1、系统环境初始化

1、网卡配置

eth0(网卡名称根据实际情况修改)

  1. TYPE=Ethernet
  2. BOOTPROTO=static
  3. NAME=eth0
  4. DEVICE=eth0
  5. ONBOOT=yes
  6. IPADDR=192.168.100.11
  7. NETMASK=255.255.255.0
  8. GATEWAY=192.168.100.1
  9. DNS1=114.114.114.114
  10. DNS2=223.5.5.5

eth1(网卡名称根据实际情况修改)

  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. NAME=eth1
  4. DEVICE=eth1
  5. ONBOOT=yes

第一张网卡配置为静态地址且连接网络

第二张网卡配置为激活状态无ip模式none

所有节点均配置

2、设置主机名 以及hosts解析

  1. hostnamectl set-hostname openstack-con01 && bash
  2. hostnamectl set-hostname openstack-con02 && bash
  3. hostnamectl set-hostname openstack-con03 && bash
  4. vim /etc/hosts #设置hosts 先清空hosts文件 然后添加如下
  5. 192.168.100.10 openstack-con01
  6. 192.168.100.11 openstack-con02
  7. 192.168.100.12 openstack-con03
  8. #或者使用
  9. tee /etc/hosts <<-'EOF'
  10. 192.168.100.10 openstack-con01
  11. 192.168.100.11 openstack-con02
  12. 192.168.100.12 openstack-con03
  13. EOF

3、关闭系统安全设置

  1. #关闭防火墙
  2. systemctl stop firewalld && systemctl disable firewalld
  3. #关闭网络管理组件
  4. systemctl stop NetworkManager && systemctl disable NetworkManager
  5. #关闭selinux
  6. setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

3、手动配置免密登录(所有节点都需执行)

  1. ssh-keygen
  2. ssh-copy-id -i /root/.ssh/id_rsa.pub openstack-con01
  3. ssh-copy-id -i /root/.ssh/id_rsa.pub openstack-con02
  4. ssh-copy-id -i /root/.ssh/id_rsa.pub openstack-con03

3、安装基础软件包

  1. yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python git wget vim yum-utils

2、安装docker(所有节点)

2.1 docker是本次部署的关键,因此需要安装docker。

  1. yum install -y yum-utils device-mapper-persistent-data lvm2
  2. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. yum list docker-ce --showduplicates | sort -r
  4. (docekr版本使用稳定版,手动指定安装)
  5. yum install -y docker-ce-19.03.13-3.el7 docker-ce-cli-19.03.13-3.el7 containerd.io
  6. systemctl start docker
  7. systemctl enable docker
  8. docker version

开启 Docker 的共享挂载功能:所谓共享挂载即同一个目录或设备可以挂载到多个不同的路径并且能够保持互相之间的共享可见性,类似于 mount --shared。在 OpenStack for Kolla 中,主要解决 Neutron 的 namespace 在不同 container 中得以保持实效性的问题。

  1. mkdir /etc/systemd/system/docker.service.d
  2. tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
  3. [Service]
  4. MountFlags=shared
  5. EOF
  6. #修改docker国内镜像源
  7. mkdir -p /etc/docker
  8. cat > /etc/docker/daemon.json << EOF
  9. {
  10. "registry-mirrors": ["https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"]
  11. }
  12. EOF
  13. #启动并自启docker
  14. systemctl daemon-reload
  15. systemctl restart docker
  16. systemctl enable docker
  17. #查看docker信息
  18. docker info

2.2 部署docker私有仓库并导入镜像

备注:生产环境推荐安装docker-registry或者 harbor用于存储docker镜像,前提是你已经拿到了所需要的镜像

方法如下:

注意: docker-registry默认端口5000,如果部署在con节点映射成5000会占用haproxy得端口,需要换一个

  • 如果不使用本地docker仓库,则2.2和2.3就不需要做,直接配置公有镜像仓库在线pull镜像
  1. # 1、registry 私有库安装
  2. docker pull registry
  3. # 2、启动命令:
  4. mkdir -p /my-registry/registry
  5. docker run -d -ti --restart always --name registry -p 4000:5000 -v /my-registry/registry:/var/lib/registry registry
  6. #3、访问仓库地址测试
  7. curl 127.0.0.1:4000/v2/_catalog
  8. #4、registryweb页面可视化界面
  9. docker pull hyper/docker-registry-web
  10. #启动命令:
  11. docker run -d --restart=always -p 4001:8080 --name registry-web --link registry -e REGISTRY_URL=http://192.168.100.12:4000/v2 -e REGISTRY_NAME=192.168.100.12:4000 hyper/docker-registry-web
  12. # 页面访问验证
  13. 192.168.100.12:4001

2.3 导入镜像

  1. cat > /etc/docker/daemon.json << EOF
  2. {
  3. "insecure-registries": [
  4. "192.168.100.12:4000"
  5. ],
  6. "log-opts": {
  7. "max-file": "5",
  8. "max-size": "50m"
  9. }
  10. }
  11. EOF
  12. #将配置推送到各个节点
  13. scp /etc/docker/daemon.json openstack-con02:/etc/docker/daemon.json
  14. ......
  15. #所有节点重载配置重启docker服务
  16. systemctl daemon-reload && systemctl restart docker
  17. #导入镜像
  18. ##上传镜像包
  19. ll koll-ansible_Train/
  20. total 4
  21. drwxr-xr-x 2 root root 42 Dec 5 08:39 config
  22. drwxr-xr-x 2 root root 6 Dec 5 08:39 doc
  23. drwxr-xr-x 2 root root 4096 Dec 5 09:17 docker_repo
  24. drwxr-xr-x 3 root root 136 Dec 5 08:59 tools
  25. cd /root/koll-ansible_Train/tools
  26. bash import.sh
  27. #节点查看
  28. docker images
  29. #打tag (注意根据实际环境替换)
  30. docker images | grep kolla | grep -v toolbox| sed 's/kolla/10.122.0.231:4000\/kolla/g' | awk '{print "docker tag"" " $3" "$1":"$2}'|sh
  31. docker tag d2fea47ea65d 10.122.0.231:4000/kolla/centos-binary-kolla-toolbox:train
  32. #push到私有仓库,你可以用脚本,也可以直接用一条命令搞定,脚本在/root/koll-ansible_Train/tools
  33. ##下面演示命令形式 (注意替换仓库地址)
  34. for i in $(docker images | grep 192.168.100.12:4000| awk 'BEGIN{OFS=":"}{print $1,$2}'); do docker push $i; done
  35. ##其他节点curl一下镜像仓库看看是否导入成功
  36. curl 192.168.100.12:4000/v2/_catalog

3、安装pip(所有节点)

3.1 配置阿里云pip源(所有节点)安装pip

  1. yum -y install python-pip
  2. cd ~/
  3. mkdir ~/.pip
  4. cat > ~/.pip/pip.conf << EOF
  5. [global]
  6. trusted-host=mirrors.aliyun.com
  7. index-url=https://mirrors.aliyun.com/pypi/simple/
  8. EOF
  9. #安装更新pip版本
  10. pip install -U pip==19.3.1
  11. pip install -U setuptools -i https://mirrors.aliyun.com/pypi/simple/
  12. #强制更新requets库 否则后续再执行安装docker SDK时候会报错requests 2.20.0 has requirement idna<2.8,>=2.5, but you'll have idna 2.4 which is incompatible.错误
  13. pip install --ignore-installed requests
  14. ##########方法2:
  15. yum install -y wget
  16. wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
  17. python2.7 get-pip.py
  18. pip install --ignore-installed requests

4、安装ansible、kolla-ansible(部署节点)

kolla-ansible部署是需要使用ansible,它是一款自动化的工具,是基于python开发。因此ansible是必须部署。

  1. ##获取epel的yum文件,否则ansible可能找不到包
  2. #yum install epel-release -y
  3. ##安装ansible
  4. #yum install ansible -y
  5. ## 推荐使用pip安装ansible 主要版本
  6. pip install 'ansible<2.10'
  7. #试过很多次都要先安装这个报告
  8. pip install pbr
  9. #开始安装kolla-ansible,要带上--ignore-installed ,否则可能会报错
  10. pip install kolla-ansible==9.3.2 --ignore-installed PyYAML
  11. #创建kolla的文件夹,后续部署的时候很多openstack的配置文件都会在这
  12. mkdir -p /etc/kolla
  13. chown $USER:$USER /etc/kolla
  14. #复制ansible的部署配置文件
  15. cp -v /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/.
  16. #负责gloable.yml和password.yml到目录
  17. cp -rv /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/.
  18. #检查`etc/kolla`文件夹下的文件

5、配置ansible

5.1 修改ansible配置文件(contoller)

  1. cat << EOF | sed -i '/^\[defaults\]$/ r /dev/stdin' /etc/ansible/ansible.cfg
  2. host_key_checking=False
  3. pipelining=True
  4. forks=100
  5. EOF

5.2 配置ansible剧本(contoller)

1.使用剧本multinode文件配置 控制 计算 网络 监控 等角色

2.检查inventory配置是否正确,执行:

  1. ansible -i multinode all -m ping

3.生成openstack组件用到的密码,该操作会填充/etc/kolla/passwords.yml,该文件中默认参数为空。

  1. kolla-genpwd

备注:如果执行过程中出现类似以下的报错

  1. [root@openstack-con01 kolla]# kolla-genpwd
  2. Traceback (most recent call last):
  3. File "/usr/bin/kolla-genpwd", line 6, in <module>
  4. from kolla_ansible.cmd.genpwd import main
  5. File "/usr/lib/python2.7/site-packages/kolla_ansible/cmd/genpwd.py", line 25, in <module>
  6. from cryptography.hazmat.primitives import serialization
  7. File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/primitives/serialization/__init__.py", line 7, in <module>
  8. from cryptography.hazmat.primitives.serialization.base import (
  9. File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/primitives/serialization/base.py", line 13, in <module>
  10. from cryptography.hazmat.backends import _get_backend

则可以尝试执行以下命令进行解决:

  1. pip install python-openstackclient --ignore-installed pyOpenSSl

4、修改keystone_admin_password,可以修改为自定义的密码方便后续horizon登录,这里改为kolla。

  1. sed -i 's#keystone_admin_password:.*#keystone_admin_password: 123#g' /etc/kolla/passwords.yml
  2. cat /etc/kolla/passwords.yml | grep keystone_admin_password

注意:/etc/kolla/passwords.yml 为openstack各组件服务密码

5、修改全局配置文件globals.yml,该文件用来控制安装哪些组件,以及如何配置组件,由于全部是注释,这里直接追加进去,也可以逐个找到对应项进行修改。

  1. cat > /etc/kolla/globals.yml <<EOF
  2. ---
  3. # Kolla options
  4. kolla_base_distro: "centos"
  5. kolla_install_type: "binary"
  6. openstack_release: "train"
  7. kolla_internal_vip_address: "192.168.100.140"
  8. kolla_internal_fqdn: "{{ kolla_internal_vip_address }}"
  9. kolla_external_vip_address: "10.0.100.240"
  10. kolla_external_fqdn: "{{ kolla_external_vip_address }}"
  11. #Docker options
  12. docker_registry: "192.168.100.10:4000"
  13. # Messaging options
  14. om_rpc_transport: "rabbit"
  15. # Neutron - Networking Options
  16. # These can be adjusted for even more customization. The default is the same as
  17. # the 'network_interface'. These interfaces must contain an IP address.
  18. network_interface: "eth0"
  19. kolla_external_vip_interface: "eth1" #
  20. api_interface: "eth0"
  21. storage_interface: "eth0" # 存储接入网
  22. cluster_interface: "eth0" # 存储复制网
  23. tunnel_interface: "eth0" # 业务网
  24. network_address_family: "ipv4"
  25. neutron_external_interface: "eth1" # 外部网络
  26. neutron_plugin_agent: "openvswitch"
  27. neutron_enable_rolling_upgrade: "yes"
  28. # keepalived options
  29. keepalived_virtual_router_id: "66"
  30. # TLS options
  31. #kolla_enable_tls_internal: "yes"
  32. # Region options
  33. openstack_region_name: "RegionOne"
  34. # OpenStack options
  35. openstack_logging_debug: "False"
  36. # glance, keystone, neutron, nova, heat, and horizon.
  37. enable_openstack_core: "yes"
  38. enable_haproxy: "yes"
  39. enable_mariadb: "yes"
  40. enable_memcached: "yes"
  41. enable_ceph: "no"
  42. enable_ceph_mds: "no"
  43. enable_ceph_rgw: "no"
  44. enable_ceph_nfs: "no"
  45. enable_chrony: "yes"
  46. enable_cinder: "yes"
  47. enable_fluentd: "no"
  48. #enable_grafana: "yes"
  49. enable_nova_ssh: "yes"
  50. #enable_prometheus: "yes"
  51. #enable_redis: "yes"
  52. #enable_etcd: "no"
  53. enable_neutron_provider_networks: "yes" # 缺少此项,provider网络的虚拟机建立报错,日志显示 portbinding error
  54. # Keystone - Identity Options
  55. keystone_token_provider: 'fernet'
  56. keystone_admin_user: "admin"
  57. keystone_admin_project: "admin"
  58. # Glance - Image Options
  59. glance_backend_ceph: "yes"
  60. # Cinder - Block Storage Options
  61. cinder_backend_ceph: "yes"
  62. cinder_volume_group: "cinder-volumes"
  63. # Nova - Compute Options
  64. nova_backend_ceph: "yes"
  65. nova_console: "novnc"
  66. nova_compute_virt_type: "qemu" # 如果是使用虚拟化部署,此选项必须选择qemu, 如果是物理机,默认是kvm
  67. EOF

6、后端存储Ceph部署(此次为三节点)

6.1 在所有ceph节点配置YUM:

  1. #
  2. #配置系统源码,阿里基础源和epel源
  3. curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  4. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  5. #YUM优先级别:
  6. yum -y install yum-plugin-priorities.noarch

6.2 所有配置ceph源:

  1. cat << EOF | tee /etc/yum.repos.d/ceph.repo
  2. [Ceph]
  3. name=Ceph packages for $basearch
  4. baseurl=http://mirrors.163.com/ceph/rpm-nautilus/el7/\$basearch
  5. enabled=1
  6. gpgcheck=1
  7. type=rpm-md
  8. gpgkey=https://download.ceph.com/keys/release.asc
  9. priority=1
  10. [Ceph-noarch]
  11. name=Ceph noarch packages
  12. baseurl=http://mirrors.163.com/ceph/rpm-nautilus/el7/noarch
  13. enabled=1
  14. gpgcheck=1
  15. type=rpm-md
  16. gpgkey=https://download.ceph.com/keys/release.asc
  17. priority=1
  18. [ceph-source]
  19. name=Ceph source packages
  20. baseurl=http://mirrors.163.com/ceph/rpm-nautilus/el7/SRPMS
  21. enabled=1
  22. gpgcheck=1
  23. type=rpm-md
  24. gpgkey=https://download.ceph.com/keys/release.asc
  25. EOF

6.3 在所有集群和客户端节点安装Ceph

1、所有节点安装

  1. yum -y install ceph

ceph -v命令查看版本:

若报错urllib3无法安装可先删除后重装(无报错则无需执行)

  1. pip uninstall urllib3

2、在controller节点额外安装ceph-deploy

  1. yum -y install ceph-deploy

3、部署MON节点

创建目录生成配置文件

  1. mkdir cluster
  2. cd cluster
  3. ceph-deploy new openstack-con01 openstack-con02 openstack-con03

初始化密钥

  1. ceph-deploy mon create-initial

将ceph.client.admin.keyring拷贝到各个节点上

  1. ceph-deploy --overwrite-conf admin openstack-con01 openstack-con02 openstack-con03

查看是否配置成功。

  1. ceph -s

上述告警就是说你的集群不安全,禁用不安全模式就行

解决办法:

禁用不安全模式

  1. ceph config set mon auth_allow_insecure_global_id_reclaim false

4、部署mgr

  1. ceph-deploy mgr create openstack-con01 openstack-con02 openstack-con03

5、部署osd

  1. # 检查OSD节点上所有可用的磁盘
  2. [cephuser@ceph-admin cluster]$ ceph-deploy disk list openstack-con01 openstack-con02 openstack-con03
  3. #使用zap选项删除所有osd节点上的分区
  4. [cephuser@ceph-admin cluster]$ ceph-deploy disk zap openstack-con01:/dev/sdb openstack-con02:/dev/sdb openstack-con03:/dev/sdb
  5. #在ceph1上一次初始化磁盘
  6. ceph-deploy osd create --data /dev/sdb openstack-con01
  7. ceph-deploy osd create --data /dev/sdb openstack-con02
  8. ceph-deploy osd create --data /dev/sdb openstack-con03

7、ceph为对接openstack做准备

7.1 修改ceph配置文件

vim /etc/ceph/ceph.conf加入:

  1. osd_journal_size = 10000
  2. osd_pool_default_size = 2
  3. osd_pool_default_pg_num = 512
  4. osd_pool_default_pgp_num = 512
  5. rbd_default_features = 3
  6. mon_max_pg_per_osd =2000
  7. mon_allow_pool_delete=true

实验环境使用二副本存储(性能考虑),实际生产环境建议三副本数环境资源不足建议单副本

  1. osd_pool_default_size = 3

7.2 推送配置

  1. ceph-deploy --overwrite-conf config push openstack-con01 openstack-con02 openstack-con03

7.3 重启所有ceph节点mon服务

  1. # systemctl status ceph-mon@openstack-con01
  2. systemctl restart ceph-mon@openstack-con01
  3. systemctl restart ceph-mon@openstack-con02
  4. systemctl restart ceph-mon@openstack-con03

7.3 创建对应存储池并初始化

  1. ceph osd pool create glance-images 64
  2. ceph osd pool create cinder-bakcups 32
  3. ceph osd pool create cinder-volumes 64
  4. ceph osd pool create nova-vms 32
  5. rbd pool init glance-images
  6. rbd pool init cinder-bakcups
  7. rbd pool init cinder-volumes
  8. rbd pool init nova-vms

ceph接入后端图解

7.4 Glance(写入配置文件和创建ceph用户)

1.创建目录

  1. mkdir -p /etc/kolla/config/glance

2..为 glance-api.conf 配置RBD 后端

编辑 /etc/kolla/config/glance/glance-api.conf 加入如下配置:

  1. cat > /etc/kolla/config/glance/glance-api.conf << EOF
  2. [DEFAULT]
  3. show_image_direct_url = True
  4. [glance_store]
  5. stores = rbd
  6. default_store = rbd
  7. rbd_store_pool = glance-images
  8. rbd_store_user = glance
  9. rbd_store_ceph_conf = /etc/ceph/ceph.conf
  10. EOF

4.生成ceph.client.glance.keyring文件,并保存到 /etc/kolla/config/glance 目录

在controller节点执行命令:

  1. ceph auth get-or-create client.glance mon 'allow rwx' osd 'allow class-read object_prefix rbd_children, allow rwx pool=glance-images' > /etc/kolla/config/glance/ceph.client.glance.keyring

7.5 Cinder(写入配置文件和创建ceph用户)

1.创建目录

  1. mkdir -p /etc/kolla/config/cinder

2.编辑 /etc/kolla/config/cinder/cinder-volume.conf,并配置如下内容:

  1. cat > /etc/kolla/config/cinder/cinder-volume.conf << EOF
  2. [DEFAULT]
  3. enabled_backends=rbd-1
  4. [rbd-1]
  5. rbd_ceph_conf=/etc/ceph/ceph.conf
  6. rbd_user=cinder
  7. rbd_pool=cinder-volumes
  8. volume_backend_name=rbd-1
  9. volume_driver=cinder.volume.drivers.rbd.RBDDriver
  10. rbd_secret_uuid = 074bc021-434d-43fb-8cbd-f517ce21e537 #在kolla配置文件夹下password.yml里找到
  11. EOF

3.编辑 /etc/kolla/config/cinder/cinder-backup.conf,并配置如下内容:

  1. cat > /etc/kolla/config/cinder/cinder-backup.conf << EOF
  2. [DEFAULT]
  3. backup_ceph_conf=/etc/ceph/ceph.conf
  4. backup_ceph_user=cinder-backup
  5. backup_ceph_chunk_size = 134217728
  6. backup_ceph_pool=cinder-backups
  7. backup_driver = cinder.backup.drivers.ceph
  8. backup_ceph_stripe_unit = 0
  9. backup_ceph_stripe_count = 0
  10. restore_discard_excess_bytes = true
  11. EOF
  1. 拷贝ceph的配置文件(/etc/ceph/ceph.conf)到 /etc/kolla/config/cinder
  1. cp /etc/ceph/ceph.conf /etc/kolla/config/cinder
  1. 生成 ceph.client.cinder.keyring 文件

    在/etc/kolla/config/cinder/创建目录
  1. mkdir /etc/kolla/config/cinder/cinder-backup
  2. mkdir /etc/kolla/config/cinder/cinder-volume

在 controller 节点运行:

  1. ceph auth get-or-create client.cinder mon 'allow rwx' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-volumes, allow rwx pool=nova-vms ,allow rwx pool=glance-images' > /etc/kolla/config/cinder/cinder-volume/ceph.client.cinder.keyring
  1. cp /etc/kolla/config/cinder/cinder-volume/ceph.client.cinder.keyring /etc/kolla/config/cinder/cinder-backup

在controller继续运行

  1. ceph auth get-or-create client.cinder-backup mon 'allow rwx' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cinder-bakcups' > /etc/kolla/config/cinder/cinder-backup/ceph.client.cinder-backup.keyring

7.6 Nova (写入配置文件和创建ceph用户)#

  1. 创建目录
  1. mkdir -p /etc/kolla/config/nova
  1. 编辑 /etc/kolla/config/nova/nova-compute.conf ,配置如下内容:
  1. cat > /etc/kolla/config/nova/nova-compute.conf << EOF
  2. [libvirt]
  3. images_rbd_pool=nova-vms
  4. images_type=rbd
  5. images_rbd_ceph_conf=/etc/ceph/ceph.conf
  6. rbd_user=nova
  7. EOF
  1. 生成 ceph.client.nova.keyring 文件

    Controller节点执行
  1. ceph auth get-or-create client.nova mon 'allow rwx' osd 'allow class-read object_prefix rbd_children, allow rwx pool=nova-vms' > /etc/kolla/config/nova/ceph.client.nova.keyring

拷贝ceph.conf, 和cinder client keyring 到 /etc/kolla/config/nova

  1. cp /etc/ceph/ceph.conf /etc/kolla/config/nova/
  2. cp /etc/kolla/config/cinder/cinder-volume/ceph.client.cinder.keyring /etc/kolla/config/nova/

8 平台部署与环境初始化

8.1 #预配置,安装docker、docker sdk、关闭防火墙、配置时间同步等

为各节点配置基础环境且会下载大量rpm包请务必保证节点网络的正常

  1. kolla-ansible -i ./multinode bootstrap-servers -vvvv

8.2 环境预检查 没问题直接next

  1. kolla-ansible -i /etc/kolla/multinode prechecks -vvvv

8.3 拉取镜像 时间有点长 大概15Minutes

  1. kolla-ansible -i /etc/kolla/multinode pull -vvvv

8.4 正式部署 大概15Minutes

  1. kolla-ansible -i /etc/kolla/multinode deploy -vvvv

8.5 安装openstack cli客户端(openstack con节点安装)

  1. yum install -y centos-release-openstack-train
  2. yum install -y python-openstackclient

8.6 生成openrc文件

  1. kolla-ansible post-deploy

导入openrc中的环境变量

  1. . /etc/kolla/admin-openrc.sh

9 平台初始化

  1. # 自动建立demo project,建议手工建立
  2. source /etc/kolla/admin-openrc.sh
  3. /usr/local/share/kolla-ansible/init-runonce

10 dashboard

  1. http://192.168.100.140
  2. # admin / yP2p1EaAThI9pA2asJ5tAh3JJ34MQNGCXfQyNasf
  3. # 在/etc/kolla/admin-openrc.sh里查询

11 openstack使用

  1. # 查看openstack相关信息
  2. openstack service list
  3. openstack compute service list
  4. openstack volume service list
  5. openstack network agent list
  6. openstack hypervisor list
  7. # 参考手册
  8. https://docs.openstack.org/python-openstackclient/train/cli/command-list.html
  9. # 镜像修改密码和默认密码
  10. virt-customize -a CentOS-7-x86_64-GenericCloud-2009.qcow2 --root-password password:abcd1234
  11. cirros / gocubsgo.
  12. # 导入镜像
  13. openstack image create cirros-0.5.2-x86_64 --file /tmp/cirros-0.5.2-x86_64-disk.img --disk-format qcow2 --container-format bare --public
  14. openstack image create centos-7-x86_64 --file /tmp/CentOS-7-x86_64-GenericCloud-2009.qcow2 --disk-format qcow2 --container-format bare --public
  15. # 建立模板
  16. openstack flavor create --id 0 --vcpus 1 --ram 256 --disk 1 m1.nano
  17. openstack flavor create --id 1 --vcpus 1 --ram 2048 --disk 20 m1.small
  18. # 建立provider network
  19. openstack network create --share --external --provider-physical-network physnet1 --provider-network-type flat provider
  20. openstack subnet create --network provider --allocation-pool start=192.168.100.221,end=192.168.100.230 --dns-nameserver 114.114.114.114 --gateway 192.168.100.1 --subnet-range 192.168.100.0/24 provider
  21. # 建立selfservice network
  22. openstack network create selfservice
  23. openstack subnet create --network selfservice --dns-nameserver 114.114.114.114 --gateway 192.168.240.1 --subnet-range 192.168.240.0/24 selfservice
  24. # 建立虚拟路由
  25. openstack router create router
  26. # 连接内外网络
  27. openstack router add subnet router selfservice
  28. openstack router set router --external-gateway provider
  29. openstack port list
  30. # 建立sshkey
  31. ssh-keygen -q -N ""
  32. openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
  33. # 建立安全策略
  34. openstack security group rule create --proto icmp default
  35. openstack security group rule create --proto tcp --dst-port 22 default
  36. # 查看已建配置
  37. openstack flavor list
  38. openstack image list
  39. openstack security group list
  40. openstack port list
  41. openstack network list
  42. # 建立虚拟机
  43. openstack server create --flavor m1.nano --image cirros-0.5.2-x86_64 --nic net-id=fe172dec-0522-472a-aed4-da70f6c269a6 --security-group default --key-name mykey provider-instance-01
  44. openstack server create --flavor m1.nano --image cirros-0.5.2-x86_64 --nic net-id=c30c5057-607d-4736-acc9-31927cc9a22c --security-group default --key-name mykey selfservice-instance-01
  45. # 指派对外服务ip
  46. openstack floating ip create provider
  47. openstack floating ip list
  48. openstack server add floating ip selfservice-instance-01 10.0.100.227
  49. openstack server list
  50. # 私有云映射方法
  51. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1022 -j DNAT --to 192.168.122.231:22
  52. iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 1022 -j DNAT --to 192.168.122.231:22
  53. # 注意
  54. 1. cirros 5.0 需要内存128M以上
  55. 2. centos7 ERROR nova.compute.manager [instance: e950095b-aa1e-47e5-bbb8-9942715eb1c3] 2021-10-15T02:17:33.897332Z qemu-kvm: cannot set up guest memory 'pc.ram': Cannot allocate memory
  56. 宿主机内存不够使用,临时解决方法 echo 1 > /proc/sys/vm/overcommit_memory

kolla-ansible部署OpenStack Train版技术方案的更多相关文章

  1. openstack Train版 “nova-status upgrade check”报错:Forbidden: Forbidden (HTTP 403)

    部署openstack train版,在部署完nova项目时,进行检查,执行 nova-status upgrade check 返回报错信息如下: [root@controller ~]# nova ...

  2. CentOS7.4安装部署openstack [Liberty版] (一)

    一.OpenStack简介 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个 ...

  3. CentOS7.2非HA分布式部署Openstack Pike版 (实验)

    部署环境 一.组网拓扑 二.设备配置 笔记本:联想L440处理器:i3-4000M 2.40GHz内存:12G虚拟机软件:VMware® Workstation 12 Pro(12.5.2 build ...

  4. CentOS7.4安装部署openstack [Liberty版] (二)

    继上一篇博客CentOS7.4安装部署openstack [Liberty版] (一),本篇继续讲述后续部分的内容 一.添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储 ...

  5. 使用Ansible部署openstack平台

    使用Ansible部署openstack平台 本周没啥博客水了,就放个云计算的作业上来吧(偷个懒) 案例描述 1.了解高可用OpenStack平台架构 2.了解Ansible部署工具的使用 3.使用A ...

  6. OpenStack Train版-1.安装基础环境&服务

    1. 服务组件的密码 密码名称 描述 ADMIN_PASS admin用户密码 CINDER_DBPASS 块设备存储服务的数据库密码 CINDER_PASS 块设备存储服务的 cinder 密码 D ...

  7. OpenStack Train版-14.安装块存储服务cinder(存储节点)

    安装cindoer块存储服务节点(存储节点192.168.0.40)使用默认的LVM卷方法,之后改为ceph存储 安装LVM软件包 [root@cinder01 ~]# yum install lvm ...

  8. OpenStack Train版-10.安装neutron网络服务(网络节点:可选)

    可选:安装neutron网络服务节点(neutron01网络节点192.168.0.30)网络配置按照官网文档的租户自助网络 配置系统参数 echo 'net.ipv4.ip_forward = 1' ...

  9. OpenStack Train版-12.创建虚拟网络并启动实例(控制节点)

    使用VMware虚拟机创建网络可能会有不可预测到的故障,可以通过dashboard界面,管理员创建admin用户的网络环境 1.第一种: 建立公共提供商网络在admin管理员用户下创建 source ...

  10. OpenStack Train版 简单部署流程

    environment 1.网络平面 management(管理网络)→软件安装,组件通信 provider(提供实例网络)→:提供者网络:直接获取ip地址,实例之间直接互通   自服务网络(私有网络 ...

随机推荐

  1. 基于python的wav转txt的源码

    最近在做一个算法的时候,用到了这个转换,这里做一个备忘,希望能给你提供价值. import wave import matplotlib.pyplot as plt import numpy as n ...

  2. 前端 nodejs 命令行自动调用编译 inno setup 的.iss文件

    项目中需要把前端代码用 electronjs 打包成 windows 安装包 使用的是开源的 inno setup 制作安装包 官网 虽然 ElectronJS 也有 electron-builder ...

  3. api-ms-win-crt-***.dll, api-ms-win-core-***.dll,win7以后kernel.dll,msvc*.dll的改变。api-ms-win-crt-***.dll 有问题就是 c++ redist 版本过低。

    api-ms-win-crt-***-|1-1-0.dll是redistributable c++的一部分.以往只会因为msvc*NNN.dll才要去找对应的redistributable c++版本 ...

  4. 记录--H5 视频兼容性处理总结

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 概述 最近在负责公司官网的开发,在 H5 播放视频时,遇到很多兼容问题,所以总结下在 H5 播放时,遇到的兼容性问题,并封装一个 Vide ...

  5. 记录--五个有用的iframe踩坑问题,快收藏!

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 你不会还不知道iframe不能嵌入百度首页吧?为了丰富用户体验,我们常常会将其他网站的内容嵌入到自己的网页中.然而,随之而来的是一个常见的 ...

  6. 记录--对于$off,Exclude 和 Extract的一点理解

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.typescript 高阶类型 Exclude 和 Extract Exclude<T, U> TypeScript 2. ...

  7. .NET Emit 入门教程:第三部分:构建模块(Module)

    前言: 在这一部分中,我们将深入讨论动态程序集中模块的概念以及如何构建和管理模块. 1.模块的概念: 模块是动态程序集中的基本单位,它类似于一个独立的代码单元,可以包含类型.方法.字段等成员. 在动态 ...

  8. 《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南 - 第1章

    本章勘误: 暂无,等待细心的你告诉我哦. 本章注解: 第7页图1-4下面的第一段:堆栈从一开始就与计算机编程有着内在的联系,这主要是因为子例程的概念 什么是子例程呢? 一般地认为,子例程是某个主程序的 ...

  9. linux 时钟同步

    yum install ntp -y #cn.pool.ntp.org ntp[1-7].aliyun.com ntpdate ntp1.aliyun.com #把当前系统时间写入到CMOS中 clo ...

  10. fs.1.10 ON CENTOS7 docker镜像制作

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. centos7 docker上编译安装fs1.10版本的流程记录. 环境 docker engine:Version 24.0.6 ...