• 云计算笔记


    云平台部署及实施----------》最终目的是-----------通过云平台创建和管理虚拟机
    
    云计算盈利方式:
        1、租虚拟机
        2、租服务---------》云平台   nginx  php  开发  mysql  tomcat dns
        3、租空间---------》百度云盘 
        4、租环境---------》java开发环境   lamp环境   lnmp环境  办公环境
        5、租集群---------》虚拟机组成的 
        6、租方案---------》游戏页面   pop2 电商商务
    总结:云平台核心内容------创建和管理虚拟机 
    
    
    
    
    
    软件及服务层(saas)   --------------》软件运行
    平台及服务层    (paas )-------------》云平台
    基础设施层(硬件   iaas)---------》提供运行资源
    
    
    云计算:
    优势:
    按需索取,随需而变、通用性、高可靠性(对外安全性高,对内比较薄弱)、低成本  、超大规模、虚拟化、高扩展(灵活性)
    
    
    openstack   Python (蟒蛇)
    1、开源免费
    2、二次开发(根据不同的公司需求、可以二次开发)-----灵活性高
    3、A   B  目前最新版本N版本
    
    
    kvm功能:
        提供虚拟化资源
    kvm虚拟机管理
    一、环境
    二、安裝kvm
    [root@target ~]# yum install -y qemu-kvm qemu-kvm-tools virt-install #安装kvm内核
    [root@target ~]# yum install libvirt libvirt-cim libvirt-client libvirt-java.noarch  libvirt-python #安装virt管理工具
    [root@computer002 ~]# systemctl start libvirtd
    #############################################################################################################################
    [root@target ~]# modprobe kvm         #加载kvm内核
    [root@target ~]# modprobe kvm-intel   #intel cpu加载kvm-intel内核,要支持全虚拟化,必须开启;要求cpu支持,通过bios可设置。
    [root@target ~]# modprobe kvm-amd     #amd cpu加载kvm-intel
    [root@target ~]# modprobe -ls | grep kvm   #查看内核是否开启
    kernel/arch/x86/kvm/kvm.ko
    kernel/arch/x86/kvm/kvm-intel.ko
    kernel/arch/x86/kvm/kvm-amd.ko
    [root@target ~]# modprobe -ls | grep kvm-intel
    kernel/arch/x86/kvm/kvm-intel.ko
    ##############################################################################################################################
    三、安装guest虚拟机
    1、直接通过virt-manager安装、管理虚拟机(略)
    2、通过命令行安装guest虚拟机
    [root@target ~]# virsh iface-bridge eth0 br0 #创建桥接
    [root@target ~]# yum install virt-viewer   #开启图形控制台安装虚拟客户机需要,
    [root@target ~]# virt-install             #安装选项可用virt-install --help查看
    --name node4            #虚拟机名
    --ram=1024              #分配内存大小,MB
    --arch=x86_64           #模拟的CPU 构架
    --vcpus=1               #配置虚拟机的vcpu 数目
    --check-cpu             #检查确定vcpu是否超过物理 CPU数目,如果超过则发出警告。
    --os-type=linux         #要安装的操作系统类型,例如:'linux'、'unix'、'windows'
    --os-variant=rhel5      #操作系统版本,如:'fedora6', 'rhel5', 'solaris10', 'win2k'
    --disk path=/virhost/node7.img,device=disk,bus=virtio,size=20,sparse=true    #虚拟机所用磁盘或镜像文件,size大小G
    --bridge=br0            #指定网络,采用透明网桥
    --noautoconsole         #不自动开启控制台
    --pxe                    #网络安装
    ==============================================================================================================
    virt-install 
    --connect qemu:///system 
    --virt-type kvm 
    --name rhel6 
    --ram 1024 
    --vcpus 2 
    --network bridge=brnet0 
    --disk path=/VMs/images/rhel6.img,size=120,sparse 
    --location ftp://172.16.0.1/rhel6/dvd 
    --extra_args “ks=http://172.16.0.1/rhel6.cfg” 
    --os-variant rhel6 
    --force 
    2、通过命令行安装guest虚拟机
    qemu-img create -f qcow2 /images/centos6.3-x86_64.img 10G
    chown qemu:qemu /images/centos6.6-x86_64.img
    virt-install 
    --name centos6.5 
    --ram=2048 
    --arch=x86_64 
    --vcpus=2 
    --check-cpu 
    --os-type=linux 
    --os-variant='rhel6' -c /tmp/CentOS-6.5-x86_64-bin-DVD1.iso 
    --disk path=/images/centos6.8-x86_64.img 
    --noautoconsole 
    --vnc 
    --vncport=5903 
    --vnclisten=0.0.0.0 
    --bridge=br0
     
    二、利用virsh对虚拟机管理
    2、开关机
    virsh start centos6.3 #开机
    virsh create /etc/libvirt/qemu/centos6.3.xml #直接通过主机配置文档启动主机
    virsh shutdown centos6.3 #关机
    virsh destroy centos6.3 #强制关闭电源
    virsh list --all #查看虚拟机状态
    3、添加删除虚拟机
    virsh define /etc/libvirt/qemu/node5.xml #根据主机配置文档添加虚拟机
    virsh list --all #node5已经添加
    virsh undefine node5 #移除虚拟机
    ls /etc/libvirt/qemu
    virsh list --all #node5已经被移除
    四、利用virsh对虚拟机管理
    1、开关机
    [root@target ~]# virsh start node4      #开机
    [root@target ~]# virsh create /etc/libvirt/qemu/node4.xml #直接通过主机配置文档启动主机
    [root@target ~]# virsh shutdown node4   #关机
    [root@target ~]# virsh destroy node4    #强制关闭电源
    [root@target ~]# virsh list --all       #查看虚拟机状态         
     Id 名称               状态
    ----------------------------------
     18 node4                running
      - node5                关闭
      - win8                 关闭
    2、添加删除虚拟机
    [root@target ~]# virsh define /etc/libvirt/qemu/node5.xml   #根据主机配置文档添加虚拟机
    [root@target ~]# virsh list --all        #node5已经添加
     Id 名称               状态
    ----------------------------------
     18 node4                running
      - node5                关闭
      - win8                 关闭
     
    [root@target ~]# virsh undefine node5     #移除虚拟机
    [root@target ~]# ls /etc/libvirt/qemu
    networks  node4.xml  win8.xml
    [root@target ~]# virsh list --all         #node5已经被移除
     Id 名称               状态
    ----------------------------------
     18 node4                running
      - win8                 关闭
    =============================================================================================================================
    [root@target kvm_node]# qemu-img info node4.img   #查看镜像文件格式
        image: node4.img
        file format: qcow2
        virtual size: 20G (21495808000 bytes)
        disk size: 6.3G
        cluster_size: 65536
    [root@target kvm_node]# qemu-img convert -f raw -O qcow2 /virhost/kvm_node/node5.img /virhost/kvm_node/node5_qcow2.img  #把raw格式转换成qcow2格式:
    ##############################################################################################################################
    root@target kvm_node]# virsh snapshot-create-as node4 node4.snap1
    [root@target kvm_node]# qemu-img info node4.img
    image: node4.img
    file format: qcow2
    virtual size: 20G (21495808000 bytes)
    disk size: 6.3G
    cluster_size: 65536
    Snapshot list:
    ID        TAG                 VM SIZE                DATE       VM CLOCK
    1         node4.snap1            401M 2012-04-10 12:04:42   22:02:04.672
    ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
    [root@target kvm_node]# virsh snapshot-create-as node4 node4.snap2     #为虚拟机node4当前状态创建快照
    [root@target kvm_node]# virsh snapshot-list node4                      #查看node4的快照
     名称               Creation Time             状态
    ------------------------------------------------------------
     node4.snap1          2012-04-11 00:47:06 +0800 paused
     node4.snap2          2012-04-11 01:19:06 +0800 running
     [root@target kvm_node]# virsh snapshot-revert node4 node4.snap1    #从快照文件node4.snap1恢复node4
    [root@node4 ~]# ls /root/          #/root/下无文件,恢复成功
    [root@target kvm_node]# virsh snapshot-revert node4 node4.snap2  #从快照文件node4.snap2恢复node4
    [root@node4 ~]# ls                                               #恢复成功
    anaconda-ks.cfg  install.log.syslog   pcre-8.02.tar.gz               php-5.2.13.tar.gz
    install.log      nginx-0.7.65.tar.gz  php-5.2.13-fpm-0.5.13.diff.gz  webbench-1.5.tar.gz
    5、删除快照
    [root@target kvm_node]# virsh snapshot-delete node4 node4.snap1
    6、利用qemu-img创建镜像文件的snapshot
    qemu-img snapshot -c node4.snap1 /virhost/kvm_node/node4.img #创建快照
    qemu-img snapshot -l /virhost/kvm_node/node4.img    #查看快照
    qemu-img snapshot -a snapshot-name /path/to/os.img  #把虚拟机恢复到某个快照的状态:
    qemu-img snapshot -d snapshot-name /path/to/os.img  #删除某个快照:#
    3、远程管理虚拟机(qemu+ssh连接)
    [root@target ~]# yum install virt-viewer
    [root@target ~]# export DISPLAY=192.168.40.18:0.0
    [root@target ~]# virt-viewer -c qemu///system node4                          #本地管理虚拟机,system:获取system权限,注意qemu后是三个/
    [root@manager ~]# virt-viewer -c qemu+ssh://root@192.168.32.40/system node4  #远程linux通过virt-viewer+ssh管理虚拟机
    Xlib:  extension "RANDR" missing on display "192.168.40.18:0.0".
    root@192.168.32.40's password:
    root@192.168.32.40's password:
    #会弹出virt-viwer的gtk管理界面
    4、使用已存在的虚拟机配置文档安裝新的虚拟机
    [root@target ~]# qemu-img create -f qcow2 /virhost/kvm_node/node6.img 20G
    #为新建虚拟机生产磁盘镜像文件
    [root@target ~]# virsh list
     Id 名称               状态
    ----------------------------------
     18 node4                running
    [root@target ~]# virsh dumpxml node4 >/etc/libvirt/qemu/node6.xml
    #导出虚拟机node6的硬件配置信息为/etc/libvirt/qemu/node6.xml
    [root@target ~]# vim /etc/libvirt/qemu/node6.xml 
    <domain type='kvm' id='20'>    #修改node6的id号
      <name>node6</name>           #虚拟机node6的name
      <uuid>4b7e91eb-6521-c2c6-cc64-c1ba72707fc7</uuid>  #uuid必须修改,否则会和node4的冲突
      <memory>524288</memory>
      <currentMemory>524288</currentMemory>
      <vcpu>1</vcpu>
      <os>
        <type arch='x86_64' machine='rhel5.4.0'>hvm</type>
        <boot dev='network'/>
      </os>
      <features>
        <acpi/>
        <apic/>
        <pae/>
      </features>
      <clock offset='utc'/>
      <on_poweroff>destroy</on_poweroff>
      <on_reboot>restart</on_reboot>
      <on_crash>restart</on_crash>
      <devices>
        <emulator>/usr/libexec/qemu-kvm</emulator>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2' cache='none'/>
          <source file='/virhost/node4.img'/>         #指定新虚拟机的硬盘文件
          <target dev='vda' bus='virtio'/>
        </disk>
        <interface type='bridge'>
          <mac address='54:52:00:69:d5:c7'/>
          <source bridge='br0'/>
          <target dev='vnet0'/>
          <model type='virtio'/>
        </interface>
        <interface type='bridge'>
          <mac address='54:52:00:69:d5:d7'/>
          <source bridge='br0'/>
          <target dev='vnet1'/>
          <model type='virtio'/>
        </interface>
        <serial type='pty'>
          <source path='/dev/pts/4'/>
          <target port='0'/>
        </serial>
        <console type='pty' tty='/dev/pts/4'>
          <source path='/dev/pts/4'/>
          <target port='0'/>
        </console>
        <input type='mouse' bus='ps2'/>
        <graphics type='vnc' port='5900' autoport='yes' keymap='en-us'/>
      </devices>
    </domain>
    [root@target ~]# virsh define /etc/libvirt/qemu/node6.xml
    #使用虚拟描述文档建立虚拟机,可用virsh edit node6修改node6的配置文件
    [root@target ~]# virsh start node6
    #启动虚拟机
    5 为虚拟机开启vnc
    [root@target ~]# virsh edit node4     #编辑node4的配置文件;不建议直接通过vim node4.xml修改。
    <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us'/>
       #port='-1' autoport='yes':port自动分配,监听回环网络(virt-manager管理需要listen='127.0.0.1'),无密码
    改为
    <graphics type='vnc' port='5904' autoport='no' listen='0.0.0.0' keymap='en-us' passwd='xiaobai'/>
       #固定vnc管理端口5904,不自动分配,vnc密码xiaobai,监听所有网络
    2. 远程vnc访问地址:192.168.32.40:5904
    ame                           State
    ----------------------------------------------------
     1     centos7                        runni
    kvm功能:
        提供虚拟化资源
        kvm  :集成在linux内核当中的,2.4内核
        虚拟软件:
        虚拟化分类:
            全虚拟化:  虚拟机所需要资源全部虚拟出来的, vm个人版   VirtualBox   
            容易操作:
            速度慢:
            半虚拟化:   一部分虚拟机资源是虚拟出来的,另一部分直接使用物理机
            管理复杂:
            速度快:   企业    ----esxi----xen   安装在裸机      kvm-----linux 
            
            
        kvm 功能:把硬件资源虚拟成虚拟资源,   +   一套管理工具-------创建虚拟机以及管理虚拟机
        kvm 仅仅只能虚拟机部分资源 --------网卡不能虚拟     +  qemu(虚拟化软件)
        kvm 不能重复虚拟机--------不能虚拟再虚拟------   kvm 安装到物理机上   qemu 是可以
        
        虚拟资源 
        创建和管理虚拟机
    
    
    创建一个虚拟机  ---------1、虚拟资源(虚拟内存 cpu  硬盘 ) -----------------kvm+qemu  
        2、管理工具------通过已经虚拟出来的虚拟资源来创建虚拟机并且管理    -------三方工具  livirtd
        
    vm个人版
    
    kvm 部署:
        1、安装一个新的虚拟机
        2、配置静态IP地址
        3、设置yum
        [os]
        name=os
        baseurl=http://192.168.50.124/centos-yum/7/os/x86_64/
        gpgcheck=0
        enabled=1
        [update]
        name=update
        baseurl=http://192.168.50.124/centos-yum/7/updates/x86_64/
        gpgcheck=0
        enabled=1
        [ext]
        name=ext
        baseurl=http://192.168.50.124/centos-yum/7/extras/x86_64/
        gpgcheck=0
        enabled=1
        4、安裝kvm
    [root@target ~]# yum install -y qemu-kvm qemu-kvm-tools virt-install #安装kvm内核
    [root@target ~]# yum install libvirt libvirt-cim libvirt-client libvirt-java.noarch  libvirt-python #安装virt管理工具
    [root@computer002 ~]# systemctl start libvirtd
    5、创建永久性网桥
    
     [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    BOOTPROTO=static
    IPADDR=192.168.40.148
    NETMASK=255.255.255.0
    GATEWAY=192.168.40.2
    ONBOOT=yes
    
    [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    TYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=d86bcb18-7888-40bb-a087-e8c86d6ce323
    DEVICE=ens33
    ONBOOT=yes
    BRIDGE=br0
    IPADDR=192.168.40.148
    NETMASK=255.255.255.0
    GATEWAY=192.168.40.2
    
    [root@localhost ~]# mkdir /images
    [root@localhost ~]# qemu-img create -f qcow2 /images/centos7.img 10G     #创建空虚拟机硬盘
    [root@localhost ~]# chown qemu:qemu /images/centos7.img                        #赋予权限
    [root@localhost ~]# virt-install                                                               #创建虚拟机主命令
    --name centos7                                                                                   #指定虚拟机名称
    --ram=2048                                                                                         #指定虚拟机内存大小
    --arch=x86_64                                                                                     #指定CPU框架
    --vcpus=1                                                                                         #指定虚拟机cpu个数
    --check-cpu                                                                                         #检测cpu是否超用
    --os-type=linux                                                                                 #指定虚拟机类型
    --os-variant='rhel7' -c /tmp/CentOS-6.5-x86_64-bin-DVD1.iso                #指定虚拟机安装系统的系统盘
    --disk path=/images/centos7.img                                                         #指定虚拟机安装系统的虚拟机硬盘
    --noautoconsole                                                                                 #禁用控制台
    --vnc                                                                                                 #开vnc远程连接
    --vncport=5903                                                                                 #指定vnc的端口号
    --vnclisten=0.0.0.0                                                                             #监听的IP地址。允许所有网卡访问
    --bridge=br0                                    

     2017-02-11

    [root@localhost ~]# hostnamectl set-hostname    controller
    [root@localhost ~]# vim /etc/hosts
    192.168.40.148  controller
    [root@localhost ~]#  systemctl stop firewalld
    [root@localhost ~]#  systemctl disable firewalld
    [root@localhost ~]# setenforce 0
    [root@localhost ~]# vim /etc/selinux/config
    SELINUX=disabled
    平台环境部署
    
    1、时间服务
    2、MySQL数据库服务
    3、消息队列服务
    4、memcached
    #########################openstack组件安装################################
    1、openstack安装组件==========keystone======================
    2、功能:
        1、用户认证(管理用户)
        2、各个组件之间认证
        3、租户认证
    依赖服务:1、MySQL  2、memcached     
    数据-------------数据库(keystone)
    keystone ------数据-(权限)------keystone 
    3、部署安装:
    1、
    
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller' IDENTIFIED BY '123';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123';
    Query OK, 0 rows affected (0.00 sec)
    
    
    
    keystone ---(keystone用户)------ 数据库(mysql)keystone库
    
    export OS_USERNAME=admin
    export OS_PASSWORD=123
    export OS_PROJECT_NAME=admin
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_AUTH_URL=http://controller:35357/v3
    export OS_IDENTITY_API_VERSION=3
    
    
    
     keystone-manage bootstrap --bootstrap-password 123 
      --bootstrap-admin-url http://controller:35357/v3/ 
      --bootstrap-internal-url http://controller:35357/v3/ 
      --bootstrap-public-url http://controller:5000/v3/ 
      --bootstrap-region-id RegionOne
    
    
    
    [root@controller ~]# yum install python-openstackclient -y

     

  • 相关阅读:
    不容易系列之二
    Unicode 和Ansi下的字符和字符串转换问题
    转:sizeof()用法汇总
    转:MultiByteToWideChar和WideCharToMultiByte用法详解
    addTarget原理
    SDWebImage底层实现原理
    自动释放池的原理
    最近比较烦
    练车记录
    明天出去游乐场玩耶。
  • 原文地址:https://www.cnblogs.com/lliqiang/p/6380969.html
Copyright © 2020-2023  润新知