OpenStack概览

  • 1.1 用户能够通过web界面、命令行或API接口配置。
  • 1.2 虚拟化是OpenStack的底层技术实现手段之一。
  • 1.3keystone 提供身份验证,认证与其他组件交互最多。horizon提供基于web的控制界面。glance镜像服务提供发现、注册和检索虚拟机镜像的功能。Nova,计算服务,调用其他服务。cinder块存储服务。swift对象存储服务,存储大量数据高效,安全。neutron 网络服务,二层交换,三层路由,负载均衡。heat编排服务为云应用程序编排OpenStack基础架构资源。

     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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    
    1.lscpu     查看cpu,Socket(几个物理cpu),thread线程*core核数*socket=总线程数。
    
    2.egrep -c "(svm|vmx)"  /proc/cpuinfo   24   看svm和vmx 数,确定bios里面cpu虚拟化是否打开。
    cat  /proc/cpuinfo    看flags里面的vmx svm 
    
    3.systemctl  status  libivrtd  (管理工具服务确认启动状态active(runnig))
    vim /usr/lib/systemd/system/libvirtd.service  看启动这个服务要启动那些基础服务
    vim /etc/fstab 准备挂载的文件
    mount -l  已经挂载的文件
    journalctl -nl  看日志 
    
    4.cd /etc/libvirt/  
    ls 
    vim libvirt.conf
    cd qemu/  (模拟io设备运行在用户空间)
    ls
    vim guest07.xml  (xml配置文件)
      
    5.cd networks
    ls
    vim default.xml
    ps -ef | grep dnsm  (dhcp dns )
    netstat -ltpn | grep 59  搜索vnc 监听端口为59 开始的 监听地址设为0.0.0.0
    
    6. file guest04.vol   看vol 是什么类型的文件,(vol 数据文件)
    
    7.virt-sysprep  -a rhe17.5.qcow2  模板
    guestfish  -a rhe17.5.qcow2  --network  
    
    8.rpm -qa | grep kvm 搜索一下装了那些软件包
    systemctl enable  libvirtd  
    
    9.  嵌套虚拟化,虚拟机里面装虚拟机, 
    vim    /etc/modprobe.d/kvm-nested.conf 打开嵌套虚拟化功能加如下:
    options  kvm-intel nested=1
    options kvm-intel enable_shadow_vmcs=1
    options kvm-intel enable_apicv=1
    options kvm-intel ept=1
    
    modprobe  -a  kvm-intel   添加
    modprobe  -r kvm-intel  移除 有正在运行的虚假机,移除失败
    
    history  | grep sys
    cat  /sys/module/kvm_intel/parameters/nested  
    
    10.openstack  部署方式:eg,puppet  ,ansible
    
    systemctl restart vsftpd 启动 ftp服务
    df -Th  看光盘是否挂载
    yum  install  openstack-packstack  安装
    rpm -qa | grep packstack   看包是否安装好
    packstack --gen-answer-file=/tmp/1.txt  生产自动应答文件
    vim  /tmp.1.txt  

快速搭建OpenStack实验环境流程

一、pc/服务器——>virtualBox/kvm——>openstack computer node 二、labs-master

  1. 打开修改lab-master\labs\osbash\wbatch\create_ubuntu_cluster_node(262行调整内存为2048,266行计算节点cpu调整为4,311行第二块磁盘容量调整为12800)
  2. 打开修改lab-smaster\labs\osbash\scripts\ubuntu\ apt_init (40行修改镜像下载地址为sudo sed -i ’s/us.archive.ubuntu.com/mirrors.huaweicloud.com/g’ /etc/apt/sources.list,)打开apt_pre-download.sh (为了防止下载超时导致下载失败,在第15行加一个循环语句

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    function apt_download {
    
    n=0
    until [ $n -ge 5 ]
    do
        echo "apt_download: $*" &&sudo apt install -y --download-only "$@" && break
        n=$[$n+1]
        sleep 15
    done
    
    }
    )
  3. 执行create_hostnet.bat 创建计算机节点与控制节点通信的hostonly网络,去virtualbox 主机网络管理器界面中验证。

  4. 打开修改create_base.bat (88行ubuntu对应版本,为了下载时间节省提前去下载执行第2. 修改的文件好ubuntu的iso放在img文件下)执行create_base.bat,在img文件夹下生成bas开头的Ubuntu iso 后期计算节点控制节点基于此iso。

  5. 执行第1. 步修改的create_ubuntu_cluster_node 文件,在img文件下伸出计算机节点computer1与控制节点control

OpenStack操作界面管理

  • 2.1Horizon, 提供web界面,管理员admin账号登录与myuser功能区别。CLI时要先source。
  • 2.2使用OpenStack Dashboard方式发放虚拟机实例cirros, 1. 镜像image2.admin下flavor规格3.project下networks4.project 下instance中选1.2.3.

    实操

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    ssh -p  2230 osbash@127.0.0.1  
    osbash
    
    admin	
    admin_user_secret
    
    myuser
    myuser_user_pass
    
    cirros 
    gocubsgo
    
    *每次打开第一步*:
    cat  admin-openrc.sh  查看
    . admin-openrc.sh  导入用户环境变量定义文件就进入管理员视图了
    cat demo-openrc.sh 查看
    . demo-openrc.sh 导入用户环境变量定义文件就进入普通成员视图了
    
    发放虚拟机:
    openstack image list
    openstack flavor  list
    openstack server create  --image cirros  --flavor flavor_web  cirros_cli   创建虚拟机
    openstack server list  查看发放的虚拟机

OpenStack认证管理

  • 3.2keystone对象模型,是公开的一组内部服务,内部服务以组合方式使用。Keystone对象模型中的-resource为domain(域)和其中project提供数据。-Assignment 提供角色和角色分配的数据。-Token提供服务的凭证,相当于身份证,-catalog服务提供用于查询端点的端点注册表,以便外部访问openstack服务。
  • 3.3keystone 认证工作原理和流程,基于令牌(认证请求发送时添加一个X-auth-Token的http头,keystone检查http头中的token值, 并与数据库的令牌进行对比验证),基于外部认证,基于本地。基于令牌的UUID , PKI, PkIZ, fernet, 其中只有pki和pkiz支持本地认证和keystone负载小和存储与数据库和非对称加密。Uuid: 无需维护秘钥,负载较低/region较少。pki需要妥善保管私钥。Fernet: 周期性维护秘钥,负载较高,region较多。目前新版openstack都采用fernet令牌。RBAC: 基于角色的访问控制。1. 申请token, 用户user_a2. 创建项目,head中携带token, url中携带操作。3. 从token中解析出用户的权限信息,根据policy.json策略配置文件,判断权限是否满足操作要求。

发放token, 验证token, 通过policy.json实现权限控制

 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
项目 组 用户 角色  :一个用户可以在不同项目中担任不同的角色或者相同的角色 ,一个用户也可以同时在不同的组中。
1.openstack  role  create role_cli
openstack  role  list

2.openstack user create  --domain  default  --project  admin --password-prompt user_cli
openstack user list

3.openstack role add --project admin --user user_cli  role_cli
openstack role  assignment list --name| grep role_cli

4.cp admin-openrc.sh  user-openrc.sh  
vi user-openrc.sh
. user-openrc.sh
openstack project list

5.openstack group create  --domain default group_cli
 openstack group  list
 openstack group add user group_cli user_web_01
openstack group contains user  group_cli user_web_01
openstack group remove user  group_cli user_web_01
openstack group contains user  group_cli user_web_01


6.openstack  user  set --disable  user_cli
openstack user show user_cli
openstack user set --enable user_cli
openstack user  show  user_cli
openstack user delete user_cli
openstack user list


7.openstack project  create  --domain default project_cli
openstack project list
openstack role add --project project_cli --user user_web_01  admin
openstack role  assignment list  --name | grep user_web_01

8.项目配额操作:
openstack quota show project_cli
openstack quota show project_cli | egrep "instances|volumes|networks"
openstack quota  set  --instances  20 --volumes 20 --networks 200 project_cli
openstack quota show project_cli | egrep "instances|volumes|networks"

9.创建服务和端点(必须cli命令模式下才可创建)
openstack service  create --name swift --description "openstack object storage " object-store
openstack service list
openstack endpoint list
openstack endpoint  create --region Regionone  swift  public  http://controller:8080/v1
 openstack endpoint  create --region Regionone  swift  admin http://controller:8080/v1
openstack endpoint  create --region Regionone  swift  internal  http://controller:8080/v1

OpenStack镜像管理

OpenStack计算管理

OpenStack存储管理

OpenStack网络管理

OpenStack编排管理

OpenStack故障处理

华为openstack增强商用解决方案