• 《4》CentOS7.0+OpenStack+kvm云平台部署—配置Nova


    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正!
    假设转载。请保留作者信息。
    博客地址:http://blog.csdn.net/qq_21398167

    原博文地址:http://blog.csdn.net/qq_21398167/article/details/46385651

    初始化Nova

    (1).安装nova

    [root@openstack ~]# yum -y installopenstack-nova

    (2).创建nova数据库:

    [root@openstack ~]# openstack-db--init --service nova

     

    创建User,定义Services API Endpoints

    (1).编写脚本:

    [root@openstack ~]# vi/root/config/nova-user.sh

    #!/bin/sh

    my_ip=10.1.1.2

    keystone user-create --name=nova--pass=service --email=nova@example.com

    keystone user-role-add --user=nova--tenant=service --role=admin

    keystone service-create --name=nova--type=compute --description="Nova Compute Service"

    service=$(keystone service-list | awk'/nova/ {print $2}')

    keystone endpoint-create--service-id=$service --publicurl=http://$my_ip:8774/v2/%(tenant_id)s--internalurl=http://$my_ip:8774/v2/%(tenant_id)s--adminurl=http://$my_ip:8774/v2/%(tenant_id)s

     (2).执行脚本,创建用户、服务及api endpoint

    [root@openstack ~]# sh/root/config/nova-user.sh

    配置nova服务:

     

    (1).改动/etc/nova.conf配置文件:

    [root@openstack ~]# vi /etc/nova/nova.conf

    [DEFAULT]

    my_ip = 10.1.1.2

    auth_strategy = keystone

    state_path = /openstack/lib/nova

    verbose=True

     

    allow_resize_to_same_host = true

    rpc_backend =nova.openstack.common.rpc.impl_qpid

    qpid_hostname = 10.1.1.2

    libvirt_type = kvm

    glance_api_servers = 10.1.1.2:9292

     

    novncproxy_base_url =http://10.1.1.2:6080/vnc_auto.html

    vncserver_listen = $my_ip

    vncserver_proxyclient_address = $my_ip

    vnc_enabled = true

    vnc_keymap = en-us

     

    network_manager =nova.network.manager.FlatDHCPManager

    firewall_driver =nova.virt.firewall.NoopFirewallDriver

    multi_host = True

    flat_interface = eth0

    flat_network_bridge = br1

    #public_interface = eth0

     

    instance_usage_audit = True

    instance_usage_audit_period = hour

    notify_on_state_change = vm_and_task_state

    notification_driver =nova.openstack.common.notifier.rpc_notifier

     

    compute_scheduler_driver=nova.scheduler.simple.SimpleScheduler

    [hyperv]

    [zookeeper]

    [osapi_v3]

    [conductor]

    [keymgr]

    [cells]

    [database]

    [image_file_url]

    [baremetal]

    [rpc_notifier2]

    [matchmaker_redis]

    [ssl]

    [trusted_computing]

    [upgrade_levels]

    [matchmaker_ring]

    [vmware]

    [spice]

    [keystone_authtoken]

    auth_host = 127.0.0.1

    auth_port = 35357

    auth_protocol = http

    admin_user = nova

    admin_tenant_name = service

    admin_password = service

     

    因上述配置文件里改动了instances实例存放的位置。还须要作一下操作:

    改动instances路径,设置文件夹权限:

    [root@openstack ~]# cp -r/var/lib/nova/ /openstack/lib/

    [root@openstack ~]# chown -R nova:nova/openstack/lib/nova/

     

    (2).配置libvirtd服务。删除virbr0

    启动libvirt服务:

    [root@openstack ~]# service libvirtdstart

    查看net-list,发现default

    [root@openstack ~]# virsh net-list

    Name                State      Autostart    Persistent

    --------------------------------------------------

    default             active     yes           yes

    删除default,即virbr0

    [root@openstack ~]# virsh net-destroydefault

    Network default destroyed

    [root@openstack ~]# virsh net-undefinedefault

    Network default has been undefined

    重新启动libvirtd服务,设置开机自启动:

    [root@openstack ~]# service libvirtdrestart

    [root@openstack ~]# chkconfig libvirtdon

     

    (3).启动nova相关服务。设置开机自启动

    [root@openstack ~]# service messagebusstart

    [root@openstack ~]# chkconfigmessagebus on

    启动nova服务,採用network网络服务:

    [root@openstack ~]# serviceopenstack-nova-api start

    [root@openstack ~]# serviceopenstack-nova-cert start

    [root@openstack ~]# serviceopenstack-nova-consoleauth start

    [root@openstack ~]# serviceopenstack-nova-scheduler start

    [root@openstack ~]# serviceopenstack-nova-conductor start

    [root@openstack ~]# serviceopenstack-nova-novncproxy start

    [root@openstack ~]# serviceopenstack-nova-compute start

    [root@openstack ~]# service openstack-nova-networkstart

    [root@openstack ~]# chkconfigopenstack-nova-api on

    [root@openstack~]# chkconfig openstack-nova-cert on

    [root@openstack~]# chkconfig openstack-nova-consoleauth on

    [root@openstack~]# chkconfig openstack-nova-scheduler on

    [root@openstack~]# chkconfig openstack-nova-conductor on

    [root@openstack~]# chkconfig openstack-nova-novncproxy on

    [root@openstack~]# chkconfig openstack-nova-compute on

    [root@openstack~]# chkconfig openstack-nova-network on

    nova測试:

     

    (1).创建网络:

    [root@openstack~]# nova network-create vmnet --fixed-range-v4=10.1.1.0/24--bridge-interface=br1 --multi-host=T

    [root@openstack ~]#novanetwork-list

     [root@openstack ~]# nova-manage network list

    (2).设置安全组:

    [root@openstack~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

     [root@openstack~]# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

    openstack里的浮动ip知识点

    缺省情况下实例会被赋予固定ip,这时并不能保证实例会立即能够从外面訪问到。一般来说须要配置防火墙来同意公共ip,然后建立一条NAT规则从公共ip到私有ip的映射。
    Ag
    引入了一个叫浮动ip的概念,浮动ip是一些能够从外部訪问的ip列表,通常从isp哪里买来的。
    浮动ip缺省不会自己主动赋给实例,用户须要手动从地址池里抓取然后赋给实例。

    一旦用户抓去后,他就变成这个ip的全部者。能够任意赋给自己拥有的其它实例。

    假设实例死掉了的话,用户也不会失去这个浮动ip。能够随时赋给其它实例。临时不支持为了负载均衡多实例共享一个浮动ip
    而对于固定ip来说。实例启动后获得的ip也是自己主动的,不能指定某一个。所以当一个VM歇菜了。再启动或许固定ip就换了一个。
    系统管理员能够配置多个浮动ip池,这个ip池不能指定租户。每一个用户都能够去抓取。

    多浮动ip池是为了考虑不同的isp服务提供商,免得某一个isp出故障带来麻烦。
    假设执行的是企业云,浮动ip池就是那些ag外的数据中心都能訪问到的ip


    浮动ip机制给云用户提供了非常多灵活性。也给系统管理员降低了安全风险,尽量仅仅让Ag软件去改防火墙会安全些。

    浮动 IP

    要了解浮动 IP是怎样实现的,首先将一个浮动IP关联到此实例的固定IP

    之前所创建的这个实例的固定IP10.10.10.2

    在默认池内创建一个浮动IP

    要在默认池内创建一个浮动 IP,请执行一下代码:

    # nova-manage floating create --ip_range=10.1.1.232/30

    要从这个池分派一个浮动 IP,请执行一下代码:

    # Nova floating-ip-create
     
    创建VM实例
          使用nova image-list查看当前可用的镜像
          使用nova flavor-list查看当前可用的系统类型
    使用nova boot创建VM实例。nova boot --flavor [flavor ID | flavor name]  --image [image ID | image name]  [instace_name],比方
    nova boot --flavor m1.small --image 5290eb9f-f248-408f-a319-622c4a070ca8 test
    创建成功后使用nova list查看实例状态
    [root@bdpe11 ~(keystone_admin)]# nova list
    +--------------------------------------+-----------+--------+-------------------------------------+
    | ID                                   | Name      | Status | Networks                            |
    +--------------------------------------+-----------+--------+-------------------------------------+
    | dbaded92-b445-4106-a124-607150ff17c5 | Server 47 | ACTIVE | private=192.168.20.2, 192.168.148.1 |
    | d9d4bea3-6387-4695-b031-965478623fb6 | Server 48 | ACTIVE | private=192.168.20.4, 192.168.148.2 |
    +--------------------------------------+-----------+--------+-------------------------------------+
     

    这样。就拥有一个 IP 10.1.1.233。如今将它分配给 ID8f773639-c04f-4885-9349-ac7d6a799843的实例:

    # nova add-floating-ip 8f773639-c04f-4885-9349-ac7d6a799843 10.1.1.233

    将浮动IP绑定到公共接口

    FLAGS.public_interface 被用来绑定浮动 IP。在执行了 novaadd-floating-ip 命令后。能够看到 public_interface 下就具有了例如以下的浮动 IP

    # ip addr list dev wlan0
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 08:11:96:75:91:54 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.90/16 brd 192.168.255.255 scope global wlan0
    inet 192.168.1.233/32 scope global wlan0
        inet6 fe80::a11:96ff:fe75:9154/64 scope link 
    valid_lft forever preferred_lft forever

    NAT 表内针对浮动IP的规则

    在此实例获得了 nova-network主机上的一个浮动 IP后。这些规则适用:

    -A nova-network-OUTPUT -d 192.168.1.233/32 -j DNAT --to-destination 10.10.10.2
    -A nova-network-PREROUTING -d 192.168.1.233/32 -j DNAT --to-destination 10.10.10.2 
    -A nova-network-float-snat -s 10.10.10.2/32 -j SNAT --to-source 192.168.1.233

    您会看到该 dNAT规则被用来将此浮动 IP转换成此实例的固定 IP

    假设一个包到达nova-network主机并以浮动IP为目标 IP。则此目标 IP就会被转换。

    然后。就会有还有一项sNAT规则会将来自此实例的固定IP的流量转换到此浮动IP

    因为全部从 VM到固定网络之外的流量均被指向网关(是由nova-network dnsmasq 进行设置),有了 sNAT规则,出 VM的流量就能够成功标志成来自此浮动IP

    此外,已包装的OUTPUT链内另一个dNAT规则,同意nova-network上的本地过程訪问具有浮动IP VM

    使用浮动IP Ping VM

    要将 VM与浮动 IP Ping在一起,也须要一些规则。

    请记住,在此nova-compute主机上,针对每一个实例必须有一个特定链。其内的规则仅仅同意来自固定子集内的IP的流量。假设想要ping一个浮动IP。流量就会被这些规则丢弃,由于ping包的源IP并不在此固定子集内。

    显然,须要一个规则以同意icmp流量。

    为了加入一个同意 ping的规则,能够使用Ag的安全组规则的概念:

    # nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

    之后,就能够看到在此实例的特定链下多创建了一个规则:

    -Anova-compute-inst-1 -p icmp -j ACCEPT

    相同的方式。能够对具有浮动 IP VM启用 SSH

     

     (3).创建虚拟机实例:

    查看可用镜像:

    [root@openstack~]# nova image-list

    创建虚拟机实例:

    [root@openstack~]# nova boot --flavor 1 --image centos6.4 vm01

     

     

     

    查看虚拟机实例执行状态:

    [root@openstack ~]# novalist

    +--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+

    | ID                                 | Name                                     | Status | Task State | Power State | Networks       |

    +--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+

    | f754afe1-784f-41d0-9139-a05d25eaca20| vm01                                      | ACTIVE | -         | Running     | vmnet=10.1.1.2  |

    +--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+

    測试虚拟机实例连通性:
    [root@openstack ~]# ping 10.1.1.2

    PING 10.1.1.2 (10.1.1.2)56(84) bytes of data.

    64 bytes from 10.1.1.2:icmp_seq=1 ttl=64 time=0.057 ms

    64 bytes from 10.1.1.2:icmp_seq=2 ttl=64 time=0.037 ms

    --- 10.1.1.2 pingstatistics ---

    2 packets transmitted, 2received, 0% packet loss, time 1639ms

    rtt min/avg/max/mdev =0.037/0.047/0.057/0.010 ms

  • 相关阅读:
    vagrant 修改配置生效
    Linux下如何获取CPU内存等硬件信息
    linux命令系列 sudo apt-get update和upgrade的区别
    docker-compose up 启动容器服务超时错误:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information
    ERROR: manifest for hyperledger/fabric-orderer:latest not found
    fabric2.0开发 部署fabric环境和fabric-samples的启动(2)
    开源架构Fabric、FISCO BCOS(以下简称“BCOS”)、CITA 技术对比
    Centos 7 安装配置 Mariadb 数据库
    liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)
    ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5206586.html
Copyright © 2020-2023  润新知