openstack user case.

本文记录了在部署OpenStack过程中遇到的问题及解决方案,包括安装后无法连接dashboard的配置,网络设置,如内外网桥接、VLAN配置,解决novnc返回1006错误,浮动IP与SSH访问问题,以及如何创建与本地网络同网段的网络等。
摘要由CSDN通过智能技术生成

最近在部署openstack,遇到一些问题,做下总结


  使用rdo安装好openstak后,连不上openstack dashboard

   1) dashboard 使用httpd服务,所以要正确配置httpd服务的配置文件

   修改 /etc/openstack-dashboard/local_settings

   注意修改

   ALLOWED_HOSTS

   OPENSTACK_HOST

以及 

CACHES = {
    'default': {


#        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',


    }
}


然后重启 httpd 和 memcached  



2 配置openstack 网络

1) 删除了 public network

2) 重新创建了一个 192.168.1.0/24的外网

3) 创建一个内网 10.0.0.0/24(用于给虚拟机分配ip)

4) 然后创建一个router 把 内网和外网连上

5)当vm需要访问外网的时候,直接分配一个ip即可

openstack 有两个比较重要的 bridge

br-ex, 对应外网

br-in,对应内网


    Bridge br-int
        Port "tap0f466986-42"
            tag: 4095
            Interface "tap0f466986-42"
                type: internal
        Port br-int
            Interface br-int
                type: internal
        Port "qvof96ab0b4-50"
            tag: 4095
            Interface "qvof96ab0b4-50"
        Port "snooper0"
            Interface "snooper0"
        Port int-br-ex
            Interface int-br-ex
        Port "tap3670fc27-f3"
            tag: 4095
            Interface "tap3670fc27-f3"
                type: internal
        Port "int-br-eth1"
            Interface "int-br-eth1"
    Bridge br-ex
        Port "p4p2"
            Interface "p4p2"
        Port br-ex
            Interface br-ex
                type: internal
        Port phy-br-ex
            Interface phy-br-ex
    Bridge "br-eth1"
        Port "enp11s0f0"
            Interface "enp11s0f0"
        Port "br-eth1"
            Interface "br-eth1"
                type: internal
        Port "phy-br-eth1"
            Interface "phy-br-eth1"
    ovs_version: "2.0.1"



p4p2 是一个192.168.1.x的ip,在lab里的一个交换机上,网关是192.168.1.1,他作为代理服务器连接外网。

所以给vm分配一个192.168.1.x的ip就可以了。

这里把p4p2加入到br-ex网桥上。

然后把p4p2的ip配置给br-ex

ovs-vsctl add-port br-ex p4p2

ip addr remove $ip dev p4p2

ip addr add $ip dev br-ex

最后要把默认路由改成从br-ex出去

route remove default -dev p4p2

route add default gw 192.168.1.1 -dev p4p2


3 novnc 返回1006错误:

主机有两个ip,一个外网9.x,一个内网192.x

nova.conf 中


novncproxy_base_url=http://9.181.129.110:6080/vnc_auto.html
vncserver_listen=9.181.129.110

#把这个代理地址改成 内网的ip,就可以连上vnc了
vncserver_proxyclient_address=192.168.1.110


4 ping不通vm的floating ip,却能ssh

原来vm设置了安全组,把ssh的22端口开放了,所以能ssh。

没有加icmp规则,所以ping不了

如果要访问http服务,或者要开放tcp端口,要手动加入规则


5创建镜像

之前一直没有搞通网络,所以没法使用fedora 和ubuntu的官方 img,自己做了个img


6 打开dashboard的时候报错

port=8774): Max retries exceeded with url: /v2
看了下httpd的log,  发现有大量端口都处于cloae_wait 的状态的进程,重启httpd可以解决,但需要调查一下root cause。

tcp        1      0 192.168.1.110:41555     192.168.1.110:8774      CLOSE_WAIT  19852/httpd         
tcp        1      0 192.168.1.110:47621     192.168.1.110:8774      CLOSE_WAIT  19852/httpd    

7 vnc的配置

controller :

vnc_enabled = True
vncserver_host = 0.0.0.0
vncserver_listen = < controller ip >
vncproxy_url = http://<controller ip>:6080
vncserver_proxyclient_address = <controller ip>
novncproxy_base_url=http://<controller ip>:6080/vnc_auto.html

compute node:

vnc_enabled = True
vncserver_listen = <compute ip>
vncserver_proxyclient_address = <compute ip>
vncproxy_url = http://<controller ip>:6080
novncproxy_base_url=http://<controller ip>:6080/vnc_auto.html

I also have faced the same problem. The above cofiguration solved my issue.


8 设置vlan

openstack bridge:

3346933c-68f1-4312-98c9-c0883ffdd03a
    Bridge br-int
        Port "tap0f466986-42"
            tag: 4095
            Interface "tap0f466986-42"
                type: internal
        Port br-int
            Interface br-int
                type: internal
        Port "qvof96ab0b4-50"
            tag: 4095
            Interface "qvof96ab0b4-50"
        Port "snooper0"
            Interface "snooper0"
        Port int-br-ex
            Interface int-br-ex
        Port "tap3670fc27-f3"
            tag: 4095
            Interface "tap3670fc27-f3"
                type: internal
        Port "int-br-eth1"
            Interface "int-br-eth1"
    Bridge br-ex
        Port "p4p2"
            Interface "p4p2"
        Port br-ex
            Interface br-ex
                type: internal
        Port phy-br-ex
            Interface phy-br-ex
    Bridge "br-eth1"
        Port "enp11s0f0"
            Interface "enp11s0f0"
        Port "br-eth1"
            Interface "br-eth1"
                type: internal
        Port "phy-br-eth1"
            Interface "phy-br-eth1"
    ovs_version: "2.0.1"

修改配置文件

网络节点的 openvswitch 配置

[root@stack-kvm110 ~(keystone_admin)]# grep phy /etc/neutron/plugin.ini 
network_vlan_ranges = physnet2:100:110
bridge_mappings = physnet1:br-eth1,physnet2:br-ex

计算节点,去掉br-ex即可

创建public 网络


$ tenant=$(keystone tenant-list | awk '/service/ {print $2}')
$ neutron router-create router01
$ neutron net-create --tenant-id $tenant public01 \
--provider:network_type flat \
--provider:physical_network physnet1 \
--router:external=True
$ neutron subnet-create --tenant-id $tenant --name public01_subnet01 \
--gateway 10.64.201.254 public01 10.64.201.0/24 --disable-dhcp
$ neutron router-gateway-set router01 public01

根据  http://docs.openstack.org/admin-guide-cloud/content/under_the_hood_openvswitch.html#under_the_hood_openvswitch_scenario1_network

文档的host 配置,一直报错

Unknown provider:physical_network physnet1

于是修改配置文件 /etc/neutron/plug.ini:

network_vlan_ranges = physnet2:100:110,physnet1

就ok了,难道是官方的那个文档有问题么?有待验证。


接着创建内网和内网的子网

$ tenant=$(keystone tenant-list|awk '/demo/ {print $2}'
$ neutron net-create --tenant-id $tenant net01 \
--provider:network_type vlan \
--provider:physical_network physnet2 \
--provider:segmentation_id 101
$ neutron subnet-create --tenant-id $tenant --name net01_subnet01 net01 192.
168.101.0/24
$ neutron router-interface-add router01 net01_subnet01


neutron net-create --tenant-id $tenant net02 \
--provider:network_type vlan \
--provider:physical_network physnet2 \
--provider:segmentation_id 102

$ neutron subnet-create --tenant-id $tenant --name net02_subnet01 net02 192.
168.102.0/24
$ neutron router-interface-add router01 net02_subnet01



9 Debug networking floating ip

给其中的某一个虚拟机实例绑定一个floating ip,发现无法ping通

看了这篇文章,觉得很实用[1]

在vm中添加了一条可以到floating ip所在网络的路由就可以了。


(ip route add 192.168.1.0/24 via 192.168.101.1)

192.168.101.1 是虚拟机的网关

[1]http://openstack.redhat.com/Networking


# List namespaces
$ ip netns
qdhcp-4a04382f-03bf-49a9-9d4a-35ab9ffc22ad
qrouter-1fabd5f0-f80b-468d-b733-1b80d0c3e80f

# Show all interfaces inside the namespace
$ ip netns exec qrouter-1fabd5f0-f80b-468d-b733-1b80d0c3e80f \
  ip a

# Check routing table inside the router namespace     
$ ip netns exec qrouter-1fabd5f0-f80b-468d-b733-1b80d0c3e80f \
  ip r

# IP config inside the router namesapce 
$ ip netns exec qrouter-1fabd5f0-f80b-468d-b733-1b80d0c3e80f \
  ifconfig

# IP configu inside the dhcp namesace
$ ip netns exec qrouter-1fabd5f0-f80b-468d-b733-1b80d0c3e80f \
  ifconfig

# Ping the private IP (of the cirros guest)
$ ip netns exec qrouter-1fabd5f0-f80b-468d-b733-1b80d0c3e80f \
  ping -c2 30.0.0.7
$ ip netns exec qrouter-1fabd5f0-f80b-468d-b733-1b80d0c3e80f \
  ping -c2 192.168.122.14

# ssh into cirros guest
$ ip netns exec qdhcp-4a04382f-03bf-49a9-9d4a-35ab9ffc22ad ssh   cirros@30.0.0.7


10 说到floating ip 就要提iptable 转发

snat: 源地址僞裝, 虛擬機如果想訪問外網,需要作snat

dnat: 目的地址伪装,作为floating ip 使用,也就是说外部要访问虚拟机


11 访问openstack虚拟机

openstack 是用image创建虚拟机,用户不知道这个image的密码

但是openstack 在创建虚拟机之前,使用libguestfs这个工具注入了ssh-key pair,这样就可以无密码访问了。

查看 /va/log/nova/compute.log 来确认libguestfs 有没有成功把key pair注入进去。

使用 yum install libguestfs 安装 

两种方式用来生成sshkey,

一种是opesntack 生成,会自动下载一个 .pem 文件

ssh -l root -i pem floating_ip

第二种是导入主机的公钥

这样可以直接ssh -l root floating_ip



12 创建与本地网络在同一网段的网络(不是外网,也不是floating ip)


创建网络时,指定 physical_network,并且添加一个跟 physical_network 在同一网段的子网。
如下段命令

neutron net-create public02 --provider:network_type flat --provider:physical_network physnet2
</pre><div>创建一个网络,provider指定为physnet2,pyhsent2 在plugin.ini 中要事先定义好 mapping bridge_mappings = physnet1:br-ex,physnet2:br-eth1</div><pre code_snippet_id="342909" snippet_file_name="blog_20140520_7_8768276" name="code" class="plain">
neutron subnet-create --name public02_subnet01 --no-gateway --host-route destination=9.0.0.0/8,nexthop=9.110.190.1 --allocation-pool start=9.110.190.168,end=9.110.190.169 public02 9.0.0.0/8
在 public02 上创建一个子网,指定host-route 和ip pool



13 gre 配置,然后重启 openvswitch agent

[ovs]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
enable_tunneling = True
integration_bridge = br-int
tunnel_bridge = br-tun
local_ip = DATA_INTERFACE_IP

br-tun 不用手动创建,agent会帮你创建好,只要在配置文件里指定就好了。

参考连接:

[1] http://developer.rackspace.com/blog/neutron-networking-vlan-provider-networks.html  【12】关于网络的创建


### 回答1: openstack_rocky.tar.gz是OpenStack Rocky版本的压缩文件。OpenStack是一个开源的云计算平台,它提供了一整套软件工具和组件,用于构建和管理私有云和公有云环境。 这个压缩文件包含了Rocky版本的OpenStack平台所需的各种软件、模块和配置文件。使用这个文件可以快速搭建一个基于Rocky版本的OpenStack云环境。 在这个压缩文件中,可能包含了以下几个主要的组件和模块: 1. Nova:OpenStack计算服务,负责管理云中的虚拟机实例和计算资源。 2. Neutron:OpenStack网络服务,用于管理云中的网络和网络连接。 3. Cinder:OpenStack块存储服务,提供虚拟机实例所需的块存储。 4. Glance:OpenStack镜像服务,用于管理虚拟机镜像。 5. Keystone:OpenStack身份认证服务,用于用户身份验证和访问控制。 6. Horizon:OpenStack的Web用户界面,提供了对OpenStack云的视觉管理。 除此之外,还可能包含其他组件和模块,如Swift(对象存储服务)、Heat(编排服务)、Ceilometer(计量服务)等等。这些组件和模块共同构成了OpenStack平台的基础架构。 要使用openstack_rocky.tar.gz文件,需要先将其解压缩,然后按照相应的安装指南进行安装和配置。安装完成后,可以使用OpenStack提供的命令行工具或Web界面来管理和操作OpenStack云平台。 总而言之,openstack_rocky.tar.gz是OpenStack Rocky版本的压缩文件,其中包含了构建和管理OpenStack云环境所需的各种软件、模块和配置文件。通过解压并安装这个文件,可以搭建一个基于Rocky版本的OpenStack云平台。 ### 回答2: openstack_rocky.tar.gz 是一个文件的扩展名,它是一个基于开源技术的云计算平台 OpenStack 的一个版本的压缩包文件。Rocky 是OpenStack 在2018年推出的第18个版本,这个版本主要集中在改进和增强功能、提高性能和稳定性方面。 通过解压 openstack_rocky.tar.gz 文件,我们可以获取到 Rocky 版本的 OpenStack 的相关代码、配置文件和文档等内容。这个文件是一个压缩文件,通常使用压缩工具(比如 tar、gzip)来解压。解压后,我们可以获得一个包含多个文件和文件夹的目录结构。 在这个压缩包文件中,可能包含以下一些常见的文件和文件夹: - 代码文件:包含了 OpenStack Rocky 版本的核心代码。这些代码文件用于构建和运行 OpenStack 平台,实现不同的云计算服务(如计算、网络、存储等)。 - 配置文件:包含了 OpenStack 各个组件的配置文件,用于配置各个服务的参数和行为。这些配置文件可以根据具体需求进行修改和自定义。 - 文档:包含了关于 OpenStack Rocky 版本的使用指南、API 文档、安装说明等文档资源。这些文档可以帮助用户更好地了解和使用 OpenStack 平台。 通过使用这个压缩包文件,系统管理员或开发人员可以轻松获取到 OpenStack Rocky 版本的相关资源,以便部署、配置和使用 OpenStack 平台。这个版本的 OpenStack 在Rocky版本基础上进行了许多改进和优化,提供更好的性能和稳定性,同时也增加了一些新功能,使得云计算服务更加强大和易于管理。 ### 回答3: openstack_rocky.tar.gz 是 OpenStack 的一个版本,具体是指 Rocky 版本的 OpenStack 资源文件打包成的压缩文件。OpenStack 是一款开源的云计算平台,它提供了一系列的服务和工具,用于构建和管理云基础设施。 将 OpenStack Rocky 版本打包成 tar.gz 压缩文件的目的是方便用户下载和使用。用户可以通过解压这个压缩文件,获取到 Rocky 版本的 OpenStack 安装文件和相关资源。通常这些资源包括各个组件的安装包、配置文件、文档和示例代码等。 Rocky 是 OpenStack 的第十八个版本,它于2018年8月发布。与之前的版本相比,Rocky 版本有一些新的特性和改变,以提供更好的性能和用户体验。例如,Rocky 版本引入了名为 Fast Forward Upgrades (FFU) 的功能,使得用户可以更加简单和快速地进行升级。此外,Rocky 也增强了对 GPU 加速和容器技术的支持,提供了更多的虚拟化选项和网络功能。 总之,openstack_rocky.tar.gz 是 OpenStack Rocky 版本的文件压缩包,用户可以使用它来获取 Rocky 版本的 OpenStack 资源和进行相应的部署和配置工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值